Script erzeugt falschen Wert!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
Hi!
Ersteinmal m?chte ich alle user warnen, dei was gegen viele Schleifen und verschachtelte WHiles haben, davon werden gleich eine menge tag/folgen">folgen!
Zudem habe ich manchmal etwas unverst?ndliche Fehlermeldngen usw programmiert, aber die interessieren hier ja niemanden, oder? :P
Es w?re super, wenn der Code, der gleich folgen wird, ?berarbeitet werden k?nnte, ich finde den Fehl?er eifnach nicht...>_<
Technische Daten:
Gespeichert wird im Format:
ItemID|Menge;ItemID|Menge;[...]
Das Script soll diese Eintragen. Ist vielleicht nicht die einfachste methode, die ich gew?hlt habe, aber die platzsparenste..zumindest in der Datenbank..^^"
So, was wird ausgegeben/eingetragen, wenn ich folgendes Aufrufe, udn dei DB noch leer ist?
Aufruf ist beidemale folgender:
insert_item(2);
insert_item(3);
11 (= 2|1;3|1)
Wenn ich es dann nochmals aufrufe wird folgendes ausgegeben:
(Item is schon da;) 1 - -Enditem:1;3|1
Splitfromsize0:
Splitfromsize[$i]: 2
(Item is schon da;) 1 - -Enditem:1;3|1
Splitfromsize0:
Splitfromsize[$i]: 3
Ich verstehe niht warum! ich fidne den Fhler einfach nciht... T_T
Hier der Source:
<?php ################################################################### #Function: Insert_Item($itemid); # ################################################################### function insert_item($itemid) { $name = $_SESSION['name']; $daten1 = mysql_query("SELECT `item` FROM `user` WHERE `nickname` = '$name'") OR die("ERROR_WITH_QUERY: Kann die Items nnicht auslesen. - " . mysql_error()); while($row = mysql_fetch_array($daten1)) { $item = $row[0]; if($item == "") { $insertitem = "UPDATE `user` Set `item` = '" . $itemid . "|1' WHERE `nickname` = '$name'"; mysql_query($insertitem); return 1; } } if(preg_match("/;/", $item)) { $split = explode(";", $item); $count = count($split); } Else { $enditem = $item . ";" . $itemid . "|1"; $insertitem = "UPDATE `user` Set `item` = '" . $enditem . "' WHERE `nickname` = '$name'"; mysql_query($insertitem); return 1; } while($i < $count) { ## ##W?hrend die Items durchgez?hlt werden. ## # #Variablen nochmals Splitten, um ItemID von menge zu trennen; $splitfromsize = explode("|", $split); $counted = count($splitfromsize); # #W?hrend $z = 0 < $counted while($z < $counted) { #Wenn $counted durch zwei teilbar ist: # if($z % 2 == 0) { # #z ist duch zwei teilbar: ItemId; if($splitfromsize[$z] = $itemid) { # #Splifromsize[$z] entspricht der Itemid!Wenn nicht muss ein neues Item angelegt werden. ;) while($y < $count) { if($y < $i) { $enditem = $enditem . $split[$y]; } Elseif($y > $i) { $enditem = $enditem . $split[$y]; } Else { if($splitfromsize[0] != "") { if($splitfromsize[$i] != "") { $x = $i - 1; $biggeritem = $splitfromsize[$x] . "|" . $splitfromsize[$i] + 1 . ";"; $enditem = $enditem . $biggeritem; } Else { $x = $i - 1; die("Splitfromsize[$i] ist leer! - '" . $splitfromsize[$i] . "' - '" . $splitfromsize[$x] . "'"); } } Else { $x = $i - 1; die("Splitfromsize[0] ist leer! - '" . $splitfromsize[$x] . "'"); } } $y++; } $insertitem = "UPDATE `user` Set `item` = '$enditem' WHERE `nickname` = '$name'"; $iteminsertcomplete = mysql_query($insertitem) OR die("ERROR_WITH_QUERY: Konnte Item nicht eintragen! - " . mysql_error()); return "(Item is schon da;) 1 - -Enditem:" . $enditem . "<br>Splitfromsize0:" . $splitfromsize[$x] . "<br>Splitfromsize[$i]: " . $splitfromsize[$i] . "<br><br>"; } Else { $insertitem = "UPDATE `user` Set `item` = '" . $itemid . "|1' WHERE `nickname` = '$name'"; $iteminsertcomplete = mysql_query($insertitem) OR die("ERROR_WITH_QUERY: Konnte Item nicht eintragen! - " . mysql_error()); return "1"; } } # #$z erh?hen! $z++; } $i++; ## ##Ende der Schelife; Zum beenden $i = $count + 1; ## } } ?>
Danke Im Voraus!
?dit: Entfernen von ausversehenen i Tags.
Beitrag ge?ndert am 9.04.2006 13:59 von adrians -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Entschuldigung bitte, aber das ist nicht so ein Problem, wie die deinen es sind.
Hier geht es nicht um die Frage:
Wie update ich eine MySQL tabelle?
sondern um ein etwas komplexeres Script.
?brigens: Der Thread kann geschlossen werden. Ich dachte er w?re in der Versenkung verschwunden.
Das Problem hat sich schon seit l?ngereem erledigt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage