Fehler in foreach
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfrage
argument
array
ausgangssituation
ausrufezeichen
code
dank
datei
ding
dokument
interpretieren
problem
sagen
steig
stufe
teil
text
tip
welt
zeile
-
Huhu ich hab folgendes Pronblem:
Warning: Invalid argument supplied for foreach() in /home/webpages/lima-city/testworld/html/a.php on line 63
Mein Skript:
<?php session_start(); if(!isset($_SESSION['username'])) { echo "Bitte erst <a href=\"login.html\">einloggen</a>"; exit; } $user = $_SESSION['user']; $welt = $_SESSION['welt']; $link = $_SESSION['link']; $ehrlich = $_POST["ehrlich"]; $leistung = $_SESSION['leistung']; $stufe = $_SESSION['stufe']; $datei = fopen("anfrage.txt","r+"); $anfrage = fgets($datei, 1000); $userdata = explode("|", $anfrage); fclose($datei); $da = fopen ("anfrage.txt","r+"); $zei = fgets($da,5000); $d = explode("!", $zei); fclose($da); $a = $d[1]; if ($ehrlich=="Ja") { $userdatei = fopen ("$userdata[3].txt","a"); fwrite($userdatei, $userdata[1]); fwrite($userdatei, " "); fwrite($userdatei, $userdata[2]); fwrite($userdatei, "|"); fclose($userdatei); $datei = fopen ("anfrage.txt","r+"); $zeile = fgets($datei,500); $data = explode("!", $zeile); $data[0] = " ";//tauscht die eingelesene 14 durch 1 aus $datei = fopen ("anfrage.txt","w+"); //leert die datei foreach($data as $dings)//durchläuft das array und schreibt jeden wert zurück in die datei { fwrite($datei, $dings." "); } fclose($datei); echo "Danke, $userdata[1] wurde eingetragen"; } else { $datei = fopen ("anfrage.txt","r+"); $zeile = fgets($datei,5000); $data = explode("!", $zeile); $data[0] = "";//tauscht die eingelesene 14 durch 1 aus $datei = fopen ("anfrage.txt","w+"); foreach($a as $dings) { fwrite($datei, $dings." "); } fclose($datei); echo "Danke, $userdata[1] wurde entfernt"; } ?> <body bgcolor="orange"> <br> <br> Zur <a href=index.html>Startseite</a> <br> <br> Zum <a href=anfrage.php>Anfragen Bereich</a>
Was mach ich falsch? o.O
Beitrag zuletzt geändert: 9.11.2009 15:51:48 von cbhp -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
...
interpretieren wir doch einfach mal diese Zeile:
Warning: Invalid argument supplied for foreach() in /home/webpages/lima-city/testworld/html/a.php on line 63
Ungültiges Argument in der foreach Schleife in Zeile 63 angegeben.
=> gehe zu Zeile 63.
$datei = fopen ("anfrage.txt","w+");
foreach($a as $dings) <= da haben wirs...
{
fwrite($datei, $dings." ");
}
fclose($datei);
danach siehst du: es muss etwas am $a falsch sein, da dings ja nur etwas zugewiesen werden soll:
$a = $d[1];
wie hast du es vorher gemacht?:
$data[0] = " ";
und? drauf gekommen?
achso: großer Tipp! Steig sofort auf mysql um. Ist nur von vorteil für dich..
-
Also mein problem ist dies:
Adrion|<a href=http://welt14.freewar.de/freewar/internal/fight.php?action=watchuser&act_user_id=1009>Adrion</a>|1gm|ds|!Adrion|<a href=http://welt14.freewar.de/freewar/internal/fight.php?action=watchuser&act_user_id=1009>Adrion</a>|1gm|ds|!Adrion|<a href=http://welt14.freewar.de/freewar/internal/fight.php?action=watchuser&act_user_id=1009>Adrion</a>|1gm|ds|!
Ich möchte jetzt gerne den 1. teil bis zum 1. Ausrufezeichen gelöscht wird ohne das beim 2. und 3. Teil das ausrufezeiichen und der Text gelöscht wird Aber wen ich diesen Skript:
else
{
$datei = fopen ("anfrage.txt","r+");
$zeile = fgets($datei,5000);
$data = explode("!", $zeile);
$data[0] = "";//tauscht die eingelesene 14 durch 1 aus
$datei = fopen ("anfrage.txt","w+"); //leert die datei
foreach($data as $dings)//durchläuft das array und schreibt jeden wert zurück in die datei
{
fwrite($datei, $dings." ");
}
fclose($datei);
echo "Danke, $userdata[1] wurde entfernt";
benutze gehen immer alle Ausrufezeichen weg wie kan ich das ändern da immer nur das ertse weg geht? -
testworld schrieb:
Also mein problem ist dies:
Adrion|<a href=http://welt14.freewar.de/freewar/internal/fight.php?action=watchuser&act_user_id=1009>Adrion</a>|1gm|ds|!Adrion|<a href=http://welt14.freewar.de/freewar/internal/fight.php?action=watchuser&act_user_id=1009>Adrion</a>|1gm|ds|!Adrion|<a href=http://welt14.freewar.de/freewar/internal/fight.php?action=watchuser&act_user_id=1009>Adrion</a>|1gm|ds|!
Ich möchte jetzt gerne den 1. teil bis zum 1. Ausrufezeichen gelöscht wird ohne das beim 2. und 3. Teil das ausrufezeiichen und der Text gelöscht wird Aber wen ich diesen Skript:
else
{
$datei = fopen ("anfrage.txt","r+");
$zeile = fgets($datei,5000);
$data = explode("!", $zeile);
$data[0] = "";//tauscht die eingelesene 14 durch 1 aus
$datei = fopen ("anfrage.txt","w+"); //leert die datei
foreach($data as $dings)//durchläuft das array und schreibt jeden wert zurück in die datei
{
fwrite($datei, $dings." ");
}
fclose($datei);
echo "Danke, $userdata[1] wurde entfernt";
benutze gehen immer alle Ausrufezeichen weg wie kan ich das ändern da immer nur das ertse weg geht?
$data = explode("!", $zeile); ->hier wird dein Ausrufezeichen gelöscht... das trennzewichen verschwindet...
dein erstes Problem ist: du kannst nicht 2 mal dasselbe dokument öffnen ineinander!!!
du musst zwischendurch die Datei schließen. Außerdem: hast du da nur 1 Zeile? und die ist auch nicht länger als 5000 zeichen?
so
2. belese dich zu Arrays
3. schreibe bitte diene Ausgangssituation. Den Code haben wir jetzt, jetzt brauchen wir eine typische Testdatei. einfach den Inhalt reinposten. Dann schreibst du, was du raushaben willst, sonst können wir dir gar nicht helfen... -
Ich meld mich dan hier auch nochmal... wollt nur mal sagen das ich nun auf mysql umgesprungen bin ;)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage