Hallo zusammen,
hier gibbet ja sicher auch den ein oder anderen, der sich mit PHP auskennt.
Ich hab da ein Problem.
Folgendes Script:
Zitat$filename = "testiperdi.csv";
$datensatz = array();
$fp = fopen($filename, "r");
while( ($csv = fgetcsv($fp, null, ';') ) != false )
{
$datensatz = array('id' => $csv[0], 'benutzer' => $csv[1], 'vorname' => $csv[2], 'nachname' => $csv[3], 'abteilung' => $csv[4], 'persnr' => $csv[5], 'stempelzeit' => $csv[6], 'terminal' => $csv[7], 'ereignis' => $csv[8], 'pruefung' => $csv[9], 'code' => $csv[10], 'bemerkung' => $csv[11], 'editvon' => $csv[12], 'edit' => $csv[13], 'erfassungszeit' => $csv[14]);
if($csv[8] != "Pause")
$v = 1;
else
$v=0;
echo "Datensatz: $v";
echo "</br>";
}
Die Abfrage funzt einfach nicht. Ich versuche abzuprüfen, ob in $csv[8] auch mal "Pause" steht.
Ich bekomme aber immer den wert 1 für $v.
Lasse ich mir $csv[8] aber ausgeben, steht da sehr wohl ab und zu "Pause" drin.
Wo liegt das Problem?
Es ist egal, ob ich $csv[8] nehme, oder $datensatz["ereignis"]...
Steht wirklich Pause drin oder Pause<blank> oder ähnliches?
Versuche es mit
if($csv[8] != trim("Pause"))
oder gleich mit Regex (preg_match).
Also meines Erachtens steht wirklich "Pause" drin.
if($csv[8] != trim("Pause"))
führt auch zum gleichen Ergebnis.
Mit preg_match das gleiche Spiel...
Zitat$suche = '/\bHPause\b/i';
if (preg_match($suche, $csv[8]))
führt zu $v=0
Zitat$suche = '/\bPause\b/i';
if (preg_match($suche, "Ich gehe heute in die Pause"))
führt zu $y = 1
Ich begreife das nicht...
Lasse ich mir über
echo $csv[8];
den Text ausgeben, wird unter anderem "Pause" ausgegeben.
Checke ich beim besten Willen nicht...
Was macht denn
$suche = '/Pause/';
if (preg_match($suche, $csv[8]))
?
bringt auch durchgehend $v = 0
ZitatDatensatz: 0 / Herein
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Hinaus
Datensatz: 0 / Herein
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Hinaus
Datensatz: 0 / Herein
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Hinaus
Datensatz: 0 / Herein
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Hinaus
Datensatz: 0 / Herein
Datensatz: 0 / Pause
Datensatz: 0 / Zur�ck
Datensatz: 0 / Hinaus
Datensatz: 0 / Herein
Datensatz: 0 / Pause
Weil ich meinem Augen nicht traue (ich sitze seit heute morgen am Debuggen von fremden php-Code und da verschwimmt irgendwann einiges), habe ich deinen Code von ganz oben mal genommen und auf einem Beispiel CSV in dem wirklich "Pause" steht, getestet und er funktioniert einwandfrei. Der Code hat keine Fehler. Es muss am CSV liegen.
Zum debuggen eignet sich bei sowas immer ein var_dump um auch nicht sichtbare Zeichen zu erkennen. Zusätzlich würde ich immer geschweifte Klammern empfehlen.
var_dump($csv[8],$csv[8]=="Pause");
if($csv[8] != "Pause") {
$v = 1;
} else {
$v=0;
}
Die geschweiften Klammern benötgt man natürlich nicht. preg_match sollte auch bei nicht sichtbaren Zeichen ein Ergebnis bringen (richtig verwendet).
var_dump hilft sicher.
auch wieder ein interessantes Mysterium...
var_dump($csv[8],$csv[8]=="Pause");
bringt
Zitatstring(27) "Hinein/Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(11) "Pause" bool(false)
string(13) "Zur�ck" bool(false)
string(13) "Hinaus" bool(false)
string(13) "Herein" bool(false)
string(11) "Pause" bool(false)
Auch wenn es seltsam wäre: Gibt es ein Zeichensatzproblem? Es werden viel zu viele Zeichen gezählt.
Edit: Kannst du mal das CSV einstellen?
ZitatEs werden viel zu viele Zeichen gezählt.
Das ist mir auch schon aufgefallen. Da aber rein gar nichts angezeigt wird, hab ich mir nicht viel dabei gedacht.
Da müsste ja dann " Pause " oder so stehen, oder?
@marvin78: Die Klammern waren nur ein Hinweis wegen der Lesbarkeit.
@IKaRuS1978: Das würde var_dump mit ausgeben.
Hm. Das CSV ist in Ordnung. Der Zeichensatz ist ANSI. Sollte funktionieren und in meiner Testumgebung macht das Skript damit auch genau das, was es soll:
string(13) "Hinein/Hinaus" bool(false) Datensatz: 1 / Hinein/Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
string(6) "Herein" bool(false) Datensatz: 1 / Herein
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(5) "Pause" bool(true) Datensatz: 0 / Pause
string(6) "Zurück" bool(false) Datensatz: 1 / Zurück
string(6) "Hinaus" bool(false) Datensatz: 1 / Hinaus
Ich bin raus. Nicht, weil ich keine Lust mehr hätte aber mir fehlt es gerade an Zeit. Hat du eine Möglichkeit, das auch einem anderen Server zu testen?
@Lonie: Das macht man bei solchen ifs in der Regel durch Einrückung.
Unfassbar....jetzt geht es.
Ich hab die Datei neu hochgeladen auf den Server. Und plötzlich ist sie nicht mehr 13Kb groß, sondern 4,9kb und läuft....
Da muss irgendwas beim Upload oder sonstwie in die Hose gegangen sein.
Vielen Dank an alle.
Ihr habt mir sehr geholfen. Auf die Idee, die CSV komplett neu hoch zu laden, wäre ich als letztes gekommen.
In der Regel hält man sich an Coding Standards, in dem Fall PSR-2. Naja, hauptsache das Problem ist beseitigt ;)
In der Regel und in der realen Welt macht man das, was effizient ist. Damit soll es gut sein.