Zum Inhalt springen

PHP Foreach Problem im Script!!!


XXNicoRyckersXX

Empfohlene Beiträge

Hallo ich habe seit einiger Zeit ein Script bei mir auf der Hompage D.F.F.L Deutsche-Fun-Fifaliga laufen, was soweit auch Funktioniert. Ich erkläre mal das Script. Wir sind eine Fifa Online Liga und haben eine Automatische Teamauswahl der freien Teams, sprich eine Liste wo die Freien Teams aufgelistet sind, dort makiert man ein Team und gibt seine ICQ Nr. an das Script überträgt dann den User Namen und die ICQ Nr automatisch in die Trainerliste ein. Desweiteren arbeiten wir mit dem LMO=Liga Manager Online und dem Script ergpost. Um im Ergpost ein ergebniss einzutragen was dann automatisch in die Tabelle eingetragen wird muss der Name im LMO in der Notiz zur Manschaft eingetragen sein. Genau da liegt das Problem, der User Name wird nicht in den LMO(Tabelle) eingetragen, ich bekomme dort folgende Fehlermeldung:

Warning: Invalid argument supplied for foreach() in /var/www/clients/client623/web4009/web/usr_web/pkinc/public/lmo/addon/classlib/classes/liga.class.php on line 388 Warning: Invalid argument supplied for foreach() in /var/www/clients/client623/web4009/web/usr_web/pkinc/public/lmo/addon/classlib/classes/liga.class.php on line 486

Ich weiss einfach nicht mehr weiter, da ich mich mit dieser Foreach Funktion nicht auskenne. Wer kann mir helfen dieses Script ordentlich zum laufen zu bekommen? Ich habe schon soviel versucht und mehrere Foren durchstöbert aber niemand war bereit mir zu Helfen. Ich hoffe hier ist jemand der mir helfen kann. Ich kann euch dann die entsprechenden Dateien gerne zu kommen lassen.

Also das steht in meiner Zeile 388:

foreach($iniData["Teams"] as $key=>$value) {  

Und das in Zeile 486:

foreach ($optionDetails as $detailsKey=>$detailsValue) {  

Das ganze läuft über zwei Dateien einmal die Verarbeitung_123.php, Teamtake.php und eine Datenbank Tabelle. Dazu gehören dann noch ein paar andere php Dateien die aber soweit funktionieren. Wer würde sich die mal ansehen? Ich kann sie euch gerne hier Posten?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 51
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Top-Benutzer in diesem Thema

Schau wo die Variablen deklariert werden, in deinem Fall müssten die Daten wohl aus der Datenbank kommen, das könnte dann z.B. so aussehen:


$optionDetails = mysql_fetch_array($query);
[/php]

$iniData["Team"] wird wohl aus einer Konfigurationsdatei ausgelesen (zumindest lässt der Name darauf schließen), vll mit parse_ini_file().

Du könntest auch mal vor dem foreach() ein print_r($variablenName) setzen, dann siehst du den Inhalt der Variablen und erkennst wenn es kein Assoziativer Array ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit der Datenbank an sich kann ich nichts anfangen, wenn dann brauche ich schon den Source Code (die .php Datei). Allerdings solltest du dich, wenn du so etwas betreiben willst schon selbst damit auskennen, denn das ist sicherlich nicht der letzte Bug und es werden bestimmt noch einige Sicheheitslücken aufkommen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich lege mich mal ganz weit aus dem Fenster, ich habe vor zig Jahren mal so ein Liga Script für einen Kunden angepasst und ich bin der Meinung, das

dieser Fehler durch die Text Datenbank ausgelößt worden ist. Das Script speicherte die Daten für Trainer etc in einer Textdatei die anschließend mit parse_ini ausgelesen worden ist, ich hatte damals die Functions für das schreiben der Werte und das auslesen neu geschrieben und damit war der Fehler behoben.

Wie gesagt ich lehne mich hier ausem Fenster aber ich bin mir sicher das es das gleiche Script war.

Link zu diesem Kommentar
Auf anderen Seiten teilen

mach vor der foreach Schleife ein


print_r($deinevariable);

die("stop");

Dann siehst Du was in der Variablen steht. Aber, wenn Du an solchen grundlegenden Dingen scheiterst, dann solltest Du kein Produktivsystem betreuen, denn damit ist Wahrscheinlichkeit sehr hoch, dass auch wirklich schwere Fehler in den Scripte sind, die man missbrauchen kann. Wenn ich solche Konstrukte sehe

if ($team_nr == '1') {$change = 'Team1'; $changeicq = 'Team1';}

else if ($team_nr == '2') {$change = 'Team2'; $changeicq = 'Team2';}

dann wird mir Angst und Bange, noch nie was von switch-case gehört? Außerdem kann man das ganze mit OOP oder wenigstens Funktionen strukturieren! Ebenso sollte man Ausgabe und Verarbeitung trennen. Mein Tipp wirf das alte Zeug weg und baue es strukturiert auf

Bearbeitet von flashpixx
Link zu diesem Kommentar
Auf anderen Seiten teilen

mach vor der foreach Schleife ein


print_r($deinevariable);

die("stop");

Dann siehst Du was in der Variablen steht. Aber, wenn Du an solchen grundlegenden Dingen scheiterst, dann solltest Du kein Produktivsystem betreuen, denn damit ist Wahrscheinlichkeit sehr hoch, dass auch wirklich schwere Fehler in den Scripte sind, die man missbrauchen kann. Wenn ich solche Konstrukte sehe

if ($team_nr == '1') {$change = 'Team1'; $changeicq = 'Team1';}

else if ($team_nr == '2') {$change = 'Team2'; $changeicq = 'Team2';}

dann wird mir Angst und Bange, noch nie was von switch-case gehört? Außerdem kann man das ganze mit OOP oder wenigstens Funktionen strukturieren! Ebenso sollte man Ausgabe und Verarbeitung trennen. Mein Tipp wirf das alte Zeug weg und baue es strukturiert auf

Ich habe auf meiner Seite alles normale Scripte laufen, das Script ist mal von irg jemanden geschrieben worden den ich persönlich nicht kenne. Kannst du mir das nicht vll umschreiben auf eine sichere Art, eine Funktionierende?

Link zu diesem Kommentar
Auf anderen Seiten teilen

So dann werde ich jetzt mal anfangen das alles umzuschreiben, vll kann mir ja jemand helfen.

Wie schreibe ich den diesen Code in Case um?

if ($team_nr == '1') {$change = 'Team1'; $changeicq = 'Team1';}

else if ($team_nr == '2') {$change = 'Team2'; $changeicq = 'Team2';}

in diesen PHP Code also die switch-Case

<?php
if ($i == 0) {
echo "i equals 0";
} elseif ($i == 1) {
echo "i equals 1";
} elseif ($i == 2) {
echo "i equals 2";
}

switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}
?>
[/PHP]

Ich bräuchte halt die erste Zeile im Switch-Case Format.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du meinst, jetzt fängst du an nicht gleich davon zu Sprechen, das wir deine Arbeit machen sollen, sondern du jetzt erst nur kleine Dinge nach und nach haben möchtest? Wir sind hier alle gerne bereit dir zu Helfen aber du scheinst anscheinend nicht die Lust/Zeit zu haben mit dem Problem selbst fertig zu werden. In diesem Fall gebe ich als Rat mit einen Freelancer, oder dergleichen, zu beauftragen der macht dir das in 1 Std. Möchtest du gerne es selbst lösen dann hast du schon selbst ein super Beispiel geschrieben wo du dich selbst versuchen kannst und anschließend deine Lösung posten sofern nach ausgiebiger Selbstprüfung es immernoch nicht klappen sollte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich würde gerne lernen wie ich zu einem ordentlichen Ziel komme. Und natürlich bin ich da auf Hilfe angewiesen. Ich wäre natürlich froh wenn ich jemanden finden kann der mir dabei unter die Arme greift sprich ein wenig erklärung anfangs Hilfe usw. ich habe ja die Dateien, nur so wie hier einige sagen sind sie nicht auf einem aktuellem Stand und mit veralteten Codes geschrieben. Ich wäre froh wenn ich wenigstens die Abfrage der DB(verarbeitung_123.php schonmal vernünftig habe. Für mich ist sowas ein Monats Projekt. Wenn es Leute gibt die das in einer Std fertig machen, wäre ich natürlich Froh so jemanden zu finden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...