Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с циклами
 
 автор: Dazzl   (22.02.2012 в 11:02)   письмо автору
 
 

Здравствуйте, такая проблема на странице 2 цикла for, но работает только верхний(первый), а нижний не работает, если я закаментирую верхний нижний начинает работать, процес работы обоих циклов выборка данных из бд. в чем дело?

  Ответить  
 
 автор: Роккер Руслан   (22.02.2012 в 11:04)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:02)
 

Код в студию)

  Ответить  
 
 автор: Sfinks   (22.02.2012 в 11:06)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:02)
 

Абстрактная модель кубической комнаты предполагает что все ее ребра равны, но они разные!

Примерно тоже самое...... Как вам что-то подсказать без кода? Код покажите?

  Ответить  
 
 автор: Dazzl   (22.02.2012 в 11:12)   письмо автору
 
   для: Sfinks   (22.02.2012 в 11:06)
 

for ($r=1; $r <= $strok; $r++)
{
$t = mysql_fetch_assoc($result1);


}echo $t['num_xy_blok'];
for ($y=1; $y <= $strok; $y++)
{
$i = mysql_fetch_assoc($result1);


}echo $i['num_xy'];

  Ответить  
 
 автор: Киналь   (22.02.2012 в 11:18)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:12)
 


<?php
for ($r=1$r <= $strok$r++)
 {
     
$t mysql_fetch_assoc($result1);
 }

echo 
$t['num_xy_blok'];

for (
$y=1$y <= $strok$y++)
 {
     
$i mysql_fetch_assoc($result1);
 }
echo 
$i['num_xy'];
?>


В первом цикле вы прошли все строки результата запроса, указатель остался после последнего. Во втором цикле просто нечего читать.

  Ответить  
 
 автор: Dazzl   (22.02.2012 в 11:20)   письмо автору
 
   для: Киналь   (22.02.2012 в 11:18)
 

А этот указатель как-нить откатить нельзя?

  Ответить  
 
 автор: Киналь   (22.02.2012 в 11:22)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:20)
 

Можно. Но в целом задача действительно странная, что вы хотите получить в итоге?

  Ответить  
 
 автор: Dazzl   (22.02.2012 в 11:26)   письмо автору
 
   для: Киналь   (22.02.2012 в 11:22)
 

А все спасибо тут нужна была mysql_free_result! все ок! я откатил первый запрос и оба цикла заработали

  Ответить  
 
 автор: Sfinks   (22.02.2012 в 11:45)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:26)
 

а mysql_free_result() тут причем?
mysql_free_result() высвободит всю память, занимаемую результатом,
на который ссылается переданный дескриптор result. 

mysql_free_result() нуждается в вызове только в том случае, если вы всерьёз обеспокоены тем,
сколько памяти используют ваши запросы к БД, возвращающие большое количество данных. Вся
память, используемая для хранения этих данных автоматически очистится в конце работы скрипта.

  Ответить  
 
 автор: Dazzl   (22.02.2012 в 12:00)   письмо автору
 
   для: Sfinks   (22.02.2012 в 11:45)
 

И все же пока я не откатил первый результат запроса второй цикл не заработал!

  Ответить  
 
 автор: Sfinks   (22.02.2012 в 11:26)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:20)
 

Если вам нужно использовать данные из одного запроса к БД несколько раз, то занесите их в массив, а потом сколько угодно с ними работайте.
<?
$res 
mysql_query'...' );
$data = array();
while(
$row mysql_fetch_array($res)) $data[] = $row;
и вся выборка в массиве $data

  Ответить  
 
 автор: Dazzl   (22.02.2012 в 11:30)   письмо автору
 
   для: Sfinks   (22.02.2012 в 11:26)
 

Оч интересно но я не понимаю как это?(

  Ответить  
 
 автор: Sfinks   (22.02.2012 в 11:52)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:30)
 

mysql_query возвращает вам таблицу. Так?
Функциями mysql_fetch_assoc(), mysql_fetch_row(), mysql_fetch_array() вы перебираете эту таблицу построчно.
Циклом
while($row = mysql_fetch_array($res)) $data[] = $row;
вся эта таблица загоняется в двумерный массив и к ней можно обращаться напрямую, по интексам:
$data[0] - первая строка таблицы
$data[3][6] - червертая строка, 7ой столбец
$data[3]['num_xy_blok'] - четвертая строка, столбец 'num_xy_blok'.

  Ответить  
 
 автор: Dazzl   (22.02.2012 в 11:59)   письмо автору
 
   для: Sfinks   (22.02.2012 в 11:52)
 

Спасиб! ценное инфо!!

  Ответить  
 
 автор: Sfinks   (22.02.2012 в 11:20)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:12)
 

  Ответить  
 
 автор: Dazzl   (22.02.2012 в 11:22)   письмо автору
 
   для: Sfinks   (22.02.2012 в 11:20)
 

??? вы нечего не написали. у вас пусто!

  Ответить  
 
 автор: Sfinks   (22.02.2012 в 11:42)   письмо автору
 
   для: Dazzl   (22.02.2012 в 11:22)
 

Потому что я ошибся и стер )))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования