Hallo Comm.
Ich habe ein Problem:
Also ich habe 2 Arrays mit folgenden werten:
Das erste Array wurde per Textarea übertragen via explode in Einzelteile zerlegt.
Das 2. Array sind Werte aus einer DB und sollen mit den eingegeben Werten verglichen werden.
Ich habe vor mir ein par nette Spielereien für ein Browsergame zu programmieren. In diesen Fall eine art Rangliste. Wenn jetzt eins der Werte aus Array 2 anders ist als die aus Array 1 dann soll der Eintrag aktualisiert werden.
dazu folgender code:
Welche Werte die einzelnen Zahlen bei ${werte_.$i} haben seht ihr hier:
0 & 1: sind uninteressant
2: Allianztag der Allianz des Spielers
3: Nickname des Spielers
4: Spielerzweig, den der Spieler gewählt hat
5: die Gesamtpunktzahl des Spielers
Bei $infoarray handelt es sich um einen Array, in dem der sting bereits in einzelne Zeilen zerlegt wurde.
Beim array $namen handelt es sich um Spielernamen aus der Datenbank.
Mein Problem ist nun. Wie ihr oben sehen könnt sind die Werte die verglichen werden bei ALLEN gleich . Also sollte die Bedingung bei if ein FALSE ausgeben und der Spieler wird nicht geupdatet.
Nun funktioniert das eben nicht. Obwohl die Werte gleich sind, kommt man immer wieder in die if Klausel rein und das Programm updatet quasi den Spieler. Was er ja nicht soll, weil die Werte ja gleich sind.
Das ist jetzt nicht unbedingt dramatisch, aber Warum verhält PHP sich so. würde schon gerne wissen, was ich übersehe.
Ich schreibe den code auch gerne nochmal sauberer wenn ihr wollt, aber bitte gib mir jemand einen Tipp.
MfG Flenkium
Ich habe ein Problem:
Also ich habe 2 Arrays mit folgenden werten:
Code:
Array ( [0] => 1 [1] => - [2] => >Trd< [3] => Norfi [4] => Krieger [5] => 62285060 )
und
Array ( [beruf] => Krieger [allianz] => >Trd< [ges_pkt] => 62285060 )
Das erste Array wurde per Textarea übertragen via explode in Einzelteile zerlegt.
Das 2. Array sind Werte aus einer DB und sollen mit den eingegeben Werten verglichen werden.
Ich habe vor mir ein par nette Spielereien für ein Browsergame zu programmieren. In diesen Fall eine art Rangliste. Wenn jetzt eins der Werte aus Array 2 anders ist als die aus Array 1 dann soll der Eintrag aktualisiert werden.
dazu folgender code:
Code:
for($i=0;$i<count($infoarray);$i++){
${werte_.$i} = explode(' ',$infoarray[$i]);
//Hier wird geprüft, ob es den Spieler schon in der DB gibt
if(@in_array(${werte_.$i}[3],$namen)){
${result_.$i} = mysql_query("SELECT beruf,allianz,ges_pkt FROM users
WHERE name = '". ${werte_.$i}[3] ."'");
${row_.$i} = @mysql_fetch_assoc(${result_.$i});
/* Besonders diese if Funktion bereitet mir Kopfschmerzen */
if(${row_.$i}['allianz']!=${werte_.$i}[2] || ${row_.$i}['ges_pkt'] != ${werte_.$i}[5] ||
${row_.$i}['beruf'] != ${werte_.$i}[4]){
$b++; // Die ist hier um zu zählen wie viele Spieler aktualisiert wurden
mysql_query("UPDATE users SET allianz='". ${werte_.$i}[2] ."',
beruf='". ${werte_.$i}[4] ."', ges_pkt='". ${werte_.$i}[5] ."',
WHERE name='". ${werte_.$i}[3] ."'");
}
}else{
//Hier wird der Spieler gespeichert, wenn er noch nicth vorhanden ist.
//habe ich jetzt mal weg gelassen
}
}
0 & 1: sind uninteressant
2: Allianztag der Allianz des Spielers
3: Nickname des Spielers
4: Spielerzweig, den der Spieler gewählt hat
5: die Gesamtpunktzahl des Spielers
Bei $infoarray handelt es sich um einen Array, in dem der sting bereits in einzelne Zeilen zerlegt wurde.
Beim array $namen handelt es sich um Spielernamen aus der Datenbank.
Mein Problem ist nun. Wie ihr oben sehen könnt sind die Werte die verglichen werden bei ALLEN gleich . Also sollte die Bedingung bei if ein FALSE ausgeben und der Spieler wird nicht geupdatet.
Nun funktioniert das eben nicht. Obwohl die Werte gleich sind, kommt man immer wieder in die if Klausel rein und das Programm updatet quasi den Spieler. Was er ja nicht soll, weil die Werte ja gleich sind.
Das ist jetzt nicht unbedingt dramatisch, aber Warum verhält PHP sich so. würde schon gerne wissen, was ich übersehe.
Ich schreibe den code auch gerne nochmal sauberer wenn ihr wollt, aber bitte gib mir jemand einen Tipp.
MfG Flenkium
Zuletzt bearbeitet: