Version 1: Der Variablen $Satz wird eine Zeichenkette direkt zugewiesen. Damit reagiert die If-Anweisung in der function suchefeldindex() richtig.
Version 2: Der Variablen $Satz wird die gleiche Zeichenkette durch Einlesen von Datei zugewiesen. Damit reagiert die If-Anweisung in der function suchefeldindex() fehlerhaft.
PHP-Script:
- Code: Select all
<html>
<head>
</head>
<body>
<?php
$OW = new OIKOS_WERBE();
echo "Version 1 richtig: <br>"; //beachte $Satz:
$Satz = '"WerbFirmenname";"WerbStrasse";"WerbPlz";"WerbOrt";"WerbEmail";"WerbNname";"WerbTel";"WerbFax"';
echo '<p>'.$Satz.'</p>';//Test
$SatzFelder = explode(";", $Satz, 100);
$SatzFelderanz = count($SatzFelder);
echo "<p>SatzFelderanz = " . $SatzFelderanz . "</p>"; // Test
for ($i = 0; $i < $SatzFelderanz; $i++)
{
$SatzFelder[$i] = str_replace ('"', '', $SatzFelder[$i]);
$SatzFelder[$i] = trim ($SatzFelder[$i]);
echo "SatzFelder[" . $i . "]: >" . $SatzFelder[$i] . "< <br>";//Test
}
$WerbFirmennamei = $OW -> suchefeldindex ("WerbFirmenname", $SatzFelder);
echo "WerbFirmennamei: >" . $WerbFirmennamei . "< Ergebnis<br>";//Test ergibt richtig
echo "<br><br>";
echo "Version 2 mit Fehler: <br>";// Ursache siehe Einlesen von $Satz aus Datei:
$fp = fopen ("AdressenLadenEingabe.csv", "r");
$Satz = fgets ($fp);
fclose ($fp);
echo '<p>'.$Satz.'</p>';//Test
$SatzFelder = explode(";", $Satz, 100);
$SatzFelderanz = count($SatzFelder);
echo "<p>SatzFelderanz = " . $SatzFelderanz . "</p>"; // Test
for ($i = 0; $i < $SatzFelderanz; $i++)
{
$SatzFelder[$i] = str_replace ('"', '', $SatzFelder[$i]);
$SatzFelder[$i] = trim ($SatzFelder[$i]);
echo "SatzFelder[" . $i . "]: >" . $SatzFelder[$i] . "< <br>";//Test
}
$WerbFirmennamei = $OW -> suchefeldindex ("WerbFirmenname", $SatzFelder);
echo "WerbFirmennamei: >" . $WerbFirmennamei . "< Ergebnis<br>";//Test ergibt Fehler
class OIKOS_WERBE
{
function OIKOS_WERBE()
{
;
}
function suchefeldindex ($dbfeld, $satz)
{
$anz = count ($satz);
echo "suchefeldindex: dbfeld = ".$dbfeld." anz = " . $anz."<br>";//Test
$index = -1;
$lauf = 1;
$i = 0;
while (($lauf == 1) && ($i < $anz))
{
echo " satz[".$i."] = ".$satz[$i]."<br>";//Test
if ($dbfeld == $satz[$i])//<-- Dieses if reagiert unter bestimmten Bedingungen fehlerhaft!!!
{
$index = $i;
$lauf = 0;
}
$i++;
}
echo " i = ".$i."<br>";//Test
return ($index);
}
}
?>
</body>
</html>
Eingabedatei "AdressenLadenEingabe.csv":
- Code: Select all
"WerbFirmenname";"WerbStrasse";"WerbPlz";"WerbOrt";"WerbEmail";"WerbNname";"WerbTel";"WerbFax"
Wer kann meine Beobachtung bestätigen? Ich bitte ggf. um Beheben des Fehlers im PHP-Interpreter. Danke!