Scriptfehler aber wo?

2Pac

Erfahrenes Mitglied
Hallo Leute ich habe ein Script programmiert für eine Clan - HP um deren Clanwars einzutragen. Es handelt sich hierbei um einen Fifa-Clan d.h. es gibt bis zu 12 verschiedene Ergebnisse. Und bei jedem Ergebniss kanne s 1-3 Ergebnisse geben. Diese einzutragen geht einwandfrei... Nur nun will ich auch das von jedem Spieler die Statistiken eingetragen werden. Es werden im Formular folgende Variablen übermittelt: $hust = wieviele Spiele es sind (für die for schleife) dann $spieler1-$spieler12 $gegner1-$gegner12 $tor1-$tor12 $gegentor1-$gegentor12
das heisst das sind dann etwa 48 Variablen. So nun mache ich folgendes:
Ich connecte zuerst zur Datenbank das ist auch richtig sonst würde er ja den CW net eintragen...
Dann machen ich die variable $gamer zu einem array so etwa:
$gamer = array($spieler1,$spieler2,$spieler3,$spieler4,$spieler5,$spieler6,$spieler7,$spieler8,$spieler9,$spieler10,$spieler11,$spieler12);
Als nächstes sage ich dann das die variable $a = "gamer"; ist
Das ganze dient dazu das ich die statistiken der Spieler auslesen kann denn ich mache einen query zur Datenbank und dann lese ich aus wo der nickname gleich $($a)[$p] ist. Das soll eine Variable Variable sein. So siehts dann aus:
$res = mysql_db_query("$DatabaseName", "siege,niederlagen,unentschieden,tore,gegentore from statistiken where nickname='$($a)[$p]'");
Der nächste Schritt wäre dann das auslesen der Daten aus der Datenbank:
$s = mysql_result($res, $p, "siege"); //[z.B.]
OK ich habe nun alles ausgelesen und versuche nun die statistiken zu errechnen bzw. dann einzutragen dazu mache ich folgendes:
Ich kontrolliere bei jedem ergebnis ob das 1. ergebnis oder das 2. ergebnis höher ist bzw. ob sie gleich sind. Was dann höher ist je nachdem der Spieler bekommt dann ein Sieg zugeschrieben. Im Quelltext etwa so:
$r1 = array($e11,$e12,$e13,$e14,$e15,$e16,$e17,$e18,$e19,$e110,$e111,$e112);
$r2 = array($e21,$e22,$e23,$e24,$e25,$e26,$e27,$e28,$e29,$e210,$e211,$e212);
$b = "r1";
$c = "r2";
if ("$($b)[$p]" < "$($c)[$p]")
{
$s2 = $s;
$u2 = $u;
$n2 = $n + 1;
$t2 = $t + "$($b)[$p]";
$gt2 = $gt + "$($c)[$p]";
}
if ("$($b)[$p]" == "$($c)[$p]")
{
$s3 = $s2;
$u3 = $u2 + 1;
$n3 = $n2;
$t3 = $t2 + "$($b)[$p]";
$gt3 = $gt2 + "$($c)[$p]";
}
if ("$($b)[$p]" > "$($c)[$p]")
{
$s4 = $s3 +1;
$u4 = $u3;
$n4 = $n3;
$t4 = $t3 + "$($b)[$p]";
$gt4 = $gt3 + "$($c)[$p]";
}
Das ganze befindet sich natürlich in ner for schleife die von 0 anfängt und bis $hust also die Spiele die sind geht. So aber das klappt nicht so ganz wies soll. Kann mit bitte bitte bitte jemand helfen.... Hab schon geguckt obs was ähnliches gibt im Forum 0 nix da....

MfG ICH ;D
 
So aber das klappt nicht so ganz wies soll
Soso und was genau geht nicht ? Wie sehen etwaige Fehlermeldungen aus ?

Also zwei Dinge die mir beim spontanen Überfliegen spanisch vorkommen.

Als nächstes sage ich dann das die variable $a = "gamer"; ist
Mit diese Anweisung hat die Variable $a den String "gamer" zum Inhalt. Ich denke nicht, dass war es was du bezwecken wolltest, oder doch ?

$res = mysql_db_query("$DatabaseName", "siege,niederlagen,unentschieden,tore,gegentore from statistiken where nickname='$($a)[$p]'");
Ich kenn ja diese anderen Schreibweisen für mysql_querries nicht aber warum definiert ihr nicht bitte alle erstma in ner Variable das query à la
PHP:
$query = "SELECT * FROM tabellenname WHERE spate-xy = 'diesunddas'";
und führt das dann über mysql_query aus. Weil ich sehe bei dir nirgends ein SELECT...die Angabe aller Spalten könntest du dir über einen * sparen.

So hoffe geholfen zu haben ansonsten poste halt nochens.
 
naja das mit dem select is ja nur nebensächlich das klappt ja so :)

zur 1. Frage:
naja ich wollte halt ne Variable Variable machen und das geht ja nunmal so oder ? also ich kenns so das man erst die variable mit nem string besetzt z.B. $a = "gamer"; Dann kann man ja sagen $aa = ... dann wäre das unter $aa = der variable $gamer oder nicht? weisst du weil ich habe praktisch variablen wie:
$spieler1
$spieler2
$spieler3
$spieler4
$spieler5
$spieler6
.........
$spieler12
und auf diese will ich per for schleife aufgreifen und ich kann ja schlecht sagen $spieler$k (k in dem fall die variable aus der for schleife) wennde es nicht so ganz verstanden hast ruhig nochmal nachfragen :D

zur 2. Frage: was nicht geht. Nunja das eintragen der statistiken halt geht nicht. Es wird nichts in die MySQL tabelle eingetragen Bei den jeweiligen Spielern... Fehlermeldungen kommen keine. Nur meine programmierte fehlermeldung kommt. ich hab ja gesagt am ende mysql_affected_rows() und wenn die grösser sind als 0 dann erfolgreich wenn == 0 dann sage Fehler...
 
zu der array sache. Du definierst das gamer array mit
PHP:
$gamer = array(...)

dann rufst du die einzelnen elemente mit $gamer[0] - $gamer[k-1] auf wobei k die Anzahl der Elemente ist. Da brauchste net noch irgendne Variable zu definieren ;)

Zu der MySQL Geschichte, wenn halt nix in die DB geschrieben wird, dann lass doch mal deine Querrys zum in die DB schreiben sehen und nicht die zum auslesen ;)
 
Sicher kannst du das machen, packst das ganze in eine while oder for Schleife und lässt es so aussehen
PHP:
$i = Anzahl der Elemente im Array // Lässt sich durch count() oder sizeof ermitteln.
$k = 0;
while($k < $i) {
 echo $gamer[$k];
 $k++
}
Wenns so nicht geht müssen um das $k in der Array Klammer halt noch ' ' drum herum aber gehen tut das auf jeden Fall, wie sollte man sonst dynamische Arrays erzeugen ?
 
hmmm ;) k ich versuchs so aber das mit dem array erzeugen ist ricvhtig gewesen so:
$gamer = array($spieler1,$spieler2,$spieler3,$spieler4,$spieler5,$spieler6,$spieler7,$spieler8,$spieler9,$spi
eler10,$spieler11,$spieler12); ??
 
Also ich hab das jetzt mal getestet. Also wenn ich $gamer[$k] benutze trägt ers net in die Datenbank ein bei affectet rows = 0 also keine veränderung in der DB und wenn ich $gamer['$k'] benutze dann kommt immer folgender fehler...:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /usr/...../cwonlinebringen.php on line 544

P.S: jetzt hab ich versucht $wert = $gamer['$k']; zu setzten da kommt keine Fehlermeldung mehr aber er brauch erstmal ewig und ausserdem kommt wieder die selbst proggramierte Fehlermeldung d.h. affectet rows = 0 :( man woran liegt das nur :(
 
Zuletzt bearbeitet:
also poste jetzt erstmal bitte den kompletten quelltext oder
häng ihn am besten als Datei an deinen Post an, sonst kommen
wir hier nicht weiter.

Jona
 
Formular:
PHP:
for....{
echo "<input type=\"...\" name=\"spieler".($i+1)."tore\";
}

Auswertung:

PHP:
for.....{
$spieler_tore = "spieler".($i+1)."tore";
$tore_insert = $$spieler_tore;
mysql_query(Insert INTO......)
}


so würde es gehen ;) wenn du soetwas haben willst,wie ich vermute...
 
Zurück