URL: https://www.overclockers.at/coding-stuff/php-mysql-problem_232394/page_2 - zur Vollversion wechseln!
(Kleines Nitpicking: du erhältst bei foreach alle Werte: in deinem Fall ist der Wert aber durch das POST senden des Browsers nicht vorhanden)Zitat von schizoIch versteh leider derzeit nicht, wie ich das Array wieder auswerten kann.
mit foreach erhalte ich nur jene Werte, welche ungleich NULL sind. Daher brauche ich entweder einen Standardwert, wenn die Checkbox nicht aktiviert ist oder eine Funktion, mit welcher ich die einzelnen Indizes ansteuern kann (diese hab ich bis jetzt leider vergeblich gesucht).
Hm, evt. funktioniert's nicht, weil er type="checkbox" mit type="hidden" vermischt?Zitat von RektalAd warum $_POST["parts"] NULL ist: nach deiner Analyse fällt mir nichts direkt ein. Hast du dir schon "var_dump($_POST);" angeschaut? Vielleicht ists ja woanders reingerutschtHast eh alle Errors aufgedreht und sicherheitshalber ins PHP error.log geschaut?
Zitat von RektalZitat von sk/\rwer weiß schon was im hintergrund für g'schäftln zwischen EA, ubi,... und m$ laufen?
damals hat auch keiner nach vista verlangt und schleichend wurde es immer mehr.
vielleicht genügt ein kleiner anruf vom steve bei john oder yves damit was ins rollen kommt. :ugly:
ZitatHm, evt. funktioniert's nicht, weil er type="checkbox" mit type="hidden" vermischt?
Ach, jetzt verstehe ich. Im urspruenglichen Beispiel hast du ja ueberhaupt keine Indizes gehabt:Zitat von schizoNein, ich bin über mehrere Beispiele gestoßen, in welchen mittels type="hidden" ein Standardwert definiert wurde. Das funktioniert auch ohne Arrays recht gut, doch sobald ein Array der Größe n vorhanden ist hast du n Werte + m Werte, bei welchen die Checkbox aktiv ist.
Der Grund, warums nicht funktioniert hat, war dass ich mich beim setzen der Indizes vertan habe.
wurde, wenn die Checkbox ausgewaehlt ist, ein Array mit zwei Werten, null und eins, generieren. Was du hier vermutlich gemeint hast ist:Code: HTML<input type="hidden" name="params[]" value="0"> <input type="checkbox" name="params[]" value="1">
Das wuerde dafuer sorgen, dass du bei ausgewaehlter Checkbox nur einen Wert im Array bekommst, naemlich eins.Code: HTML<input type="hidden" name="params[0]" value="0"> <input type="checkbox" name="params[0]" value="1">
Das habe ich erkannt, ja. Komischerweise waren in dem Beispielen, die ich gefunden habe nie indezes angegeben. Daher bin ich davon ausgegangen, dass automatisch inkrementiert wird.
Jetzt stehe ich vor dem Problem, wie ich bei der Ausgabe Indizes angeben kann. $_POST liefert ja nur jene Einträge retour, in welchen die checkbox gesetzt war. Das checkbox Array hat jedoch die richtigen indezes. Nur hilft mir gar_Rumpf eben nicht weiter 
edit: so, ich umgeh das Problem jetzt mit der hidden Variante und einem default Wert != 0. Damit erhalte ich zumindest ein Array mit der richtigen Größe. Allerdings kann ich mir nicht vorstellen, dass das ganze nicht einfacher/schöner zu realisieren ist.
Du kannst den Namen der Checkbox name="irgendwas_Id" dynamisch setzen beim durchiterieren wobei die Id die Id des jeweiligen Eintrags ist. Nachher sammelst dir die Variablen zam, extrahierst dir via strpos und substr oder preg_match die ID und du hast genau die Ids die du benötigst - sparst dir auch die hidden Felder.
Zitat von ObermotzDu kannst den Namen der Checkbox name="irgendwas_Id" dynamisch setzen beim durchiterieren wobei die Id die Id des jeweiligen Eintrags ist. Nachher sammelst dir die Variablen zam, extrahierst dir via strpos und substr oder preg_match die ID und du hast genau die Ids die du benötigst - sparst dir auch die hidden Felder.
ich hab wieder mal ein mir unerklärliches Problem:
Code: PHP$number_teams=5; if ($teamsize==4){ $k=0; $l=$k+1; while ($l<$variants){ $m=$l+1; while ($m<$variants){ $n=$m+1; while ($n<$variants){ $teamratio=mysql_result($nextgame_result,$k,"ratio")+mysql_result($nextgame_result,$l,"ratio") +mysql_result($nextgame_result,$m,"ratio")+mysql_result($nextgame_result,$n,"ratio"); $o=0; while ($o<$number_teams){ if (abs($gameratio/2-$teamratio)<abs($diffratio[$o])){ /* $p=$number_teams-$o-2; while ($p>=0){ $q=$p+1; $ratio1[$q]=$ratio1[$p]; $ratio2[$q]=$ratio2[$p]; $diffratio[$q]=$diffratio[$p]; $team1[$q][0]=$team1[$p][0]; $team1[$q][1]=$team1[$p][1]; $team1[$q][2]=$team1[$p][2]; $team1[$q][3]=$team1[$p][3]; $p--; } */ $ratio1[$o]=$teamratio; $ratio2[$o]=$gameratio-$teamratio; $diffratio[$o]=$gameratio/2-$teamratio; $team1[$o][0]=$k; $team1[$o][1]=$l; $team1[$o][2]=$m; $team1[$o][3]=$n; $o=$number_teams; } $o++; } $n++; } $m++; } $l++; } }

omg, das ist ja 5-Fach exponentiell und du machst in der 3. Potenz mysql_result-Zugriffe 
Das kann man bestimmt einfacher lösen, was willst du mit dem Code erreichen, grob umschrieben?
Ich möchte mir in dem Codesnippet anhand einer in mysql hinterlegten Spielertabelle optimale Teamzusammensetzungen ausrechnen. $k, $l, $m, $n sind hier die Zeilen aus einer SQL Abfrage, welche die Spieler für das nächste Spiel ausgibt.
So langsam ist der Code auch nicht. In dem Beispiel wird die while ($n...) Schleife gerade 35 mal durchlaufen, da ich die Schleifen nicht komplett durchiteriere, sondern im Falle $n bei $m+1 beginne.
Ich würds mir gerne anschauen, wenn die Code-Formatierung:
- 2 spaces statt 8 verwenden würde (reicht vollkommen hier)
- lange Zeilen sinvoll umbricht, das man einfach einen Überblick hat
Plus es wäre super, die Zeilen auch noch minimieren (eigene Zeile für { und } muss nicht). Aber vermutlich ist es gscheiter gleich einen patebin zu verwenden 
Das Ding gehört einfach refactored. Die Benutzung von mysql_result ist obsolet - wenn er mit assoziativem Array arbeiten würde, dann würden ihm die Variablen $k, $l und $n wegfallen, er könnte mit foreach und den mächtigen Arrayfunktionen von PHP arbeiten und das ganze wär sogar lesbar.
Btw here you are 
Hab den vorigen Post editiert, thx 
Zitat von Obermotz[...] den mächtigen Arrayfunktionen von PHP [...]
Ich hab schon gewartet 
// Aber wenn schon PHP dann bitte gscheid, so hab ichs gemeint 
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026