За последние 24 часа нас посетили 18453 программиста и 1704 робота. Сейчас ищут 909 программистов ...

sql запрос в коде PHP

Тема в разделе "PHP и базы данных", создана пользователем dismal, 22 июн 2011.

  1. dismal

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

    С нами с:
    22 июн 2011
    Сообщения:
    3
    Симпатии:
    0
    Доброго времени суток!

    Есть база данных tabel с таблицами tUser(id_user, User, Dep, Doljnost) и tabel(id_tab, id_user, 1, 2, 3) связанных по полю id_user.
    Есть скрипт достающий нужные поля из базы на форму для дальнейшего просмотра/редактирования:
    PHP:
    1.  
    2. <html>
    3.  
    4. <body>
    5. <form action="fzapolnenie.php" method="get">
    6. <select name='Month' size ='1'>
    7. <?php
    8. $host = "localhost";
    9. $use = "root";
    10. $pass = "";
    11. $db = "tabel";
    12. mysql_connect($host, $use, $pass);
    13. $result = mysql_query('SELECT * FROM  tMon ');
    14. while($row = mysql_fetch_array($result)) {
    15. echo "<option value =".$row['id_mon'].">".$row['Mon']."</option>";
    16. }
    17.  
    18. ?>
    19. </select>&nbsp;&nbsp;&nbsp;&nbsp;
    20. <?
    21.     echo "<input name='pYear' type='text' size='3' value=".date(Y).">";
    22. ?>
    23.  
    24. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    25.  
    26. <select name="Name" size="1">
    27. <?
    28. $result1 = mysql_query('SELECT * FROM tUser');
    29. while($row1 = mysql_fetch_array($result1)) {
    30.     echo "<option value = ".$row1['id_user'].">".$row1['User']."</option>";
    31. }
    32. ?>
    33. </select></br></br></br>
    34.  
    35.  
    36.  
    37.  
    38. <table width="690" height="5" border="1">
    39. <?
    40. $sql = "SELECT `tUser`.`id_user`,`tUser`.`User`,`tUser`.`Dep`,`tUser`.`Doljnost`, `tabel`.`1`,`tabel`.`2`,`tabel`.`3` FROM tabel LEFT JOIN `tabel`.`tUser` ON `tabel`.`id_user` = `tUser`.`id_user` LIMIT 0, 30 ";
    41.  
    42.             $res3 = mysql_query($sql);
    43.             while($row3 = mysql_fetch_array($res3)) {
    44.                 echo "<tr><td>".$row3['`tUser`.`id_user`']."</td><td><select size='1' name='Name'>";
    45.                 echo "<option value =".$row3['`tUser`.`id_user`'].">".$row3['`tUser`.`User`']."</option>";
    46.                    
    47.                     $result4 = mysql_query('SELECT * FROM tUser');
    48.        
    49.                     while($row4 = mysql_fetch_array($result4)){
    50.                         if($row4['User'] != $row3['tUser.User']) {
    51.                             echo "<option value =".$row4['id_user'].">".$row4['User']."</option>";
    52.                                 }
    53.                     }
    54.  
    55.                 echo "</select></td>";
    56.                 echo "<td>".$row4['Dep']."</td>";
    57.                 echo"<td>".$row3['`tUser`.`Doljnost`']."</td>";
    58.                 }
    59.                
    60.     //}
    61. ?>
    62. </table></br></br></br>
    63.  
    64. </form>
    65.  
    66. </body>
    67. </html>
    68.  
    Все бы хорошо, только данные не отражаются на форме, хотя в phpMyAdmin запрос $sql выполняется так как нужно.(Хотел приложить скрин да не нашел где тут вложения).
    Помогите пожалуйста выяснить, почему поля из запроса $str не отображаются на форме, может я делаю что-то не так в коде или ошибкаб которую не вижу?.(Должно быть 3 записи )
    Заранее спасибо!
    Использую связку Denwer3_Base_2010-11-07_a2.2.4_p5.3.1_m5.1.40_pma3.2.3
     
  2. tmvrus

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

    С нами с:
    9 июн 2011
    Сообщения:
    10
    Симпатии:
    0
    Разве PHP не ругается на такую запись? Индексы массива какие-то странные.
    PHP:
    1.  
    2.   echo "<tr><td>".$row3['`tUser`.`id_user`']."</td><td><select size='1' name='Name'>";
    3.   echo "<option value =".$row3['`tUser`.`id_user`'].">".$row3['`tUser`.`User`']."</option>";
    4.  
     
  3. dismal

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

    С нами с:
    22 июн 2011
    Сообщения:
    3
    Симпатии:
    0
    Нет не ругается, выводит пустые <selectы>, то количество, которое нужно, но без данных ).

    Да, насчет индексов согласен, вот и ищу помощи/подсказки как из базы вытянуть нужные поля, например tUser.id_user, tUser.User, Dep, tUser.Doljnost.

    Вот этот кусок работает нормально(выдает список фамилий в каждой ячейке таблицы):

    PHP:
    1.  
    2.                      $result4 = mysql_query('SELECT * FROM tUser');
    3.                                while($row4 = mysql_fetch_array($result4)){
    4.                                       if($row4['User'] != $row3['tUser.User']) {
    5.                                             echo "<option value =".$row4['id_user'].">".$row4['User']."</option>";
    6.                                       }
    7.  
    Но тут sql запрос к полям одной таблицы, а как вытянуть в массив поля из связанных таблиц, как в примере выше?
     
  4. dismal

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

    С нами с:
    22 июн 2011
    Сообщения:
    3
    Симпатии:
    0
    Все разобрался, дело в индексах массива (не нужно указывать имя таблицы):

    PHP:
    1.  
    2. $sql = "SELECT `tUser`.`id_user`,`tUser`.`User`,`tUser`.`Dep`,`tUser`.`Doljnost`, `tabel`.`1`,`tabel`.`2`,`tabel`.`3` FROM tabel LEFT JOIN `tabel`.`tUser` ON `tabel`.`id_user` = `tUser`.`id_user` LIMIT 0, 30 ";
    3.  
    4.             $res3 = mysql_query($sql);
    5.             while($row3 = mysql_fetch_array($res3)) {
    6.                 echo "<tr><td>"[u].$row3['id_user'].[/u]"</td><td><select size='1' name='Name'>";
    7.                 echo "<option value ="[u].$row3['id_user'].[/u]">"[u].$row3['User'].[/u]"</option>";
    8.                    
    9.                     $result4 = mysql_query('SELECT * FROM tUser');
    10.        
    11.                     while($row4 = mysql_fetch_array($result4)){
    12.                         if($row4['User'] != $row3['User']) {
    13.                             echo "<option value =".$row4['id_user'].">".$row4['User']."</option>";
    14.                                 }
    15.                     }
    16.  
    17.                 echo "</select></td>";
    18.                 echo "<td>"[u].$row3['Dep'].[/u]"</td>";
    19.                 echo"<td>"[u].$row3['Doljnost'].[/u]"</td>";
    20.                 }
    21.  
    Вопрос снимаю. Спасибо всем кто участвовал.