За последние 24 часа нас посетили 17497 программистов и 1724 робота. Сейчас ищут 856 программистов ...

Как вывести выбраное из выпадающего списка (созд. из MYSQL)

Тема в разделе "PHP и базы данных", создана пользователем Panter7777, 23 окт 2010.

  1. Panter7777

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

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Доброго времени суток!
    И опять столкнулся( Во общем смысл создания такой!!!! Из БД из таб. "категории" берутся значения id и name ->выводятся в выпадающий список.
    После чего я должен был выбрать из списка категорию заполнить пару input'ov нажать "Сохранить" и все едет в БД.
    Но проблема в том, что, что бы я не выбрал из выпадающего списка выбирается последний элемент.

    Код (Text):
    1. <form action='' method='POST' name='form'>
    2. <?php
    3. $catquery = mysql_query ("SELECT (id)AS id_cat, (name)AS name_cat FROM categories");
    4.  
    5. print "<p><select name='hero'>";
    6. print "<option value=''>Выберите категорию</option>";
    7. while ($row = mysql_fetch_array($catquery)) {
    8. $id_cat = $row["id_cat"];
    9. $name_cat = $row["name_cat"];
    10.  
    11. print "<option value='$id_cat'>$name_cat</option>"; // тут я так понимаю нужно вставить selected в виде переменной с какойто проверкой?!?!
    12.  
    13. }?>
    14. </select></p>
    15.  
    16. <p>Название</p>
    17. <input type='text' name='name' id='name'><br><br>
    18. <input type='file' name='photo' id='photo' ><br>
    19. <p>Цена</p>
    20. <input type='text' name='price' id='price'><br>
    21. <p>Описание</p>
    22. <textarea name='description' cols='40' rows='3' id='description' ></textarea><br>
    23. <input type='submit' name='submit' value='Сохранить' >
    24. </form>
    25.  
    26. <?php
    27. if ($name != '' && $price != '' && $description != '' && $id_cat !== '' )
    28. {
    29. $query = mysql_query("INSERT INTO products (name, description, price, photo, cat) VALUES ('$name', '$description', '$price', '/menu/$photo', '$id_cat')");
    30. }
    31. if ( $query == true )
    32.   {
    33.   echo "<p>Запись добавлена</p>";
    34.    }
    35.   else
    36.   {
    37.   echo "<p>Не заполнены поля</p>";
    38.   }
    А и еще можно как-то запретить форме при обновлении страницы повторно вносить одни и те же данные?
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    где выделенная переменная в самом запросе?
     
  3. Panter7777

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

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Ну вообще я думал, что когда я выберу её мышкой, то именно выбранная мной переменная станет $id_cat!!! Разве не так форма работает?
     
  4. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    при отправке отсылается hero, а не id_cat.
     
  5. Panter7777

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

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Спасибо за подсказку!!!

    Заработало после цикла <?php $hero = $_POST['hero']; ?> объявляем переменную и вставляем её в

    $query = mysql_query("INSERT INTO products (name, description, price, photo, cat) VALUES ('$name', '$description', '$price', '/menu/$photo', '$hero')");

    И последние не решенное как можно как-то запретить форме при обновлении страницы повторно вносить одни и те же данные?
     
  6. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    после запроса вставки
    header('location: '.$_SERVER['PHP_SELF']);
    exit();
     
  7. Panter7777

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

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Спасибо еще раз! Все получилось с помощью
    Код (Text):
    1. header('location: '.$_SERVER['PHP_SELF']);
    2. exit();
    только в самом начале документа пришлось вставить
    Код (Text):
    1. <?php
    2. session_start();
    3. ob_start();?>
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ....
    и в самом конце .
    Код (Text):
    1. ....ob_end_flush();?>