Въпрос за цикъла for

DirectX

Registered
PHP:
<? 
include 'connect.db.php';
$query = mysql_query("SELECT id FROM `sobstvenici` where `godina`='2010-2011'")or die(mysql_error()."<br />Грешка: ".__LINE__); 
$broi=mysql_num_rows($query); // бройм колко са собствениците 

for($a=1; $a<$broi+1; $a++) {

$sql = "UPDATE `sobstvenici` SET `ks`='$a' where `godina`='2010-2011'";
echo $sql;
}
$result = mysql_query($sql)or die(mysql_error()."<br />Грешка: ".__LINE__);
if($result == true){
			echo 'всичко е наред';
				
}
else {
			echo "възникна грешка..";
}

?>
ето това ми е кода; цака е тази брой колко са записите, за всеки запис прави 1, 2, 3 .... зависимост колко са те и накрая ми update-ва едно поле. Но проблема е там че когато в цикъла сложа echo $a; ми изкарва примерно 1,2,3... в зависимост от броя на редовете;
когато сложа кода за ъпдейт пак си работи
PHP:
UPDATE `sobstvenici` SET `ks`='1' where `godina`='2010-2011'UPDATE `sobstvenici` SET `ks`='2' where `godina`='2010-2011'UPDATE `sobstvenici` SET `ks`='3' where `godina`='2010-2011'UPDATE `sobstvenici` SET `ks`='4' where `godina`='2010-2011'
Но в MySQL излиза в даденото поле числото 4 в случая ... що така се получава :?
 
Така е, кода ти изменя $sql до 4 и накрая изпълнява заявката с 4.Разгледай си хубаво кода. :)
 
Е, бутни заявката в цикъла. Така как искаш да ти попълни всички редове. Кода се изпълнява последователно. Когато има нещо след цикъл, то първо се изпълнява цикъла до край и чак тогава се продължава кода надолу.
 
relax4o каза:
Е, бутни заявката в цикъла. Така как искаш да ти попълни всички редове. Кода се изпълнява последователно. Когато има нещо след цикъл, то първо се изпълнява цикъла до край и чак тогава се продължава кода надолу.
дори всичко да е в заявката пак излиза 4 накрая :!:
@аlex3 - да разбрах си грешката, а как по-точно да я поправя :P
 
Дори ако е вътре, то пак ще я ъпдейтне на 1, на 2 и т.н.

Само още не разбирам каква е целта на заявката.Ако може още малко да ми обясниш. :D :)
 
Сега ще обесня: целта е следната в таблицата имам записи да речем 20 (имена) и всеки си има различно ID целта ми е с този код да ги обходя всичките и да им дам пореден номер (1,2,3,4...20) който няма нищо общо с ID-то защото то може да е (2,3,5,10,23,445...); не й става докато се вкарва записа да го правя предходния номер+1, защото ако е изтрит записа се губи една позиция :) т'ва ми е целта :)
 
Няма никаква нужда да ги броиш колко са! То самата идея да им записваш тези поредни номера, е безмислено, но ти си знаеш най-добре.

PHP:
$query = mysql_query("SELECT id FROM `sobstvenici` where `godina`='2010-2011'") or die(mysql_error()."<br />Грешка: ".__LINE__); 

$a = 1;

while($row = mysql_fetch_assoc($query)){
    $sql = "UPDATE `sobstvenici` SET `ks`='$a' where `godina`='2010-2011' AND `id` = '".$row['id']."' ";
    mysql_query($sql) or die(mysql_error()."<br />Грешка: ".__LINE__); 

    $a++;
}
 
exec каза:
Няма никаква нужда да ги броиш колко са! То самата идея да им записваш тези поредни номера, е безмислено, но ти си знаеш най-добре.

PHP:
$query = mysql_query("SELECT id FROM `sobstvenici` where `godina`='2010-2011'") or die(mysql_error()."<br />Грешка: ".__LINE__); 

$a = 1;

while($row = mysql_fetch_assoc($query)){
    $sql = "UPDATE `sobstvenici` SET `ks`='$a' where `godina`='2010-2011' AND `id` = '".$row['id']."' ";
    mysql_query($sql) or die(mysql_error()."<br />Грешка: ".__LINE__); 

    $a++;
}
мерси много за помощта !!! :oops:
но т'ва което аз бях започнал го използвах от една друга част на сайта и си мислих че ще влезе в действие и за това :)
мерси отново :)
 
С онази заявка, която беше написал, реално обновяваш всички редове, за които godina е равно на 2010-2011. Така първия път като мине през цикъла, всички записи имат ks=1, после всички записи се обновяват с ks=2 и т.н. За да обновиш всеки ред по отделно, трябва да ги обновяваш един по един и да използваш някакъв уникален идентификатор какъвто е id номера.
 

Back
Горе