За последние 24 часа нас посетили 18707 программистов и 1606 роботов. Сейчас ищут 897 программистов ...

!!!Нужна помощь (БД)!!!

Тема в разделе "PHP и базы данных", создана пользователем rodion4657, 12 фев 2012.

  1. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Есть php- скрипт для работы с базой данных (просмотр, удаление, добавление, редактирование записей)...
    Суть проблемы:
    после написания кода по добавлению записей, они довавлялись, но почему-то в произвольном порядке(хотя в поле id auto inc стоит), но это пол беды,
    после того как написал код по редактированию записей, ничего кроме функции просмотра не работает(не создаются формы для редактирования, добавления) ниже код подскажите где ошибки...
    .............................................................................................................................
    Код (Text):
    1. <?php
    2.  $link = mysql_connect("localhost", "rau2")
    3.        or die("Could not connect");
    4.  mysql_select_db("baza2",$link) or die("Could not select database");
    5.  
    6.  
    7. if ( !isset( $_POST["action"] ) ) $_POST["action"] = "showlist";  
    8.    
    9.    switch ( $_POST["action"] )
    10. {
    11.    case "showlist":    // Список всех записей в таблице БД
    12.      show_list(); break;
    13.    case "addform":     // Форма для добавления новой записи
    14.      get_add_item_form(); break;
    15.    case "add":         // Добавить новую запись в таблицу БД
    16.      add_item(); break;
    17.    case "editform":    // Форма для редактирования записи
    18.      get_edit_item_form(); break;
    19.    case "update":      // Обновить запись в таблице БД
    20.      update_item(); break;
    21.    case "delete":      // Удалить запись в таблице БД
    22.      delete_item(); break;
    23.    default:
    24.      show_list();
    25. }
    26.  
    27.  
    28. // Функция выводит список всех записей в таблице БД
    29. function show_list()
    30. {
    31.    $query = 'SELECT * FROM t ';
    32.    $res = mysql_query( $query );
    33.    echo '<h2>База</h2>';
    34.    echo '<table border="1" cellpadding="2" cellspacing="0">';
    35.    echo '<tr><th>ID</th><th>Имя</th><th>Возраст</th><th>Вес</th><th>Ред.</th><th>Удл.</th></tr>';
    36.    while ( $item = mysql_fetch_array( $res ) )
    37.    {
    38.      echo '<tr>';
    39.      echo '<td>'.$item['id'].'</td>';
    40.      echo '<td>'.$item['name'].'</td>';
    41.      echo '<td>'.$item['old'].'</td>';
    42.      echo '<td>'.$item['ves'].'</td>';
    43.      echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'">Ред.</a></td>';
    44.      echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'">Удл.</a></td>';
    45.      echo '</tr>';
    46.    }
    47.    echo '</table>';
    48.    echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=addform">Добавить</a></p>';  
    49. }
    50.  
    51. // Функция формирует форму для добавления записи в таблице БД
    52. function get_add_item_form()
    53. {
    54.    echo '<h2>Добавить</h2>';  
    55.    echo '<form name="addform" action="'.$_SERVER['PHP_SELF'].'?action=add" method="POST">';
    56.    echo '<table>';
    57.    echo '<tr>';
    58.    echo '<td>Имя</td>';
    59.    echo '<td><input type="text" name="name" value="" /></td>';
    60.    echo '</tr>';
    61.    echo '<tr>';
    62.    echo '<td>Возраст</td>';
    63.    echo '<td><input type="text" name="old" value="" /></td>';
    64.    echo '</tr>';
    65.    echo '<tr>';
    66.    echo '<td>Вес</td>';
    67.    echo '<td><input type="text" name="ves" value=""/></td>';
    68.    echo '</tr>';
    69.    echo '<tr>';
    70.    echo '<td><input type="submit" value="Сохранить"></td>';
    71.    echo '<td><button type="button" onClick="history.back();">Отменить</button></td>';
    72.    echo '</tr>';
    73.    echo '</table>';
    74.    echo '</form>';
    75. }
    76.  
    77. // Функция добавляет новую запись в таблицу БД  
    78. function add_item()
    79. {
    80.    $name = mysql_escape_string( $_POST['name'] );
    81.    $old = mysql_escape_string( $_POST['old'] );
    82.    $ves = mysql_escape_string( $_POST['ves'] );
    83.    $query = "INSERT INTO t (name, old, ves) VALUES ('".$name."', '".$old."','".$ves."')";
    84.    mysql_query ( $query );
    85.    header( 'Location: '.$_SERVER['PHP_SELF'] );
    86.    die();
    87. }
    88.  
    89. // Функция формирует форму для редактирования записи в таблице БД
    90. function get_edit_item_form()
    91. {
    92.    echo '<h2>Редактировать</h2>';
    93.    $query = 'SELECT name,old, ves FROM t WHERE id='.$_POST['id'];
    94.    $res = mysql_query( $query );
    95.    $item = mysql_fetch_array( $res );
    96.    echo '<form name="editform" action="'.$_SERVER['PHP_SELF'].'?action=update&id='.$_POST['id'].'" method="POST">';
    97.    echo '<table>';
    98.    echo '<tr>';
    99.    echo '<td>Имя</td>';
    100.    echo '<td><input type="text" name="name" value="'.$item['name'].'"></td>';
    101.    echo '</tr>';
    102.    echo '<tr>';
    103.    echo '<td>Возраст</td>';
    104.    echo '<td><input type="text" name="old" value="'.$item['old'].'"></td>';
    105.    echo '</tr>';  
    106.    echo '<tr>';
    107.    echo '<td>Вес</td>';
    108.    echo '<td><input type="text" name="ves" value="'.$item['ves'].'"></td>';
    109.    echo '</tr>';
    110.    echo '<tr>';
    111.    echo '<td><input type="submit" value="Сохранить"></td>';
    112.    echo '<td><button type="button" onClick="history.back();">Отменить</button></td>';
    113.    echo '</tr>';
    114.    echo '</table>';
    115.    echo '</form>';
    116. }
    117.  
    118. // Функция обновляет запись в таблице БД  
    119. function update_item()
    120. {
    121.    $name = mysql_escape_string( $_POST['name'] );
    122.    $old = mysql_escape_string( $_POST['old'] );
    123.    $ves = mysql_escape_string( $_POST['ves'] );
    124.    $query = "UPDATE t SET name='".$name."', old='".$old."',ves='".$ves."'
    125.              WHERE id=".$_POST['id'];
    126.    mysql_query ( $query );
    127.    header( 'Location: '.$_SERVER['PHP_SELF'] );
    128.    die();
    129. }
    130.  
    131. // Функция удаляет запись в таблице БД
    132. function delete_item()
    133. {
    134.    $query = "DELETE FROM t WHERE id=".$_POST['id'];
    135.    mysql_query ( $query );
    136.    header( 'Location: '.$_SERVER['PHP_SELF'] );
    137.    die();
    138. }
    139.    
    140. ?>
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Код (PHP):
    1. if ( !isset( $_POST["action"] ) ) $_POST["action"] = "showlist";   
    Код (PHP):
    1. echo '<td>[url="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'"]Ред.[/url]</td>';
    2.      echo '<td>[url="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'"]Удл.[/url]</td>';  
    вы ожидаете аргумент "действия" в POST-переменных, а передаете в GET-запросе
     
  3. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    не понял , где здесь GET запрос....
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это GET-запрос к странице которая хранится в $_SERVER['PHP_SELF'] с параметрами:
    action в значении delete
    и
    id в значении которое хранится в $item['id'] текущего исполнения
    POST запрос в обычных условиях делается только из формы с соответствующим атрибутом метода
     
  5. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Чтобы решить проблему,Нужно везде POST поменять на GET?
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    если важен только результат - да
    если важно правильное приложение написать - нет

    форма добавления и редактирования записи желательно через POST отправлять - иначе ведь в строке адресной видно все будет
    а переменные а-ля режим движка - в GET - тогда можно будет ссылку кидать и ожидать что она одинаково будет работать у всех
    смешивать GET и POST в одном запросе никто не мешает))

    дальше сами?)))
     
  7. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Если не тяжело скажи где именно в коде должно быть GET , а где POST....очень уж тяжело мне это дается((((
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    совсем не сложно:
    приложите усилие к пониманию. пробуйте. когда будете в реальном тупике - обращайтесь. решение лежит на поверхности))) если не будет получаться - конечно поможем. согласитесь, помогать человеку который пытался понять, пытался решить и в шаге от ответа но каша в голове не позволяет его увидеть НЕ ТО ЖЕ САМОЕ что взять и написать за человека сразу. у вас будет код, но вы в нем ничего не поймете. оно вам надо?
     
  9. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    хорошо попробую сам ))))