Есть php- скрипт для работы с базой данных (просмотр, удаление, добавление, редактирование записей)... Суть проблемы: после написания кода по добавлению записей, они довавлялись, но почему-то в произвольном порядке(хотя в поле id auto inc стоит), но это пол беды, после того как написал код по редактированию записей, ничего кроме функции просмотра не работает(не создаются формы для редактирования, добавления) ниже код подскажите где ошибки... ............................................................................................................................. Код (Text): <?php $link = mysql_connect("localhost", "rau2") or die("Could not connect"); mysql_select_db("baza2",$link) or die("Could not select database"); if ( !isset( $_POST["action"] ) ) $_POST["action"] = "showlist"; switch ( $_POST["action"] ) { case "showlist": // Список всех записей в таблице БД show_list(); break; case "addform": // Форма для добавления новой записи get_add_item_form(); break; case "add": // Добавить новую запись в таблицу БД add_item(); break; case "editform": // Форма для редактирования записи get_edit_item_form(); break; case "update": // Обновить запись в таблице БД update_item(); break; case "delete": // Удалить запись в таблице БД delete_item(); break; default: show_list(); } // Функция выводит список всех записей в таблице БД function show_list() { $query = 'SELECT * FROM t '; $res = mysql_query( $query ); echo '<h2>База</h2>'; echo '<table border="1" cellpadding="2" cellspacing="0">'; echo '<tr><th>ID</th><th>Имя</th><th>Возраст</th><th>Вес</th><th>Ред.</th><th>Удл.</th></tr>'; while ( $item = mysql_fetch_array( $res ) ) { echo '<tr>'; echo '<td>'.$item['id'].'</td>'; echo '<td>'.$item['name'].'</td>'; echo '<td>'.$item['old'].'</td>'; echo '<td>'.$item['ves'].'</td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'">Ред.</a></td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'">Удл.</a></td>'; echo '</tr>'; } echo '</table>'; echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=addform">Добавить</a></p>'; } // Функция формирует форму для добавления записи в таблице БД function get_add_item_form() { echo '<h2>Добавить</h2>'; echo '<form name="addform" action="'.$_SERVER['PHP_SELF'].'?action=add" method="POST">'; echo '<table>'; echo '<tr>'; echo '<td>Имя</td>'; echo '<td><input type="text" name="name" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Возраст</td>'; echo '<td><input type="text" name="old" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Вес</td>'; echo '<td><input type="text" name="ves" value=""/></td>'; echo '</tr>'; echo '<tr>'; echo '<td><input type="submit" value="Сохранить"></td>'; echo '<td><button type="button" onClick="history.back();">Отменить</button></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; } // Функция добавляет новую запись в таблицу БД function add_item() { $name = mysql_escape_string( $_POST['name'] ); $old = mysql_escape_string( $_POST['old'] ); $ves = mysql_escape_string( $_POST['ves'] ); $query = "INSERT INTO t (name, old, ves) VALUES ('".$name."', '".$old."','".$ves."')"; mysql_query ( $query ); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); } // Функция формирует форму для редактирования записи в таблице БД function get_edit_item_form() { echo '<h2>Редактировать</h2>'; $query = 'SELECT name,old, ves FROM t WHERE id='.$_POST['id']; $res = mysql_query( $query ); $item = mysql_fetch_array( $res ); echo '<form name="editform" action="'.$_SERVER['PHP_SELF'].'?action=update&id='.$_POST['id'].'" method="POST">'; echo '<table>'; echo '<tr>'; echo '<td>Имя</td>'; echo '<td><input type="text" name="name" value="'.$item['name'].'"></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Возраст</td>'; echo '<td><input type="text" name="old" value="'.$item['old'].'"></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Вес</td>'; echo '<td><input type="text" name="ves" value="'.$item['ves'].'"></td>'; echo '</tr>'; echo '<tr>'; echo '<td><input type="submit" value="Сохранить"></td>'; echo '<td><button type="button" onClick="history.back();">Отменить</button></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; } // Функция обновляет запись в таблице БД function update_item() { $name = mysql_escape_string( $_POST['name'] ); $old = mysql_escape_string( $_POST['old'] ); $ves = mysql_escape_string( $_POST['ves'] ); $query = "UPDATE t SET name='".$name."', old='".$old."',ves='".$ves."' WHERE id=".$_POST['id']; mysql_query ( $query ); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); } // Функция удаляет запись в таблице БД function delete_item() { $query = "DELETE FROM t WHERE id=".$_POST['id']; mysql_query ( $query ); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); } ?>
Код (PHP): if ( !isset( $_POST["action"] ) ) $_POST["action"] = "showlist"; Код (PHP): echo '<td>[url="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'"]Ред.[/url]</td>'; echo '<td>[url="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'"]Удл.[/url]</td>'; вы ожидаете аргумент "действия" в POST-переменных, а передаете в GET-запросе
это GET-запрос к странице которая хранится в $_SERVER['PHP_SELF'] с параметрами: action в значении delete и id в значении которое хранится в $item['id'] текущего исполнения POST запрос в обычных условиях делается только из формы с соответствующим атрибутом метода
если важен только результат - да если важно правильное приложение написать - нет форма добавления и редактирования записи желательно через POST отправлять - иначе ведь в строке адресной видно все будет а переменные а-ля режим движка - в GET - тогда можно будет ссылку кидать и ожидать что она одинаково будет работать у всех смешивать GET и POST в одном запросе никто не мешает)) дальше сами?)))
Если не тяжело скажи где именно в коде должно быть GET , а где POST....очень уж тяжело мне это дается((((
совсем не сложно: приложите усилие к пониманию. пробуйте. когда будете в реальном тупике - обращайтесь. решение лежит на поверхности))) если не будет получаться - конечно поможем. согласитесь, помогать человеку который пытался понять, пытался решить и в шаге от ответа но каша в голове не позволяет его увидеть НЕ ТО ЖЕ САМОЕ что взять и написать за человека сразу. у вас будет код, но вы в нем ничего не поймете. оно вам надо?