За последние 24 часа нас посетил 52971 программист и 1768 роботов. Сейчас ищут 1020 программистов ...

Как правильно написать запрос к БД и после его обработать?

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

  1. Darken

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

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    Вопрос может и совсем глупый, но т.к. учусь по книге и спросить совета не у кого -немного запутался.

    Буду рад если поможете.

    Задача такая:
    Есть таблица в базе. В результате запроса выбираются несколько строк по 12 столбцов в каждой, все это дело записывается в массив.

    Код (Text):
    1.  
    2. $query = "SELECT * FROM `belts` WHERE `car` LIKE '%".$car."%' ";
    3. $result =  mysql_query($query);
    4. $num_rows = mysql_num_rows($result);
    5. echo " Найдено ремней: $num_rows <br />";
    Как потом значение каждой строки запихать в отдельную ячкейку в выводимой таблице кроме значения первого столбца.
    вроде такого:

    Код (Text):
    1.  
    2. <tr>
    3. <td>тут значение 2 столбца</td>
    4. <td> тут значение 3 столбца</td>
    5. <td>...........</td>
    6. <td>............</td>
    7. <td>тут значение n- столбца и т.д.</td>
    8. </tr>
    9. <tr>
    10. тут вторая строка таблицы и т.д. пока не кончатся все строки отвечающие условию
    11. </tr>

    Прошу не просто банально написать за меня код, а именно помочь разобраться.
    Подозреваю, что цыклы for и while тут не подойдут, может как-то реализовать при помощи foreach?
     
  2. Darken

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

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    для облегчения понимания, вот, что у меня есть пока

    Код (Text):
    1.  
    2. $query = "SELECT * FROM `belts` WHERE `car` LIKE '%".$car."%' ";
    3. $result =  mysql_query($query);
    4. $num_rows = mysql_num_rows($result);
    5. if ($num_rows==0)
    6.     {
    7.     echo 'По вашему запросу ничего не найдено';
    8.     }
    9. else
    10.     {
    11.     echo " Найдено ремней: $num_rows <br />";
    12.     }
    13.  
    14. if (!$num_rows==0)
    15.     {
    16. ?>
    17.     <br />
    18.     <table border="1">
    19.         <rt align="center">
    20.         <th rowspan="2">Модель</th>
    21.         <th rowspan="2">Кузов</th>
    22.         <th rowspan="2">Двигатель</th>
    23.         <th colspan="2">Годы выпуска</th>
    24.         <th colspan="2">Генератор</th>
    25.         <th colspan="2">Гидроусилитель</th>
    26.         <th colspan="2">Кондиционер</th>
    27.         </tr>
    28.         <tr align="center" bgcolor="silver">
    29.         <td>от</td>
    30.         <td>до</td>
    31.         <td>GATES</td>
    32.         <td>OEM</td>
    33.         <td>GATES</td>
    34.         <td>OEM</td>
    35.         <td>GATES</td>
    36.         <td>OEM</td>
    37.         </tr>
    38.     </table>
    39. <?php
    40.         $arr = mysql_fetch_array($result);
    41.  
    42. echo $arr['car']."<br>";
    43. echo $arr['body']."<br>";
    44. echo $arr['dvs']."<br>";
    45. echo $arr['otyear']."<br>";
    46. echo $arr['doyear']."<br>";
    47. echo $arr['gen_gates']."<br>";
    48. echo $arr['gen_oem']."<br>";
    49. echo $arr['gid_gates']."<br>";
    50. echo $arr['gid_oem']."<br>";
    51. echo $arr['cond_gates']."<br>";
    52. echo $arr['cond_oem'];
    53.  
    54.  
    55.     }
    у меня получилось "достать" значения из массива путем echo $arr['car']."<br>";, но если строк не одна, как бы организовать цикл?
     
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    while($arr = mysql_fetch_array($result)){
    /*...*/
    }
     
  4. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1.  
    2. if (!$num_rows==0)  
    3.  
    4. -> if ($num_rows!=0)
    5.  
    6.  
    7.  
    8. while($row=mysql_fetch_assoc($result)) {
    9. echo   $row['значение'];
    10.  
    11. }
    12.  
     
  5. Darken

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

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    всем спасиб, вроде разобрался, использовал вариант Mr.M.I.T.
     
  6. Darken

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

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    извиняюсь за назойливость, вот, что у меня получилось, мне кажется грамоздко и немного не удобно, но не об этом речь. Могу ли я для изменения какой-то строки таблицы создать форму с невидимыми полями и вытащить значение столбцов в новый сценарий?

    Код (Text):
    1.  
    2. $query = "SELECT * FROM `belts` WHERE `car` LIKE '%".$car."%' ";
    3. $result =  mysql_query($query);
    4. $num_rows = mysql_num_rows($result);
    5. if ($num_rows==0)
    6.     {
    7.     echo 'По вашему запросу ничего не найдено';
    8.     }
    9. else
    10.     {
    11.     echo " Найдено ремней: $num_rows <br />";
    12.  
    13. ?>
    14.     <br />
    15.     <table border="1" width="100%">
    16.         <rt align="center">
    17.         <th rowspan="2">Модель</th>
    18.         <th rowspan="2">Кузов</th>
    19.         <th rowspan="2">Двигатель</th>
    20.         <th colspan="2">Годы выпуска</th>
    21.         <th colspan="2">Генератор</th>
    22.         <th colspan="2">Гидроусилитель</th>
    23.         <th colspan="2">Кондиционер</th>
    24.         <th rowspan="2">&nbsp;</th>
    25.         </tr>
    26.         <tr align="center" bgcolor="silver">
    27.         <td>от</td>
    28.         <td>до</td>
    29.         <td>GATES</td>
    30.         <td>OEM</td>
    31.         <td>GATES</td>
    32.         <td>OEM</td>
    33.         <td>GATES</td>
    34.         <td>OEM</td>
    35.         </tr>
    36.  
    37. <?php
    38.      while($arr = mysql_fetch_array($result))
    39.         {
    40. ?>
    41. <form action="edit_belts.php" method="post">
    42.  
    43.       <tr>
    44.         <td><input name="car_e" type="hidden"><?php echo $arr['car']."&nbsp";?></td>
    45.         <td><input name="body_y" type="hidden"><?php echo $arr['body']."&nbsp";?></td>
    46.         <td><input name="dvs_" type="hidden"><?php echo $arr['dvs']."&nbsp";?></td>
    47.         <td><input name="otyear_e" type="hidden"><?php echo $arr['otyear']."&nbsp";?></td>
    48.         <td><input name="doyear_e" type="hidden"><?php echo $arr['doyear']."&nbsp";?></td>
    49.         <td><input name="gen_gates_e" type="hidden"><?php echo $arr['gen_gates']."&nbsp";?></td>
    50.         <td><input name="gen_oem_e" type="hidden"><?php echo $arr['gen_oem']."&nbsp"; ?></td>
    51.         <td><input name="gid_gates_e" type="hidden"><?php echo $arr['gid_gates']."&nbsp";?></td>
    52.         <td><input name="gid_oem_e" type="hidden"><?php echo $arr['gid_oem']."&nbsp"; ?></td>
    53.         <td><input name="cond_gates_e" type="hidden"><?php echo $arr['cond_gates']."&nbsp"; ?></td>
    54.         <td><input name="cond_oem_e" type="hidden"><?php echo $arr['cond_oem']."&nbsp";?></td>
    55.         <td><input name="chec" type="checkbox" value="ON"></td>
    56.         </tr>
    57.  
    58. <?php
    59.         }
    60. ?>
    61.     </table><BR />
    62.     <div align="right"><input type="submit" value="Изменить"></div>
    63.     </form>
    64. <?php
    65.     }
    Сценарий обработки начинается примерно так:

    Код (Text):
    1.  
    2. <?php
    3. $car_e=$HTTP_POST_VARS['car_e'];
    4. echo $car_e;
    5. ?>
    не передает переменную. Может я что-то не так делаю?
    Как сделать так чтобы в сценарий изменения передавались переменные только тех строк, которые отмеченны <input name="chec" type="checkbox" value="ON">? [/quote]