ФорумПрограммированиеPHP для идиотов → Запутался в условии цикла! Нужна помощь профессионала!

Запутался в условии цикла! Нужна помощь профессионала!

  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:13

    Пыхеры, выручайте, ни чего не пойму, условие правильное а он выводит мне какую-то "чушь".

    хост: localhost
    юзер: barosha
    база: barosha
    таблица: tb_users
    поля: id username referer visits и т.д.

    Создаю таблицу и делаю вывод пользователей и их визитов:

    <table align="center">
    <tr>
    <td colspan="2">Статистика</td>
    </tr>
    <tr>
    <td>Пользователь</td>
    <td>Кликов</td>
    </tr>

    <?php
    // Вывод статистики пользователей не привлеченных по реферальной системе
    $con = mysql_connect("localhost","barosha","passwd");
    mysql_select_db("barosha",$con);
    $result = mysql_query("SELECT * FROM tb_users ORDER BY -visits");
    $myrow = mysql_fetch_array($result);

    do
    {
    if($myrow['referer'] == "")
    break;
    if($myrow['id'] < 1) break;
    else
    {
    printf("<tr>
    <td align='center'>%s</td>
    <td align='center'>%s</td>
    </tr>",$myrow['username'],$myrow['visits']);
    }
    }
    while(mysql_fetch_array($result));
    ?>

    </table>


    и вот вам результат:

    Статистика
    Пользователь Кликов
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158
    antiscam         158

    ………..          …..

    и т.д.

    Что не так?
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:21, спустя 7 минут 52 секунды

    Не do…while, а просто while(mysql_fetch_array($res)); используй.
    И оформляй код в теги
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:22, спустя 1 минуту 10 секунд

    ORDER BY -visits

    Зачем там минус?
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:33, спустя 10 минут 38 секунд

    Зачем там минус?

    Минус формирует числа: снизу идет наименьшее а сверху наибольшее
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 6 октября 2008 г. 19:34, спустя 1 минуту 30 секунд

    AdmBuxonly, учи мат часть - ASC - меньшие вначате, DESC - большие в начале
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:35, спустя 16 секунд

    <?php 
    // Вывод статистики пользователей не привлеченных по реферальной системе
    $con = mysql_connect("localhost","barosha","sberbank");
    mysql_select_db("barosha",$con);
    $result = mysql_query("SELECT * FROM tb_users ORDER BY -visits");
    $myrow = mysql_fetch_array($result);
    $i = 1;
    while(mysql_fetch_array($result) and $i = 10);
    {
    $i++;
    if($myrow['referer'] == "") break;
    if($myrow['id'] <= 1) break;
    else
    {
    printf("<tr>
    <td align='center'>%s</td>
    <td align='center'>%s</td>
    </tr>",$myrow['username'],$myrow['visits']);
    }
    }
    ?>



    Он теперь выводит только одного…. с наибольшим посещением…(-visits)
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:38, спустя 3 минуты 28 секунд

    Я же тебе говорю, минус убери.
    $result = mysql_query("SELECT * FROM tb_users ORDER BY visits DESC");

    while(mysql_fetch_array($result) and $i = 10);

    Что это за бред? Какое $i = 10 в условии? Может $i <= 10?
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:40, спустя 1 минуту 36 секунд

    Что это за бред? Какое $i = 10 в условии? Может $i <= 10?


    Я и так = и так <= пробовал, а он что так, что так… реально бред…
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:41, спустя 1 минуту 32 секунды

    Короче.

    $result = mysql_query("SELECT * FROM tb_users ORDER BY visits DESC");
    while ($myrow = mysql_fetch_assoc($result))
    {
    printf("<tr>
    <td align='center'>%s</td>
    <td align='center'>%s</td>
    </tr>",$myrow['username'],$myrow['visits']);
    }


    Все.
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:51, спустя 9 минут 57 секунд

    <?php 
    mysql_select_db("barosha",$con);
    $result = mysql_query("SELECT * FROM tb_users ORDER BY visits DESC");
    $myrow = mysql_fetch_array($result);
    while(mysql_fetch_array($result));
    {
    printf("<tr>
    <td align='center'>%s</td>
    <td align='center'>%s</td>
    </tr>",$myrow['username'],$myrow['visits']);
    }
    ?>
    </table>


    Все сделал, а выводит вот, посмотрите: http://buxonly.com/while.php
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 6 октября 2008 г. 19:52, спустя 1 минуту 15 секунд

    Я не пойму, почему он всех не выводит, а только одного? Все же правильно, вы же видите?
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 6 октября 2008 г. 20:03, спустя 10 минут 56 секунд

    while($myrow = mysql_fetch_array($result));


    даже скопипастить не можешь нормально, пазор!
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 6 октября 2008 г. 20:06, спустя 2 минуты 25 секунд

    бля я вахуе ну далиж рабочий код куда ты его еще улучшаешь
    наделал глупастей не понимая что ваще происходит а потом жалуесся

    $myrow = mysql_fetch_array($result);

    чё это?
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 6 октября 2008 г. 21:34, спустя 1 час 28 минут 41 секунду

    Я думаю что тип поля visits  стоит VARCHAR(символьный), поставь INT

    Это видно по обратной сортировке, 9 8 7 6 и т.п.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!