Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 11.05.2011
Сообщений: 71

Не работают два цикла while подряд

21.04.2014, 01:06. Показов 2485. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
include("bd.php");
 
if(isset($_GET['email']))
 {
     $email = $_GET['email'];
 }
 
if(isset($_GET['login']))  
{$login = $_GET['login'];} 
 
$result = mysql_query("SELECT email,login FROM users",$db);
$myrow = mysql_fetch_array($result);
 
 
do
   {
    if($myrow['email'] == $email)
        {
            echo "no";
        
        }
            else
        {
            echo "yes";
        }
   }
while($myrow = mysql_fetch_array($result));
 
 
 
do
   {
    if($myrow['login'] == $login)
    {
        echo "no";
 
    }
    else
    {
        echo "yes";
    }
   }
while($myrow = mysql_fetch_array($result));
 
?>
Ошибки никакой нет, данный обработчик для ajax.
Если закомментировать какой-то из циклов, то один работает нормально, в противном случае - ничего не происходит.
Что в данном коде не так?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2014, 01:06
Ответы с готовыми решениями:

Два цикла WHILE, идущие в коде подряд...
Всем привет :senor: ! Появился вот такой вопрос: - Есть код: $data = mysql_query(&quot;SELECT * FROM table&quot;); // Выбираю данные из...

Как работают два цикла for ? поясните код
кусочек кода :) for (int i=0; i&lt;n; i++) for (int j=i; j&lt;n; j++) if (A&gt;max) Переменная i стартует с 0, происходит проверка 0 меньше...

Если ввести один символ, то итерация цикла выполняется сразу два раза подряд
while (getchar()) printf(&quot;Итерация цикла.\n&quot;); Если ввести 1-ин символ, то итерация цикла выполняется сразу два раза подряд. Если...

5
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
21.04.2014, 07:20
попробуй так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$i=0;
while($myrow=mysql_fetch_array($result)) $mysql_array[$i++]=$myrow;
$i=0;
 
do
   {
    if($mysql_array['email'] == $email)
        {
            echo "no";
        
        }
            else
        {
            echo "yes";
        }
   }
while($mysql_array[$i++]);
 
 
$i=0;
do
   {
    if($mysql_array['login'] == $login)
    {
        echo "no";
 
    }
    else
    {
        echo "yes";
    }
   }
while($mysql_array[$i++]);
PHP
1
$myrow = mysql_fetch_array($result)
Это присваивание работает только один раз
0
0 / 0 / 0
Регистрация: 11.05.2011
Сообщений: 71
21.04.2014, 11:47  [ТС]
Спасибо )
Но увы, не работает.
Наверно лучшим и быстрым решением, будет разбить эти циклы на два файла.
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
21.04.2014, 12:08
используйте "foreach", с ним должно работать без проблем
0
 Аватар для V@D!k
249 / 249 / 98
Регистрация: 26.07.2010
Сообщений: 1,685
21.04.2014, 12:34
Цитата Сообщение от pr1me222 Посмотреть сообщение
while($myrow = mysql_fetch_array($result));
попробуйте во втором цикле переименовать переменную, например
PHP
1
while($row = mysql_fetch_array($result));
0
48 / 48 / 26
Регистрация: 31.05.2011
Сообщений: 139
21.04.2014, 12:54
Лучший ответ Сообщение было отмечено pr1me222 как решение

Решение

pr1me222, вся проблема в том, что mysql_fetch_array() использует внутренний указатель результата. Например:
запрос вернул 5 строк. Изначально внутренний указатель результата установлен на первую строку. Когда вызывается mysql_fetch_array(), эта функция возвращает первую строку, а указатель перемещает на вторую. Когда mysql_fetch_array() вызывается во второй раз, она возвращает вторую строку, а указатель перемещает на третью. Когда mysql_fetch_array() вернул пятый результат, указатель устанавливается за (а не на) пятый результат, и в последующие попытки вызова mysql_fetch_array() вернет false.

В вашем коде после того, как отрабатывает первый цикл, mysql_fetch_array() начинает возвращать false. Теоретически перед выполнением второго цикла можно вызвать mysql_data_seek() но лучше поместить все в один цикл.

Замечания не по вопросу:
- в данном случае лучше использовать while(){}, а не do{}while();
- расширение mysql устарело и скоро будет удалено из PHP. Используйте mysqli или PDO
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2014, 12:54
Помогаю со студенческими работами здесь

Имеются ли в последовательности два идущих подряд нулевых числа или три подряд одинаковых числа
44. Даны целые числа k, k,...,k (m=20). Имеются ли в последовательности два идущих подряд нулевых числа или три подряд одинаковых числа

Программа спрашивает у пользователя чему равны два выражения 12+3 и 19-9 и не выходит пока пользователь не даст ДВА ВЕРНЫХ ОТВЕТА ПОДРЯД. Если пользов
Программа спрашивает у пользователя чему равны два выражения 12+3 и 19-9 и не выходит пока пользователь не даст ДВА ВЕРНЫХ ОТВЕТА ПОДРЯД....

Две подряд идущие процедуры не работают
Здравствуйте. Написал такой код. Процедуру Count и Summa по отдельности прекрасно работают. Но если их вызов разположить друг за другом (не...

Два энтера подряд
Здравствуйте! Бывают случаи когда при копировании текста с интернета все абзацы разделены двумя энтерами (между ними отступ). Как...

Зачем два кондёра подряд?
Часто вижу схемы а даташитах, где стоит два параллельных кондера между питанием и землей. Например, 100uF, 100nF Википедиа говорит,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru