update in een loop

Status
Niet open voor verdere reacties.

johnny1963

Gebruiker
Lid geworden
23 okt 2006
Berichten
82
wie kan mij helpen
met het volgende

PHP:
$query=" SELECT * FROM narr_turnier_".$onlyconsonants." WHERE turnier_jaar =".$jaarnu." ORDER BY punkten desc";
$result=mysql_query($query);
$num=mysql_num_rows($result);

$i=1;
while ($i <= $num) {

$query1="UPDATE narr_turnier_".$onlyconsonants."  SET rang='".$i."' WHERE turnier_jaar =".$jaarnu."";
mysql_query($query1) or die (mysql_error());


++$i;
}

hoe kan ik nu bij rang de plaats nummer nu krijgen zoals 1 2 3 4 5 6 7 waar de punkten (Punten) beginnen bij het hoogst aantal.
dit hierboven geeft mij als antwoord het aantal rijen in de kolom rang in dit geval dan overal een 7

mvg john
 
Laatst bewerkt door een moderator:
Krijg je geen foutmelding?
Regel 12 bevat namelijk ongeldige code

Dit moet zijn
PHP:
$i++;
 
PHP:
$query = "SELECT * FROM narr_turnier_".$onlyconsonants." WHERE turnier_jaar =".$jaarnu." ORDER BY punkten desc";
$result=mysql_query($query);
$num=mysql_num_rows($result);
 
for($i = 0; $i < $num; $i++)
{
    $query1= "UPDATE narr_turnier_".$onlyconsonants."  SET rang='".$i + 1."' WHERE turnier_jaar =". $jaarnu;
    echo $query1;
    //mysql_query($query1) or die (mysql_error());
}
Wat is het resultaat nu? (De query wordt alleen geëchood, niet uitgevoerd)
 
Laatst bewerkt:
is exact hetzelfde effect het werkt dus ook niet

je had allen moete schrijven

Code:
for($i = 0; $i < $num; $i++) {

$query1="UPDATE narr_turnier_".$onlyconsonants."  SET rang='".$i."' WHERE turnier_jaar =".$jaarnu."";
mysql_query($query1) or die (mysql_error());

echo $query1;


}
 
Laatst bewerkt:
Ik zorg er niet voor niets voor dat de query niet uitgevoerd wordt :(

Het gaat mij er om wat er in de query staat, oftewel het resultaat want hij echoed steeds de queries voor je.
Daarnaast is het niet exact hetzelfde want de hele lus is anders.

Wat ik je nu laat doen heet debuggen, oftewel code echoën om te kijken of variabelen de waardes bevatten die je verwacht.
 
oke ik krijg dit als antwoord

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\voor_server_narrengilde\php\login\turnier_bambini_garde_zufugen.php on line 703

hier heb je een link waar je jou code kunt zien werken
http://www.narrengilde-kohlscheid.de/php/login/punktenliste_tanzturnier_zufugen.php

wel even Starter "Bambini Garde" zufugen selecteren en op gwahlt klikken dan kun je daarna onderaan invullen

sorry hij doet het touwens wel waarom ik die fout kreeg weet ik niet.
 
Laatst bewerkt door een moderator:
nee krijg geen foutmelding
ik krijg namelijk
Code:
UPDATE narr_turnier_bambini_garde SET rang='0' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='1' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='2' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='3' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='4' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='5' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='6' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='7' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='8' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='9' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='10' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='11' WHERE turnier_jaar =2012UPDATE narr_turnier_bambini_garde SET rang='12' WHERE turnier_jaar =2012
probeer zelf maar eens op de link die ik eerder gaf

sorry had een foutje gemaakt toch de foutmelding

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/php/login/turnier_bambini_garde_zufugen.php on line 687

en 687 is

$query1= "UPDATE narr_turnier_".$onlyconsonants." SET rang='".$i + 1."' WHERE turnier_jaar =". $jaarnu;
 
Laatst bewerkt door een moderator:
ik heb m al

hier is ie

Code:
$query = "SELECT * FROM narr_turnier_".$onlyconsonants." WHERE turnier_jaar =".$jaarnu." ORDER BY punkten desc";
$result=mysql_query($query);
$num=mysql_num_rows($result);

$i=1;
while ($i < $num) {
$id=mysql_result($result,$i,"id");
$query1="UPDATE narr_turnier_".$onlyconsonants."  SET rang='".$i."' WHERE id =".$id."";
mysql_query($query1) or die (mysql_error());

++$i;
}


rest me nog een ding hoe het moet als iemand dezelfde punte heeft die moet dan dezelfde plaats hebben.
 
Dit is niet waar, er zit alleen een klein verschil in.
Weer wat geleerd :thumb:

De foutmelding komt omdat ik haakjes ben vergeten
PHP:
$query1= "UPDATE narr_turnier_".$onlyconsonants."  SET rang='". ($i + 1) ."' WHERE turnier_jaar =". $jaarnu;

Zo te zien worden de posities juist geüpdatet, dus kun je de query wel weer uit laten voeren:
PHP:
$query = "SELECT * FROM narr_turnier_".$onlyconsonants." WHERE turnier_jaar =".$jaarnu." ORDER BY punkten desc";
$result=mysql_query($query);
$num=mysql_num_rows($result);
 
for($i = 0; $i < $num; $i++)
{
    $query1= "UPDATE narr_turnier_".$onlyconsonants."  SET rang='". ($i + 1) ."' WHERE turnier_jaar =". $jaarnu;
    mysql_query($query1) or die (mysql_error());
}
 
Ja dankjewel nou heb ik m

Code:
$query = "SELECT * FROM narr_turnier_".$onlyconsonants." WHERE turnier_jaar =".$jaarnu." ORDER BY punkten desc";
$result=mysql_query($query);
$num=mysql_num_rows($result);

$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"id");

$query1="UPDATE narr_turnier_".$onlyconsonants."  SET rang='".($i + 1)."' WHERE id =".$id."";
mysql_query($query1) or die (mysql_error());

$i++;
}

nogmaals bedankt
dat andere los ik wel zelf op
groet john
 
Ah ja, de WHERE is natuurlijk te algemeen :) Daardoor krijgen alle rijen met dat jaartal uiteindelijk hetzelfde getal
 
Heb nog een beter oplossing voor als de punten gelijk zijn krijgen
de personen dezelfde plaats(rang)

PHP:
$sql=mysql_query("SELECT * FROM narr_turnier_".$onlyconsonants." WHERE turnier_jaar =".$jaarnu." GROUP BY punkten desc") ;
$total_rows=mysql_fetch_assoc($sql);
$num_rows = mysql_num_rows($sql);
	
	if($total_rows>1)
{

$i=0;
	while ($i < $num_rows) {$id=mysql_result($sql,$i,"punkten");
	$query1="UPDATE narr_turnier_".$onlyconsonants." SET rang ='".($i + 1)."' WHERE punkten =".$id." && turnier_jaar =".$jaarnu." ";
	mysql_query($query1) or die (mysql_error());

$i++;

}
}

Dit is voor degene die het kan gebruiken

Met vriendelijk groet en bedankt allen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan