ФорумПрограммированиеPHP для идиотов → while внутри for

while внутри for

  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 29 июля 2009 г. 17:52

    в таблице 2 записи.
    скрипт:

    $sql = mysql_query("SELECT * FROM news");
    for($j=0;$j<2;$j++)
    {
    while($words = mysql_fetch_array($sql))
    {
    echo $j.'<br>';
    }
    echo '-<br>';
    }


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

    0
    0
    -
    -


    что означает что while выполняется только при первой итерации цикла for. почему?
  • adw0rd

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

    Spritz 29 июля 2009 г. 17:54, спустя 2 минуты 24 секунды

    Mr.Pihto, а какой результат ты ждал? Тебе надо в фор пихать mysql_fetch_array($sql)
    Спустя 36 сек.
    и вообще, объясни зачем тебе фор?
    adw/0
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 29 июля 2009 г. 17:54, спустя 12 секунд

    я ждал

    0
    0
    -
    1
    1
    -
  • Cos

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

    Spritz 29 июля 2009 г. 17:55, спустя 24 секунды

    может потому-что он проходит весь массив $sql за первую итерацию for, в итоге при втором запуске условие while не истинно, вот оно и не выполняется
  • adw0rd

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

    Spritz 29 июля 2009 г. 17:58, спустя 3 минуты 2 секунды

    при первом обращении к mysql_fetch_array, он тебе возвращает первый результат и смещает указатель на следующую строку, далее ты вызываешь еще раз, он возвращает результат и достигает конца, после этого цикл оканчивается

    все это написано в мане  
    Спустя 81 сек.
    Выполни


    $sql = mysql_query("SELECT * FROM news");
    var_dump(mysql_fetch_array($sql));


    и покажи результат
    adw/0
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 29 июля 2009 г. 17:58, спустя 23 часа 59 минут 49 секунд

    спасибо. я про while не читал почти
  • adw0rd

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

    Spritz 29 июля 2009 г. 17:59, спустя 50 секунд

    Mr.Pihto, дело не в while, дело в [man]mysql_fetch_array[/man]
    adw/0
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 29 июля 2009 г. 18:05, спустя 6 минут 19 секунд

    короче mysql_fetch_array одноразовый )
  • adw0rd

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

    Spritz 29 июля 2009 г. 18:06, спустя 57 секунд

    Mr.Pihto, ты выполнишь то что я просил?)
    adw/0
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 29 июля 2009 г. 18:10, спустя 4 минуты 12 секунд

    уже. только 1 запись написало. или те содержимое интересно?)
  • adw0rd

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

    Spritz 29 июля 2009 г. 18:12, спустя 1 минуту 59 секунд


    уже. только 1 запись написало. или те содержимое интересно?)
    угу, мне нужно содержимое…

    выполни:


    $sql = mysql_query("SELECT * FROM news");
    while($row = mysql_fetch_array($sql)){
      var_dump($row);
    }
    adw/0
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 29 июля 2009 г. 18:18, спустя 5 минут 56 секунд

    ?
    пустота
    Спустя 15 сек.
    хуйня какаято. уно моменто
  • adw0rd

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

    Spritz 29 июля 2009 г. 18:19, спустя 54 секунды

    ну или выполни в консоли
    SELECT * FROM news
    adw/0
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 29 июля 2009 г. 18:27, спустя 8 минут 41 секунду

    гг. чето сломалось.. давай я тебе так расскажу)
    Спустя 147 сек.
    издец. я туплю) яж снёс все))))))
    Спустя 7 сек.
    аааааааа)
    Спустя 51 сек.

    array(12) { [0]=> string(3) "225" ["id"]=> string(3) "225" [1]=> string(3) "asf" ["name"]=> string(3) "asf" [2]=> string(7) "sdf
    " ["short"]=> string(7) "sdf
    " [3]=> string(7) "sdg
    " ["full"]=> string(7) "sdg
    " [4]=> string(5) "Scout" ["author"]=> string(5) "Scout" [5]=> string(10) "30.07.2009" ["date"]=> string(10) "30.07.2009" }
    Спустя 118 сек.
    зы щас там только 1 запись
  • adw0rd

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

    Spritz 29 июля 2009 г. 18:29, спустя 1 минуту 28 секунд

    Ну у тебя вообще одна запись?

    сделай
    SELECT * FROM news
    и
    SELECT count(*) FROM news
    adw/0

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