За последние 24 часа нас посетили 35034 программиста и 1737 роботов. Сейчас ищут 949 программистов ...

как сделать чтоб вывод из базы не повторялся

Тема в разделе "PHP и базы данных", создана пользователем oksana, 24 мар 2012.

  1. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    есть такой запрос
    Код (Text):
    1. $result = mysql_query("
    2. SELECT id, categoria FROM table ORDER BY id", $db);
    3. $myrow = mysql_fetch_array($result);
    и такой вывод: хотелось бы чтоб выводился ряд и три разные categor но как вы увидите появляется ряд и три одинаковые categor потом новый ряд и новые categor
    Код (Text):
    1. echo "<table>";
    2. printf("
    3. <tr>
    4.     <td><a href='%s'>&nbsp;%s</a></td>
    5.     <td><a href='%s'>&nbsp;%s</a></td>
    6.     <td><a href='%s'>&nbsp;%s</a></td>
    7. </tr>",
    8. $myrow["id"], $myrow["categor"], $myrow["id"], $myrow["categor"], $myrow["id"], $myrow["categor"]);
    9. }
    10. while($myrow = mysql_fetch_array($result));
    11. echo "</table>";
    Как сделать чтоб categor не повторялись, какой запрос нужен?
    Пробовала так всеровно выводит ряд и 3 одинаковые categor
    Код (Text):
    1. "SELECT DISTINCT id, marca FROM type_auto ORDER BY id"
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Все правильно ты 3 раза выводишь 1 и ту же категорию тебе надо в цикле выводить и 1 раз категорию
     
  3. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    в смысле нужно сделать это?
    Код (Text):
    1. echo "<table>";
    2. printf("
    3. <tr>
    4.     <td><a href='%s'>&nbsp;%s</a></td>
    5.     <td><a href='%s'>&nbsp;%s</a></td>
    6.     <td><a href='%s'>&nbsp;%s</a></td>
    7. </tr>",
    8. $myrow["id"], $myrow["categor"]);
    9. }
    10. while($myrow = mysql_fetch_array($result));
    11. echo "</table>";
    Добавлено спустя 2 минуты 36 секунд:
    все кажется поняла шас попробую
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Что то типа этого

    Код (Text):
    1. $table = '<table><tr>';
    2.  
    3. while ($row = mysql_fetch_array($result)) {
    4.  
    5. $table .= '<td><a href='.$row['id'].'>&nbsp;'.$row['categor'].'</a></td>';
    6. }
    7.  
    8. $table .= '</tr></table>';
    9.  
    10. echo $table;
     
  5. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    не получается ПРАВИЛЬНО сделать еще один цикл подскажите =)
    Код (Text):
    1. echo "<table>";
    2. printf("
    3. <tr>
    4.     <td><a href='%s'>&nbsp;%s</a></td>
    5.     <td><a href='%s'>&nbsp;%s</a></td>
    6.     <td><a href='%s'>&nbsp;%s</a></td>
    7. </tr>",
    8. do{$myrow["id"], $myrow["categor"]} while($myrow = mysql_fetch_array($result)););
    9. }
    10. while($myrow = mysql_fetch_array($result));
    11. echo "</table>";
    Добавлено спустя 36 секунд:
    вы меня опередили шас попробую
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А откуда такие названия categor, categoria, на сколько я помню в одной из таблиц поле было prise
    Почему бы сразу не писать грамотно на английском языке :)
     
  7. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    нет тут я просто для примера пишу table1 table2 =)
    вродебы все выводится только проблема что один ряд и все категории в ней
    а хотелось один ряд три категории потом второй ряд следушие три категории
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Можно так например

    Код (Text):
    1. $table = '<table><tr>';
    2. $count = 1;
    3. while($row = mysql_fetch_array($result)) {
    4. if(($count-1)%3 == 0 && ($count-1) !=0)
    5.     $table .= '</tr><tr>';
    6.  
    7. $table .= ' <td><a href='.$row['id'].'>&nbsp;'.$row['categor'].'</a></td>';
    8.  
    9. $count++;
    10. }
    11.  
    12. $table .= '</tr></table>';
    13.  
    14. echo $table;
    Добавлено спустя 2 минуты 15 секунд:
    А по какому учебнику ты все это делаешь?

    Что то не припоминаю в каком учебнике в примерах использовалась ф-я printf()?
     
  9. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    к сожалению это были видео уроки
    Сначала смотрела киберсантвидеомастер полная лажа
    Потом попался Евгений Попов которого все так "любят" =)
    шас скачала PHP в подлинике
     
  10. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    все выводится как надо но первое поле в таблице не выводится а все остальные да
    а если в запросе ставлю ORDER BY id DESC то последнее поле не выводится =(
     
  11. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А я вот проверяю по всякому у меня все работает...

    Сможешь показать код который у тебя получился?
     
  12. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    1. делала вот так:
    Код (Text):
    1. $res = mysql_query("SELECT id, type FROM type_ob ORDER BY id", $db);
    2. $row = mysql_fetch_array($res);
    Код (Text):
    1. $table = '<table id="center" width="700"><tr>';
    2. $count = 1;
    3. while($row = mysql_fetch_array($res)) {
    4. if(($count-1)%3 == 0 && ($count-1) !=0)
    5. $table .= '</tr><tr>';
    6.  
    7. $table .= ' <td><a href='.$row['id'].'>&nbsp;'.$row['type'].'</a></td>';
    8.  
    9. $count++;
    10. }
    11.  
    12. $table .= '</tr></table>';
    13.  
    14. echo $table;
    все хорошо, но увы не выводит первое поле =(

    2. А вообще в итоге мне нужно вывести то что мы с вами раньше делали =)
    Код (Text):
    1. $res = mysql_query("SELECT type_ob.id, type_ob.type, count(catalog.categoria) AS total FROM type_ob LEFT JOIN catalog ON type_ob.type = catalog.categoria GROUP BY catalog.categoria, type_ob.type ORDER BY id", $db);
    2. $row = mysql_fetch_array($res);
     
  13. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Тут ошибка:
    Код (Text):
    1. $res = mysql_query("SELECT id, type FROM type_ob ORDER BY id", $db);
    2. $row = mysql_fetch_array($result);
    mysql_fetch_array пытается брать из переменной $result, но указатель на ресурс запроса был дан в переменную $res строкой выше.
     
  14. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    ну это тут быстро печатала ошиблась а так там все нормально
     
  15. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Боюсь даже спрашивать но все же ... :)

    Я как вижу по коду ты 2 раза используешь mysql_fetch_array($res);
    Это действительно так или же опять опечатка???

    Если это правда то все понятно. После 1 вызова этой ф-и первая строчка данных помещается в массив.Когда ты используешь DESC последнее значение помещается в массив.

    Затем ты уже в цикле выводишь оставшиеся значения.Убери первый вызов $row = mysql_fetch_array($res); оставь только тот который используется в цикле.
     
  16. oksana

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

    С нами с:
    16 мар 2012
    Сообщения:
    221
    Симпатии:
    0
    блин =) как я сама это не заметила, теперь все правильно, большое спасибо! Видимо ПОПОВ сказывается
     
  17. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Здесь столько Попова ругают, мне его даже жаль стало :)
     
  18. chpokcherepok

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

    С нами с:
    31 мар 2012
    Сообщения:
    10
    Симпатии:
    0
    а не проще обозначить 2е переменные запроса и вывести их в цикле?
    первый пример по мне с ошибками, да и смысл генерировать по 3и одинаковых потом ссылки из запроса таблицы...