PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : for schleiffe tuht nix



dadie
30.12.2004, 10:00
Hi ,

Also ich baue ja ein Forum und da will ich ja MODs einbauen nun habe ich ne gute lösung gefunden nur es tuht sich nix alle Variablen haben einen Wert nur er will keine Schleiffe machen also habe ich woll ihrgentwass übersehn

hier ein Codesnipssel



for ($i=0; $i>$modanzahl; )

{

/* Wer ist den nun ein MOD */

$mods_des_forum = "SELECT `id`,`username`
FROM `user`
WHERE `id` LIKE '" . $mods['$i'] . "'
ORDER BY `id` ASC " ;

/* Prüfung ob DB Online | Verbindung besteht |
Versucht Verbindung erneut aufzubauen bei Trennung */

$mods_des_forum = mysql_query ( $mods_des_forum ) ;

if (!$mods_des_forum)
{
die('Ungültige Abfrage: ' . mysql_error()) ;
}
else
{


$mods_des_forum = mysql_fetch_assoc ($mods_des_forum) ;

echo "<a href=\"./profil.php?id=\" " . $mods_des_forum['id'] . " \" title=\" " . $mods_des_forum['username'] . " \" > " . $mods_des_forum['username'] . " </a>" ;
$i++ ;

}

}

Was ist an der Schleife Falsch ?

MFG

Dadie

Firzen
30.12.2004, 10:07
Was genau ist $modanzahl? Die Anzahl der Mods im Forum? Dann müsste es ja lauten:

for($i=0;$i<$modanzahl;){
//...
}

dead_orc
30.12.2004, 10:16
Bau mal vor $mods_des_forum = mysql_query ( $mods_des_forum ); ein echo $mods_des_forum; ein. Ich denke, der SQL-Befehl müsste lauten:
$mods_des_forum = "SELECT `id`,`username`
FROM `user`
WHERE `id` LIKE '" . $mods[$i] . "'
ORDER BY `id` ASC " ;

Ich würde BTW gerne mal wissen, wo der Unterschied zwischen mysql_fetch_array und mysql_fetch_assoc ist und wieso alle letzteres benutzen! (Der einzige Unterschied, den ich gefunden habe, ist, dass mysql_fetch_array auch ein nicht-assoziativen Array erzeugt, was IMO von Vorteil ist)

-CC-
30.12.2004, 10:36
for braucht 3 Argumente!

http://www.php.net/for

Lukas
30.12.2004, 10:49
for braucht 3 Argumente!

http://www.php.net/for
Das ist nur bedingt richtig. Z.B. würde
for($i = 0; $i < 20;)auch funktionieren. Da der letzte Teil allerdings fehlt, wird nicht bei jedem Durchlauf eine Aktion ausgeführt.

for($i = 0; $i < 20; $i++)
{
echo "$i\n";
}tut exakt das gleiche wie
for($i = 0; $i < 20;)
{
echo "$i\n";
$i++;
}

Übrigens: in C++ wird der Ausdruck
for(;;) als Endlos-Schleife verwendet.

dead_orc
30.12.2004, 11:08
Und wer dadies Skript genauer anguckt, wird im else-Block ein $i++; entdecken, wodurch es in for unnötig wird!
Und wenn du schon drauf linkst, hättest du dir den Artikel zu for auch ruhig durchlesen können - da steht eben das, was masterquest gepostet hat!

dadie
30.12.2004, 12:36
Tja das alles hat mir bisher nix geholfen irgentwie wird die For schleife Komplett Ignoriert wenn ich da z.b. $o++ ; reinbauen und später $o ausgebe ist $o Leer

mir scheint es fast so als würden alle Code teile in der Forschleife Ignoriert wenn das so weitergeht mach ich ne while + if schleife :(

dead_orc
30.12.2004, 12:41
Versuch mal, die Bedingung zu ändern in "$i<$modanzahl" (die eckige Klammer umdrehen). In meinen Augen ist das eine Endlosschleife!

dadie
30.12.2004, 13:55
Versuch mal, die Bedingung zu ändern in "$i<$modanzahl" (die eckige Klammer umdrehen). In meinen Augen ist das eine Endlosschleife!

Nöpp Bringt auch NIX
:(

EDIT: Aus mir unbegründlichen Grünnden geht nun die Schleife :confused: