За последние 24 часа нас посетили 59355 программистов и 1834 робота. Сейчас ищут 1064 программиста ...

Цыкл

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

  1. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    Добры день всем. Я вот делаю для портфолио сайтик по мазде и на шаге создания таблицы с характеристиками модели споткнулся. Мне нужно добиться такого:
    Движок 103 л.с 110 л.с
    Макс. скорость 250 200
    Обьем бака 50 45

    Получаеться что у одной модели может быть 2-3 варианта движков для которых есть свои характеристики.
    Ключевое поле это модель, по которой оределяеться какие движки выводить. Но я столкнулся с проблемой, Цыклом.
    Каким образом сделать так что бы эти данные выводились в цыкле.
    Я сделал во так, но резульатом оказываеться вторая строка, получаеться что данные второй строки заменяют данные первой (данные по первому движку)
    PHP:
    1. <?php
    2. $result = mysql_query ("SELECT * FROM chracteristic WHERE model=1 and txt=''", $db);
    3. $myrow = mysql_fetch_array ($result);
    4. <table width='200' border='1' cellspacing='0' cellpadding='1'>
    5.  <tr>
    6.    <td>Двигатели</td>
    7.    <td>%s</td>
    8.    <td>%s</td>
    9.  
    10.  </tr>
    11.  <tr>
    12.    <td>Максимальная скорость</td>
    13.   <td>%s</td>
    14.   <td>%s</td>
    15. </tr>
    16. </table>
    17. ", $myrow['engine'], $myrow['max_speed'], $myrow['engine'], $myrow['max_speed']);
    18. ?>
    Помогите пожалуйста реализовать это.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    while($myrow = mysql_fetch_array ($result)) {
    printr...
    }

    P.S. Цикл
     
  3. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
  4. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Попов?
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    К счастью, когда я начинал, не было Попова еще...
     
  6. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Мне повезло меньше.
     
  7. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    PHP:
    1. while($myrow = mysql_fetch_array ($result)) {
    2. printf...
    3. }
    Не подходит. Подставляеться результат последней строки. Даже незнаю что и делать.
     
  8. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Код сюда вставлять. Вот что делать.
     
  9. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    PHP:
    1. <?php
    2. $result = mysql_query ("SELECT * FROM chracteristic WHERE model=1 and txt=''", $db);
    3. $myrow = mysql_fetch_array ($result);
    4. while($myrow = mysql_fetch_array ($result)) {
    5.  
    6. <table width='200' border='1' cellspacing='0' cellpadding='1'>
    7.  <tr>
    8.    <td>Двигатели</td>
    9.    <td>%s</td>
    10.     <td>%s</td>
    11.  
    12.  </tr>
    13.  <tr>
    14.    <td>Максимальная скорость</td>
    15.   <td>%s</td>
    16.   <td>%s</td>
    17. </tr>
    18. </table>
    19. ", $myrow['engine'], $myrow['engine'], $myrow['max_speed'],  $myrow['max_speed']);
    20. }
    21. ?>
    В вторую ячейку первой строки заноситься результат последней строки массива, в третью ячейку первой строки строки заносться результат последней строки массива. Со второй трокой все аналогично.
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Значит выборка такая.

    Попробуйте еще раз проверить:
    PHP:
    1.  
    2. <?php
    3. echo '<pre>';
    4. while($myrow = mysql_fetch_array ($result)) {
    5. print_r($myrow);
    6. }
    7.  
    P.S.
    Дважды не нужно. До while -- стирайте fetch_array
     
  11. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    При удалении строки
    PHP:
    1. $myrow = mysql_fetch_array ($result);
    получаеться цыкл в котром создаеться еще одна таблица, в первой результаты первой строки запроса, во втрой результаты втрой строки.
    При использовании print_r($myrow) выходят такие результаты
    PHP:
    1. (
    2.     [0] => 1
    3.     [id] => 1
    4.     [1] => 1
    5.     [model] => 1
    6.     [2] =>
    7.     [txt] =>
    8.     [3] => 1,5 (103 л.с.)
    9.     [engine] => 1,5 (103 л.с.)
    10.     [4] => 4
    11.     [number_of_clapans] => 4
    12.     [5] => 103 / 6000
    13.     [moznost] => 103 / 6000
    14.     [6] => 137 / 4000
    15.     [krutasii_moment] => 137 / 4000
    16. )
    17. (
    18.     [0] => 2
    19.     [id] => 2
    20.     [1] => 1
    21.     [model] => 1
    22.     [2] =>
    23.     [txt] =>
    24.     [3] => 1,5 (103 л.с.)
    25.     [engine] => 1,5 (103 л.с.)
    26.     [4] => 4
    27.     [number_of_clapans] => 4
    28.     [5] => 103 / 6500
    29.     [moznost] => 103 / 6500
    30.     [6] => 137 / 4000
    31.     [krutasii_moment] => 137 / 4000
    32. )
    Я вот подумал, если с цыклом не выходит то можно как-то просто подставлять переменные? Только я не понял как в массиве выбрать второй, думал что так можно $myrow[2]['engine'] но так не работает.
     
  12. kuliev

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

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Нумерация массивов начинается с 0
     
  13. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    Даже если я пишу $myrow[0]['engine'] выводит 1. То есть за [0] принимает первое поле первой строки - id.
     
  14. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    PHP:
    1.  
    2. <table width='200' border='1' cellspacing='0' cellpadding='1'>
    3.  <?php
    4.  $result = mysql_query ("SELECT * FROM chracteristic WHERE model=1 and txt=''", $db);
    5.  while($myrow = mysql_fetch_array ($result)) {
    6.  printf ("
    7.   <tr>
    8.     <td>Двигатели</td>
    9.     <td>%s</td>
    10.     <td>%s</td>
    11.   </tr>
    12.   <tr>
    13.     <td>Максимальная скорость</td>
    14.   <td>%s</td>
    15.   <td>%s</td>
    16.  </tr>
    17. ", $myrow['engine'], $myrow['engine'], $myrow['max_speed'],  $myrow['max_speed']);
    18.  }
    19.  ?>
    20.  </table>
    21.  
    22.  
    это если нужно, что б НЕ создавалась новая таблица и что б была нумерация начиналась с нуля, хотя это не решение задачи... если будет второй вызов $myrow = mysql_fetch_array ($result) то продублируются
    Код (Text):
    1. <td>Двигатели</td>
    2. <td>Максимальная скорость</td>
    которые вам наверно не нужны...
     
  15. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    В выше приведенном варианте талица не дублируеться, дублируються ячейки. Я так понял в этом случае цыкл не поможет. Как можно при выборе результата запроса например $myrow['engine'] выбрать из какой строки эго выводить? ТО есть в массиве есть 2 строки, я хочу например вывести движок второй строки.
     
  16. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    Что, никто не знает?
     
  17. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    юзаем DISTINCT в SQL?
     
  18. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    там не те ячейки дублируются))) там в тегах <td>
     
  19. demonichka

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

    С нами с:
    7 янв 2009
    Сообщения:
    13
    Симпатии:
    0
    Всем спасибо, решил проблему несколько иным способом.