Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   MySQL+PHP что-то не выходит с циклом при UPDATE (http://forum.oszone.net/showthread.php?t=252774)

koresaram 31-01-2013 07:46 2079055

MySQL+PHP что-то не выходит с циклом при UPDATE
 
добрый день.
имеется таблица с 4 полями (id, head, news, header) при этом в id стоят идентификаторы (не все и не по порядку то есть 2, 324, 345 и т.д.) в ячейке head и news тексты с разметкой html. ячейка header - пустая.

текст в ячейке head пресдтавляет собой html конструкцию вида
Код:

<b>Заголовок</b><br>Анонс новости
задача: вычленить из ячейки head текст Заголовка и прописать его в ячейку header. Почитал, что на эту тему пишут и говорят и выдал следующее:

PHP код:

<?php 
// Подключаемся 
$link mysql_connect($db$user$pass) ; 
if(!
$link ) die("Could not connect on connection part: ".mysql_error());
// Выбираем базу 
$db mysql_select_db($base $link ) or die("Could not select database: ".mysql_error()); 
$query "SELECT * FROM `publication_reform`"
$result mysql_query $query $link ); //считываем всю таблицу 
while ($row mysql_fetch_row($result)) 
$text $row[1];//присваиваем $text значение из ячейки с заголовком и анонсом 
$id=$row[0];//задаем переменной значение ячейки id из обрабатываемой строки. 
echo "$id<br>";//это для проверки просто, что переменная определилась. 
preg_match_all ("#<b>(.*)</b>#"$text$regs);//ищем соответствие на все что между тегами <B> 
$out $regs[1][0];//вынимаем из массива только текст без <B>. присваиваем это значение новой переменной $OUT иначе не выводится через echo. 
$query "UPDATE `publication_reform` SET `header` = '$out' WHERE `id`='$id'";//апдейтим таблицу. Записываем в пустую ячейку header заголовок (ID которой как бы сейчас обрабатывается)
$result mysql_query $query $link ); 
echo 
"$out inserted<br>";//тоже просто для проверки.
 
$i++; 

?>

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

Подскажите в чем дело?

koresaram 31-01-2013 13:26 2079303

данный вопрос разобрал с помощью знающих товарищей. дело оказалось в переменной $result которую я поставил в цикле. поскольку эта переменная уже была задействована при объявлении цикла while ($row = mysql_fetch_row($result)) то цикл не срабатывал. замена переменной в цикле на
PHP код:

$query "UPDATE `publication_reform` SET `header` = '$out' WHERE `id`='$id'";//апдейтим таблицу. Записываем в пустую ячейку header заголовок (ID которой как бы сейчас обрабатывается)
$update mysql_query $query $link ); 

привела к нужному результату.


Время: 15:51.

Время: 15:51.
© OSzone.net 2001-