За последние 24 часа нас посетили 17478 программистов и 1676 роботов. Сейчас ищет 951 программист ...

Выборка из БД через выпадающий список

Тема в разделе "PHP для новичков", создана пользователем Stunnets, 28 фев 2016.

  1. Stunnets

    Stunnets Новичок

    С нами с:
    28 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    Здравствуйте есть код
    Код (PHP):
    1. <?php
    2. echo '<form method="post">';
    3. echo '<select name="table" size="1" >';
    4. echo '<option selected="selected" value="second">Выберите ресурсы </option>';
    5. echo '<option value="zerno"> Зерно </option>';
    6. echo '<option value="kykyr"> Кукуруза </option>'; 
    7. echo '<option value="lucern"> Люцерна </option>'; 
    8. echo '<option value="korov"> Корова </option>'; 
    9. echo '<option value="svin"> Свинья </option>'; 
    10. echo '<option value="riba"> Рыба </option>'; 
    11. echo '<option value="kombik"> Комбикорм </option>'; 
    12. echo '<option value="xleb"> Хлеб </option>'; 
    13. echo '<option value="myaso"> Мясо </option>';
    14. echo '<option value="moloko"> Молоко </option>';
    15. echo '<option value="navoz"> Навоз </option>';
    16. echo '</select>';
    17. echo '<input type="submit" value="Выбрать" />';
    18. echo '</form>';
    19.  
    20. if ($_POST['table']=='zerno') $table=$_POST['table'];
    21. if ($_POST['table']=='kykyr') $table=$_POST['table'];
    22. if ($_POST['table']=='lucern') $table=$_POST['table'];
    23. if ($_POST['table']=='korov') $table=$_POST['table'];
    24. if ($_POST['table']=='svin') $table=$_POST['table'];
    25. if ($_POST['table']=='riba') $table=$_POST['table'];
    26. if ($_POST['table']=='kombik') $table=$_POST['table'];
    27. if ($_POST['table']=='xleb') $table=$_POST['table'];
    28. if ($_POST['table']=='myaso') $table=$_POST['table'];
    29. if ($_POST['table']=='moloko') $table=$_POST['table'];
    30. if ($_POST['table']=='navoz') $table=$_POST['table'];
    31.  
    32. $stable=$_POST['table']; 
    33. if(isset($stable)) { 
    34.     $qr_result1 = mysql_query("select * from tb_dom" . $table . " WHERE user_dom='$user'") or die(mysql_error()); 
    35. } 
    36. echo '<form method="post" enctype="multipart/form-data" accept-charset="uft-8">';
    37.  
    38. while($data = mysql_fetch_array($qr_result1)){   
    39.     echo '<tr>'; 
    40.     echo '<td><select id="uname" name="uname"> <option value="'. $data['name'] .'">'. $data['name'] .'</option> </select></td>';
    41.  } 
    42. ?>
    Но теперь при выводе выдает Table 'mrakr226_wond.tb_domzerno' doesn't exist хотя все таблицы и поля есть Где моя ошибка подскажите плз

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    учи английский ,чтобы понимать юмор.

    есть же гугл транслейт например.

    Код (Text):
    1. Table 'mrakr226_wond.tb_domzerno' doesn't exist
    написано: Таблица 'mrakr226_wond.tb_domzerno' не существует

    еще используй htmlspecialchars или strip_tags при получении данных из $_POST
     
  4. Stunnets

    Stunnets Новичок

    С нами с:
    28 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    Это я понимаю как сделать чтоб выборка была из база называется mrakr226_wond таблица tb_dom ячейка из которой нужно выбрать из списка Зерно zerno. почему так получается не пойму
     
  5. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    zerno в названии таблицы лишнее если я тебя правильно понял, так как запрос вернёт все колонки, ты указал * значит если в таблице tb_dom будет колонка zerno, то ты её получишь.

    Добавлено спустя 2 минуты 34 секунды:
    mysql старая и удалена из PHP7, используй mysqli или PDO http://phpfaq.ru/pdo и подготовленные запросы, чтобы избежать проблем с безопасностью
     
  6. Stunnets

    Stunnets Новичок

    С нами с:
    28 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    изменил строку
    Код (PHP):
    1. $qr_result1 = mysql_query("select * from tb_dom WHERE user_dom='$user'") or die(mysql_error());  
    вместо результата из ячейки появился маленький выпадающий список пустой. что то я вообще в дебри залез. Помогите пожалуйста

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Посмотри какой текст запроса формируешь и проверь его например в PHPMyAdmin чтобы быть уверенным, что он возвращает не пустой результат
     
  8. Stunnets

    Stunnets Новичок

    С нами с:
    28 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    можете сказать как проверь его например в PHPMyAdmin , что то не получается
     
  9. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Зачем такую чушь советовать? Особенно про htmlspecialchars... Единственное, что необходимо делать с данными перед отправкой в БД - это ескейпить, и то, только если не используются подготовленные запросы (что предпочтительнее)

    Stunnets, вместо mysql_query ставите die, в результате скрипт вылетит на этой строке, выведя в браузер запрос. Запрос копируете, запускаете в PHPMyAdmin, смотрите, что выдаётся. Если mysql матерится, убираем причину мата. Если запрос просто выдаёт не то, что нужно, но без мата, смотрим на таблицу, находим причину, корректируем запрос в PHPMyAdmin, так, чтоб работало. Меняем в программе, добиваемся, чтоб выводился такой же, после чего возвращаем mysql_query, и всё работает
     
  10. Stunnets

    Stunnets Новичок

    С нами с:
    28 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    спасибо mkramer сейчас все попробую
     
  11. Stunnets

    Stunnets Новичок

    С нами с:
    28 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    сделал как сказал mkramer
    в PHPMyAdmin теперь не ругается и выводит данные выбранного поля код теперь такой

    Код (PHP):
    1. $stable=$_POST['table']; 
    2. if(isset($stable)) 
    3. { 
    4. $qr_result1 = mysql_query("select `$stable` from tb_dom WHERE `user_dom`='$user'")
    5. while($row=mysql_fetch_array($qr_result1));
    6.     echo $row;
    7. } 
    Но почему не выводит в браузере эти данные ? не правильно сделал $row ?

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
     
  12. Privetik

    Privetik Новичок

    С нами с:
    26 фев 2016
    Сообщения:
    24
    Симпатии:
    0
    пишу не по поводу твой проблемы но замени верхние строчки
    Код (PHP):
    1. if ($_POST['table']) $table=$_POST['table'];
     
  13. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    попробуй для начала не выводить массив через конструкцию echo. слышал это приводит к пятибуквенному результату.