Решаю задачу, уже всю голову сломал, тк в функцию не передается значение из формы.
вот условие:
Имеется файл с содержимым (книга|автор|издательство|состояние) например:
PHP 5 объектно-ориентированное программирование|Шишов Алексей|БХВ|1
MySQL: неподъемная книга разработчика|Шишов Алексей|БХВ|0
Справочник всего Г в России|Пупкин Вася|Пупкин и к0|1
Написать функцию, считывающую из файла построчно данные и разбивающую их на многомерный массив вида:
array(
array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
);
Также функция должна обрабатывать массив книг и возвращать книги с запрошенным (с помощью формы) состоянием в удобочитаемом виде (таблицей).
Вот мой код, и он работает, если аргумент для myfunc() подставлять в коде (то есть например myfunc(0) выводит таблицу с книгами у которых состояние 0, myfunc(1) выводит соответственно книги с 1). Но не работает когда я пытаюсь передать его из формы с помощью $_POST. Ошибка: Warning: Invalid argument supplied for foreach()
PHP:
скопировать код в буфер обмена
function myfunc($st){ $handle = fopen('file.txt', 'r'); if ($handle) { while (($buffer = fgets($handle, 4096 )) !== false) { $pieces['title']=$pieces[0];unset($pieces[0]); $pieces['author']=$pieces[1];unset($pieces[1]); $pieces['print']=$pieces[2];unset($pieces[2]); $pieces['status']=$pieces[3];unset($pieces[3]); if($pieces['status']==$st){ $global[] = $pieces; } } } echo'<table> <tr> <th>Название</th> <th>Автор</th> <th>Издательство</th> <th>Состояние</th> </tr>'; foreach($global as $pieces){ echo'<tr> <td>'.$pieces['title'].'</td> <td>'.$pieces['author'].'</td> <td>'.$pieces['print'].'</td> <td>'.$pieces['status'].'</td> </tr>'; } echo'</table>'; /*echo'<pre>'; print_r($global); echo'</pre>';*/ } echo"<p>Выберите значение</p> <form method='post' action='raschet.php'> <select name='status'> <option value='0'>0</option> <option value='1'>1</option> </select> <input type='submit' value='Отправить запрос'> </form> "; if(isset($_POST['status'])){ $post=$_POST['status']; myfunc($post); }
Где ошибка кроется?(Отредактировано автором: 29 Октября, 2014 - 21:17:20)
|