Добры день всем. Я вот делаю для портфолио сайтик по мазде и на шаге создания таблицы с характеристиками модели споткнулся. Мне нужно добиться такого: Движок 103 л.с 110 л.с Макс. скорость 250 200 Обьем бака 50 45 Получаеться что у одной модели может быть 2-3 варианта движков для которых есть свои характеристики. Ключевое поле это модель, по которой оределяеться какие движки выводить. Но я столкнулся с проблемой, Цыклом. Каким образом сделать так что бы эти данные выводились в цыкле. Я сделал во так, но резульатом оказываеться вторая строка, получаеться что данные второй строки заменяют данные первой (данные по первому движку) PHP: <?php $result = mysql_query ("SELECT * FROM chracteristic WHERE model=1 and txt=''", $db); $myrow = mysql_fetch_array ($result); printf (" <table width='200' border='1' cellspacing='0' cellpadding='1'> <tr> <td>Двигатели</td> <td>%s</td> <td>%s</td> </tr> <tr> <td>Максимальная скорость</td> <td>%s</td> <td>%s</td> </tr> </table> ", $myrow['engine'], $myrow['max_speed'], $myrow['engine'], $myrow['max_speed']); ?> Помогите пожалуйста реализовать это.
PHP: while($myrow = mysql_fetch_array ($result)) { printf... } Не подходит. Подставляеться результат последней строки. Даже незнаю что и делать.
PHP: <?php $result = mysql_query ("SELECT * FROM chracteristic WHERE model=1 and txt=''", $db); $myrow = mysql_fetch_array ($result); while($myrow = mysql_fetch_array ($result)) { printf (" <table width='200' border='1' cellspacing='0' cellpadding='1'> <tr> <td>Двигатели</td> <td>%s</td> <td>%s</td> </tr> <tr> <td>Максимальная скорость</td> <td>%s</td> <td>%s</td> </tr> </table> ", $myrow['engine'], $myrow['engine'], $myrow['max_speed'], $myrow['max_speed']); } ?> В вторую ячейку первой строки заноситься результат последней строки массива, в третью ячейку первой строки строки заносться результат последней строки массива. Со второй трокой все аналогично.
Значит выборка такая. Попробуйте еще раз проверить: PHP: <?php echo '<pre>'; while($myrow = mysql_fetch_array ($result)) { print_r($myrow); } P.S. Дважды не нужно. До while -- стирайте fetch_array
При удалении строки PHP: $myrow = mysql_fetch_array ($result); получаеться цыкл в котром создаеться еще одна таблица, в первой результаты первой строки запроса, во втрой результаты втрой строки. При использовании print_r($myrow) выходят такие результаты PHP: Array ( [0] => 1 [id] => 1 [1] => 1 [model] => 1 [2] => [txt] => [3] => 1,5 (103 л.с.) [engine] => 1,5 (103 л.с.) [4] => 4 [number_of_clapans] => 4 [5] => 103 / 6000 [moznost] => 103 / 6000 [6] => 137 / 4000 [krutasii_moment] => 137 / 4000 ) Array ( [0] => 2 [id] => 2 [1] => 1 [model] => 1 [2] => [txt] => [3] => 1,5 (103 л.с.) [engine] => 1,5 (103 л.с.) [4] => 4 [number_of_clapans] => 4 [5] => 103 / 6500 [moznost] => 103 / 6500 [6] => 137 / 4000 [krutasii_moment] => 137 / 4000 ) Я вот подумал, если с цыклом не выходит то можно как-то просто подставлять переменные? Только я не понял как в массиве выбрать второй, думал что так можно $myrow[2]['engine'] но так не работает.
Даже если я пишу $myrow[0]['engine'] выводит 1. То есть за [0] принимает первое поле первой строки - id.
PHP: <table width='200' border='1' cellspacing='0' cellpadding='1'> <?php $result = mysql_query ("SELECT * FROM chracteristic WHERE model=1 and txt=''", $db); while($myrow = mysql_fetch_array ($result)) { printf (" <tr> <td>Двигатели</td> <td>%s</td> <td>%s</td> </tr> <tr> <td>Максимальная скорость</td> <td>%s</td> <td>%s</td> </tr> ", $myrow['engine'], $myrow['engine'], $myrow['max_speed'], $myrow['max_speed']); } ?> </table> это если нужно, что б НЕ создавалась новая таблица и что б была нумерация начиналась с нуля, хотя это не решение задачи... если будет второй вызов $myrow = mysql_fetch_array ($result) то продублируются Код (Text): <td>Двигатели</td> <td>Максимальная скорость</td> которые вам наверно не нужны...
В выше приведенном варианте талица не дублируеться, дублируються ячейки. Я так понял в этом случае цыкл не поможет. Как можно при выборе результата запроса например $myrow['engine'] выбрать из какой строки эго выводить? ТО есть в массиве есть 2 строки, я хочу например вывести движок второй строки.