За последние 24 часа нас посетили 36760 программистов и 7744 робота. Сейчас ищут 1792 программиста ...

Не выводит данные

Тема в разделе "PHP для новичков", создана пользователем dadline, 1 ноя 2022.

  1. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    Здравствуйте, есть код,но не могу понять в чем ошибка,не выводит данные
    помогите плиз
    PHP:
    1. if(isset($_POST["familiy"]))
    2. {
    3.     $mysqli = new mysqli("localhost", "root", "", "my_base");
    4.  
    5.     $userid = $mysqli->real_escape_string($_POST["familiy"]);
    6. //Запрос на выборку всех сообщений
    7. $sql="SELECT sotrudnik.lich_nomer, sotrudnik.familiy, sotrudnik.name, sotrudnik.Otchevstvo, sotrudnik.Zvanie,sotrudnik.dolznost, sotrudnik.vzisk, sotrudnik.Poochrenie, sotrudnik.birthday, sotrudnik.obrazovanie, sotrudnik.semeynoe, sotrudnik.Children, sotrudnik.Stach,sotrudnik.reiting, test.rez_prof, test.del_nrav, test.res_intel, test.sport_dost, test.rez_fiz FROM sotrudnik INNER JOIN test ON sotrudnik.lich_nomer = test.lich_nomer  WHERE 'familiy' = '$userid' ";
    8. $result = $mysqli -> query($sql);
    9. function vivod($result) {
    10.     // Проверка на то, что строк больше нуля
    11.     if ($result -> num_rows > 0) {
    12.         // Цикл для вывода данных
    13.         while ($row = $result -> fetch_assoc()) {
    14.             // Получаем массив с строками которые нужно выводить
    15.             $arr = doesItExist($row);
    16.             // Вывод данных
    17.  
    18.          
    19.             echo "<tr>";
    20.             echo "<td>".$row['lich_nomer']."</td>";
    21.             echo "<td>".$row['familiy']."</td>";
    22.          
    23.             echo "<td>".$row['name']."</td>";
    24.             echo "<td>".$row['Otchevstvo']."</td>";
    25.             echo "<td>".$row['Zvanie']."</td>";
    26.             echo "<td>".$row['dolznost']."</td>";
    27.             echo "<td>".$row['vzisk']."</td>";
    28.             echo "<td>".$row['Poochrenie']."</td>";
    29.             echo "<td>".$row['birthday']."</td>";
    30.             echo "<td>".$row['obrazovanie']."</td>";
    31.             echo "<td>".$row['semeynoe']."</td>";
    32.             echo "<td>".$row['Children']."</td>";
    33.             echo "<td>".$row['Stach']."</td>";
    34.             echo "<td>".$row['rez_prof']."</td>";
    35.             echo "<td>".$row['del_nrav']."</td>";
    36.             echo "<td>".$row['res_intel']."</td>";
    37.             echo "<td>".$row['sport_dost']."</td>";
    38.             echo "<td>".$row['rez_fiz']."</td>";
    39.             echo "<td>".$row['reiting']."</td>";
    40.                             echo "</tr>";
    41.                
    42.         }
    43.     }
    44. }
    45.  
    46.  
    47. print($userid);
    48.  
    49. }
    50.  
    51. ?>
     
    #1 dadline, 1 ноя 2022
    Последнее редактирование модератором: 2 ноя 2022
  2. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Разбейте свою задачу на составляющие.
    1.Отладьте запрос к базе в phpMyAdmin
    2. Соберите аналогичный запрос в вашем сценарии PHP из данных полученных извне, например из формы.
    3. Отладьте передачу этого запроса в базу из сценария.
    4. Отформатируйте полученные сценарием данные из базы.
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    И для размещения кода на форуме используйте соответствующие теги
     
  4. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    я мало знаком с этим форумом, поэтому еще не знаю,как правильно размещать здесь информацию
     
  5. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Если использовать инструмент </> и выбрать язык php то код будет смотреться красивее и читабельнее. Скажите, а вы функцию vivod($result) где то вызываете? или она у вас только объявлена? И что за функция $arr = doesItExist($row);
     
    #5 antoniii, 2 ноя 2022
    Последнее редактирование: 2 ноя 2022
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну так правила почитайте, там написано, кнопка </>
     
  7. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Данные в $result записываются, до функции vivod?
     
  8. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0

    Да,выводятся.

    WHERE 'familiy' = '$userid' - проблема в этом,т.к если убрать условие, то выводиться результат в виде всех данных из таблицы,а мне нужна конкретная строка
    --- Добавлено ---

    vivod($result) должно быть вместе vivod($userid) (уже исправил)
    $arr = doesItExist($row); это лишнее,но я уже убрал
    но все равно не выводится(((
     
  9. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Вот так можно попробовать:

    Код (Text):
    1. $sql="SELECT sotrudnik.lich_nomer, sotrudnik.familiy, sotrudnik.name, sotrudnik.Otchevstvo, sotrudnik.Zvanie,sotrudnik.dolznost, sotrudnik.vzisk, sotrudnik.Poochrenie, sotrudnik.birthday, sotrudnik.obrazovanie, sotrudnik.semeynoe, sotrudnik.Children, sotrudnik.Stach,sotrudnik.reiting, test.rez_prof, test.del_nrav, test.res_intel, test.sport_dost, test.rez_fiz FROM sotrudnik INNER JOIN test ON sotrudnik.lich_nomer = test.lich_nomer  WHERE 'familiy' = "  .  $userid';
     
  10. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0



    PHP:
    1. if(isset($_POST["familiy"]))
    2. {
    3.     $mysqli = new mysqli("localhost", "root", "", "my_base");
    4.     $userid = $mysqli->real_escape_string($_POST["familiy"]);
    5. //Запрос на выборку всех сообщений
    6. $sql="SELECT sotrudnik.lich_nomer, sotrudnik.familiy, sotrudnik.name, sotrudnik.Otchevstvo, sotrudnik.Zvanie,sotrudnik.dolznost, sotrudnik.vzisk, sotrudnik.Poochrenie, sotrudnik.birthday, sotrudnik.obrazovanie, sotrudnik.semeynoe, sotrudnik.Children, sotrudnik.Stach,sotrudnik.reiting, test.rez_prof, test.del_nrav, test.res_intel, test.sport_dost, test.rez_fiz FROM sotrudnik INNER JOIN test ON sotrudnik.lich_nomer = test.lich_nomer  WHERE 'familiy' = '$userid' ";
    7. var_dump($sql);
    8. echo'
    9. ';
    10. $result = $mysqli -> query($sql);
    11. var_dump($result);
    12. echo'
    13. ';
    14. function vivod($result) {
    15.     // Проверка на то, что строк больше нуля
    16.     if ($result -> num_rows > 0) {
    17.         // Цикл для вывода данных
    18.         while ($row = $result -> fetch_assoc()) {
    19.             // Получаем массив с строками которые нужно выводить
    20.             $arr = doesItExist($row);
    21.             // Вывод данных
    22.        
    23.             echo "<tr>";
    24.             echo "<td>".$row['lich_nomer']."</td>";
    25.             echo "<td>".$row['familiy']."</td>";
    26.        
    27.             echo "<td>".$row['name']."</td>";
    28.             echo "<td>".$row['Otchevstvo']."</td>";
    29.             echo "<td>".$row['Zvanie']."</td>";
    30.             echo "<td>".$row['dolznost']."</td>";
    31.             echo "<td>".$row['vzisk']."</td>";
    32.             echo "<td>".$row['Poochrenie']."</td>";
    33.             echo "<td>".$row['birthday']."</td>";
    34.             echo "<td>".$row['obrazovanie']."</td>";
    35.             echo "<td>".$row['semeynoe']."</td>";
    36.             echo "<td>".$row['Children']."</td>";
    37.             echo "<td>".$row['Stach']."</td>";
    38.             echo "<td>".$row['rez_prof']."</td>";
    39.             echo "<td>".$row['del_nrav']."</td>";
    40.             echo "<td>".$row['res_intel']."</td>";
    41.             echo "<td>".$row['sport_dost']."</td>";
    42.             echo "<td>".$row['rez_fiz']."</td>";
    43.             echo "<td>".$row['reiting']."</td>";
    44.                             echo "</tr>";
    45.              
    46.         }
    47.     }
    48. }
    49. print($userid);
    50. }
    51. ?>

    прописал var_dump($sql) и var_dump($result). В случае с $sql все работает.
    а вот для $result выдает вот что:
    object(mysqli_result)#1 (5) { ["current_field"]=> int(0) ["field_count"]=> int(19) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }
    Как я понял,из-за пустых значений у меня и не выводиться результат
     
  11. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Ответьте мне: функция vivod где вызвана в коде?
     
  12. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    PHP:
    1. if(isset($_POST["familiy"]))
    2. {
    3.     $mysqli = new mysqli("localhost", "root", "", "my_base");
    4.     $userid = $mysqli->real_escape_string($_POST["familiy"]);
    5. //Запрос на выборку всех сообщений
    6. $sql="SELECT sotrudnik.lich_nomer, sotrudnik.familiy, sotrudnik.name, sotrudnik.Otchevstvo, sotrudnik.Zvanie,sotrudnik.dolznost, sotrudnik.vzisk, sotrudnik.Poochrenie, sotrudnik.birthday, sotrudnik.obrazovanie, sotrudnik.semeynoe, sotrudnik.Children, sotrudnik.Stach,sotrudnik.reiting, test.rez_prof, test.del_nrav, test.res_intel, test.sport_dost, test.rez_fiz FROM sotrudnik INNER JOIN test ON sotrudnik.lich_nomer = test.lich_nomer  WHERE 'familiy' = '$userid' ";
    7. var_dump($sql);
    8. echo'
    9. ';
    10. $result = $mysqli -> query($sql);
    11. var_dump($result);
    12. echo'
    13. ';
    14. function vivod($result) {
    15.     // Проверка на то, что строк больше нуля
    16.     if ($result -> num_rows > 0) {
    17.         // Цикл для вывода данных
    18.         while ($row = $result -> fetch_assoc()) {
    19.             // Получаем массив с строками которые нужно выводить
    20.             $arr = doesItExist($row);
    21.             // Вывод данных
    22.      
    23.             echo "<tr>";
    24.             echo "<td>".$row['lich_nomer']."</td>";
    25.             echo "<td>".$row['familiy']."</td>";
    26.      
    27.             echo "<td>".$row['name']."</td>";
    28.             echo "<td>".$row['Otchevstvo']."</td>";
    29.             echo "<td>".$row['Zvanie']."</td>";
    30.             echo "<td>".$row['dolznost']."</td>";
    31.             echo "<td>".$row['vzisk']."</td>";
    32.             echo "<td>".$row['Poochrenie']."</td>";
    33.             echo "<td>".$row['birthday']."</td>";
    34.             echo "<td>".$row['obrazovanie']."</td>";
    35.             echo "<td>".$row['semeynoe']."</td>";
    36.             echo "<td>".$row['Children']."</td>";
    37.             echo "<td>".$row['Stach']."</td>";
    38.             echo "<td>".$row['rez_prof']."</td>";
    39.             echo "<td>".$row['del_nrav']."</td>";
    40.             echo "<td>".$row['res_intel']."</td>";
    41.             echo "<td>".$row['sport_dost']."</td>";
    42.             echo "<td>".$row['rez_fiz']."</td>";
    43.             echo "<td>".$row['reiting']."</td>";
    44.                             echo "</tr>";
    45.            
    46.         }
    47.     }
    48. }
    49.  
    50. }
    51. vivod($result);
    52. ?>
     
  13. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    У вас значение $userid русскими буквами?
     
  14. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    да
     
  15. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Зачем писать все поля в строке запроса если можно заменить их знаком * ?
    После строки запроса напишите echo $sql;
    У вас таблица строится? А где теги <table> и </table> ?
    --- Добавлено ---
    $arr= doesItExist($row); Что это?
     
  16. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    doesItExist это функция для запоминания переменной из select(а)
    выглядит она так
    PHP:
    1. function doesItExist(array $arr) {
    2.     // Создаём новый массив
    3.     $data = array(
    4.         'familiy' => $arr['familiy'] != false ? $arr['familiy'] : 'Нет данных',
    5.     );
    6.     return $data; // Возвращаем этот массив
    7.    
    8. }
    но в данном коде опечатка,я это убрал ($arr= doesItExist($row);)

    таблица строится,просто я не стал загромождать все кодом,если надо,могу скинуть полный код
     
  17. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    WHERE 'familiy' = '$userid' "; Здесь в запросе надо указать имя таблицы:
    WHERE sotrudnik.familiy = ' ". $userid . " ' ;";
    Обрати внимание на синтаксис. В условии не нужно ставить кавычки после WHERE а вот где значение я указал одинарную кавычку, потом двойную, потом точку, потом переменную, потом точку и еще кусочек строки.
    После объявления $sql я просил вывести ее на экран. Так ты увидишь реальную строку со вставленной переменной $userid. Она будет в одинарных кавычках. Строка завершится знаком ;
    Можно проверить эту стоку в PHPMyAdmin в поле запроса SQL. Если запрос отработает в MyAdminе то его можно смело использовать в коде.
     
  18. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0

    Спасибо!
    но есть еще один вопрос,как мне вывести теперь данный запрос в таблицу?
     
  19. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    PHP:
    1. function vivod($result) {
    2.     // Проверка на то, что строк больше нуля
    3.     if ($result -> num_rows > 0) {
    4. ?>
    5. <table border="1" cellpadding="5" cellspacing="0">
    6. <?php
    7.         // Цикл для вывода данных
    8.         while ($row = $result -> fetch_assoc()) {
    9.             // Получаем массив с строками которые нужно выводить
    10.             // Вывод данных
    11.    
    12.             echo "<tr>";
    13.             echo "<td>Личный номер</td>";
    14.             echo "<td>".$row['lich_nomer']."</td>";
    15.             echo "</tr>";
    16.             echo "<tr>";
    17.             echo "<td>Фамилия</td>";
    18.             echo "<td>".$row['familiy']."</td>";
    19.             echo "</tr>";
    20.                  echo "<tr>";
    21.             echo "<td>Имя</td>";
    22.             echo "<td>".$row['name']."</td>";
    23.             echo "</tr>";
    24.             echo "<tr>";
    25.             echo "<td>Отчество</td>";
    26.             echo "<td>".$row['Otchevstvo']."</td>";
    27.             echo "</tr>";
    28.             echo "<tr>";
    29.             echo "<td>Звание</td>";
    30.             echo "<td>".$row['Zvanie']."</td>";
    31.             echo "</tr>";
    32.             echo "<tr>";
    33.             echo "<td>Должность</td>";
    34.             echo "<td>".$row['dolznost']."</td>";
    35.             echo "</tr>";
    36.             echo "<tr>";
    37.             echo "<td>Взыскание</td>";
    38.             echo "<td>".$row['vzisk']."</td>";
    39.             echo "</tr>";
    40.             echo "<tr>";
    41.             echo "<td>Поощрение</td>";
    42.             echo "<td>".$row['Poochrenie']."</td>";
    43.             echo "</tr>";
    44.             echo "<tr>";
    45.             echo "<td>День рождения</td>";
    46.             echo "<td>".$row['birthday']."</td>";
    47.             echo "</tr>";
    48.             echo "<tr>";
    49.             echo "<td>Образование</td>";
    50.             echo "<td>".$row['obrazovanie']."</td>";
    51.             echo "</tr>";
    52.             echo "<tr>";
    53.             echo "<td>Семейное положение</td>";
    54.             echo "<td>".$row['semeynoe']."</td>";
    55.             echo "</tr>";
    56.             echo "<tr>";
    57.             echo "<td>Дети</td>";
    58.             echo "<td>".$row['Children']."</td>";
    59.             echo "</tr>";
    60.             echo "<tr>";
    61.             echo "<td>Стаж</td>";
    62.             echo "<td>".$row['Stach']."</td>";
    63.             echo "</tr>";
    64.             echo "<tr>";
    65.             echo "<td>Не понял</td>";
    66.             echo "<td>".$row['rez_prof']."</td>";
    67.             echo "</tr>";
    68.             echo "<tr>";
    69.             echo "<td>Не понял</td>";
    70.             echo "<td>".$row['del_nrav']."</td>";
    71.             echo "</tr>";
    72.             echo "<tr>";
    73.             echo "<td>Не понял</td>";
    74.             echo "<td>".$row['res_intel']."</td>";
    75.             echo "</tr>";
    76.             echo "<tr>";
    77.             echo "<td>Спортивные достижения</td>";
    78.             echo "<td>".$row['sport_dost']."</td>";
    79.             echo "</tr>";
    80.             echo "<tr>";
    81.             echo "<td>Не понял</td>";
    82.             echo "<td>".$row['rez_fiz']."</td>";
    83.             echo "</tr>";
    84.             echo "<tr>";
    85.             echo "<td>Оценка</td>";
    86.             echo "<td>".$row['reiting']."</td>";
    87.             echo "</tr>";
    88. ?>
    89. </table>  
    90. <?php      
    91.         }
    92.     }
    93. }
    94. vivod($result);
     
    dadline нравится это.
  20. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    Спасибо!
    --- Добавлено ---
    Еще есть такой вопрос.
    Могу ли я ,например, данную которую я запомнил в $a передать методом пост в другую форму?
     
  21. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Ты можешь вставить переменную php в форму в виде <input type='text' name='txt1' value='<?php echo $a ?>'>
    При отправке формы она будет доступна на сервере под именем txt1
     
  22. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    И получить XSS, @antoniii, вредитель?
     
  23. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Давно хотел узнать как это делается. Спасибо, @don.bidon!
    Теоретически любые данные из формы могут навредить серверу.
     
    #23 antoniii, 4 ноя 2022
    Последнее редактирование: 4 ноя 2022
  24. dadline

    dadline Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    Это в итоге правильно?)
     
  25. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Если правильно применить идею.