Antworten auf deine Fragen:
Neues Thema erstellen

Gästebuch - Undefined offset

S

streamline

Guest

Hallo,

habe bei meinem php-Code für ein Gästebuch ein Problem und finde den Fehler nicht.
Da ich noch nicht viel Erfahrung mit php habe, würde ich mich über Hilfe freuen.

Der Code:
PHP:
<?php
$beitrag = file("gaestebuch.txt");
krsort($beitrag);

foreach($beitrag as $ausgabe)
   {
   $ausgabe = stripslashes($ausgabe);
   $zerlegen = explode("|", $ausgabe);

   echo  "
   <table align=\"center\"
  border=\"1\" cellspacing=\"0\"
   cellpadding=\"5\" bordercolorlight=\"black\"
   bordercolordark=\"black\" width=\"50%\">
   <tr>
   <td>
  Von <a href=\"mailto:$zerlegen[0]\">$zerlegen[1]</a>
  am $zerlegen[2]
   </td>
   </tr>

   <tr>
   <td>
   $zerlegen[3]
   </td>
   </tr>
   </table><br>
   ";
   }
?>

Die Fehlermeldung ist:
Notice: Undefined offset: 1 in C:\xampp\htdocs\mggh\Einzelseiten\gaestebuch.php on line 178

Notice: Undefined offset: 2 in C:\xampp\htdocs\mggh\Einzelseiten\gaestebuch.php on line 179

Notice: Undefined offset: 3 in C:\xampp\htdocs\mggh\Einzelseiten\gaestebuch.php on line 185

die fehlerhaften Linien wären also
Von <a href=\"mailto:$zerlegen[0]\">$zerlegen[1]</a>
am $zerlegen[2]
$zerlegen[3]


Danke und Liebe Grüße
Katja
 

hub

nicht ganz neu hier

AW: Gästebuch - Undefined offset

Moin moin,

deine Fehlermeldung kommt, weil dein $zerlegen ein leeres Array ist. Du kannst dir an den Stellen die Variablen mal mit var_dump oder print_r ausgeben lassen. Einfacher wär ein Debugger ...

Gruß Ulli
 
S

streamline

Guest

AW: Gästebuch - Undefined offset

Moin moin,

deine Fehlermeldung kommt, weil dein $zerlegen ein leeres Array ist. Du kannst dir an den Stellen die Variablen mal mit var_dump oder print_r ausgeben lassen. Einfacher wär ein Debugger ...

Gruß Ulli

Danke für deine Antwort

Wo genau schreibe ich var_dump in den Code hinein?

LG
 

hub

nicht ganz neu hier

AW: Gästebuch - Undefined offset

Hab mal alles aufeinmal reingeschrieben ...
PHP:
<?php 
$beitrag = file("gaestebuch.txt"); 
krsort($beitrag); 
// test: sehen was kommt
echo "<pre>" . print_r($beitrag, true) . "</pre>";
foreach($beitrag as $ausgabe) 
   { 
   // test: sehen, obs richtig ist
 echo "vorher" . $ausgabe . "<br>";
   $ausgabe = stripslashes($ausgabe); 
 echo "nachher" . $ausgabe . "<br>";
   $zerlegen = explode("|", $ausgabe); 
   //  test: was ist wirklich im array?
   echo "<pre>" . print_r($zerlegen, true) . "</pre>";
   echo  " 
   <table align=\"center\" 
  border=\"1\" cellspacing=\"0\" 
   cellpadding=\"5\" bordercolorlight=\"black\" 
   bordercolordark=\"black\" width=\"50%\"> 
   <tr> 
   <td> 
  Von <a href=\"mailto:$zerlegen[0]\">$zerlegen[1]</a> 
  am $zerlegen[2] 
   </td> 
   </tr> 
   <tr> 
   <td> 
   $zerlegen[3] 
   </td> 
   </tr> 
   </table><br> 
   "; 
   } 
?>
Reicht das? wenn nicht, sag Bescheid.
Gruß Ulli
 

hub

nicht ganz neu hier

AW: Gästebuch - Undefined offset

Ich habe mir gerade nochmal deine Fehlermeldungen angeschaut. Wenn sie vollständig sind, funktioniert explode nicht wie gewünscht, da der gesamte String in Position 0 zu finden ist. Dort gab es keinen Index-Fehler. Die wahrscheinlichste Ursache ist, das kein "|" als Trenner vorhanden ist ...
 
S

streamline

Guest

AW: Gästebuch - Undefined offset

habe es mit dem Code mal probiert, da wird vorerst ausgegeben
Array
{
}

dann habe ich einen Testeintrag im Gästebuch gemacht und dieser wird mir dann ausgegeben, aber die Fehlermeldungen bleiben...
Code:
Array
(
    [1] => [email]xxx@gmail.com[/email]|Katja|22.11.2012 22:32:12|TEST
    [0] => 

)
[email]vorherkxxx@gmail.com[/email]|Katja|22.11.2012 22:32:12|TEST
[email]nachherxxx@gmail.com[/email]|Katja|22.11.2012 22:32:12|TEST
Array
(
    [0] => [email]xxx@gmail.com[/email]
    [1] => Katja
    [2] => 22.11.2012 22:32:12
    [3] => TEST
)
...

Sry steh da irgendwie auf der Leitung :kopfpatsch:

LG
 

hub

nicht ganz neu hier

AW: Gästebuch - Undefined offset

Oder die Zeile ist leer.
:rolleyes: Hast recht.

@streamline: bis dahin sieht das ja schon gut aus. Ich kanns gerade nicht testen und versuche desshalb mal einen Schuß ins Blaue:
Nimm mal zum Test deine Variablen aus dem String:
PHP:
"... Von <a href=\"mailto:" . $zerlegen[0] ."\">" . $zerlegen[1] . "</a>  ... "
[2] und [3] auch. Ich bin mir nicht sicher, ob es daran liegt, aber ich weiss, das ich Objekt-Eigenschaften so im String nicht abrufen kann.

Gruß Ulli
 
S

streamline

Guest

AW: Gästebuch - Undefined offset

Hab es jetz so geändert:
PHP:
   Von <a href=\"mailto:" . $zerlegen[0] ."\">" . $zerlegen[1] . "</a>

  am " .$zerlegen[2]  ."
   </td> 
   </tr> 
   <tr> 
   <td> 
   " . $zerlegen[3] . "
   </td>

ändert aber leider auch nichts..

LG
 

hub

nicht ganz neu hier

AW: Gästebuch - Undefined offset

Dann kann ih nur hoffen, das du keine schlaflose nacht hast. Testen kann ich das leider erst morgen früh :( .
Aber was mir spontan noch einfällt:
PHP:
Array
(
    [1] => xxx@gmail.com|Katja|22.11.2012 22:32:12|TEST
    [0] => 
)
du musst ausschließen, das etwas mit "nichts" auch nicht verarbeitet wird. Ich nehme mal an, das deine Testdaten/Eintrag angezeigt wird. Die Position 0 ist ein leerer String und verursacht diese Meldung ...
Klammere doch deine Auswertung vor explode einfach mit
PHP:
if (trim($ausgabe) != '') {
...
}
dann werden nur Zeilen mit Inhalt verarbeitet.

Gruß Ulli
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Gästebuch - Undefined offset

Alternativ kannst du der file()-Funktion auch das Flag FILE_SKIP_EMPTY_LINES geben, dann werden leere Zeilen ignoriert.


Duddle
 

hub

nicht ganz neu hier

AW: Gästebuch - Undefined offset

Alternativ kannst du der file()-Funktion auch das Flag FILE_SKIP_EMPTY_LINES geben, dann werden leere Zeilen ignoriert.
Simmt, ist kürzer und eleganter. Ich hatte meine Zweifel, ob file() mit FILE_SKIP_EMPTY_LINES auch Zeilen mit Leerzeichen eliminiert. Es geht :).

Gruß Ullli
 
S

streamline

Guest

AW: Gästebuch - Undefined offset

Simmt, ist kürzer und eleganter. Ich hatte meine Zweifel, ob file() mit FILE_SKIP_EMPTY_LINES auch Zeilen mit Leerzeichen eliminiert. Es geht :).

Gruß Ullli

Habe das mal ausprobiert
PHP:
<?php 
$beitrag = file("gaestebuch.txt", FILE_SKIP_EMPTY_LINES); 
krsort($beitrag); 
.....

und noch immer die selbe Fehlermeldung und Ausgabe

Code:
Array
(
    [2] => max@gmx.at|Max|23.11.2012 20:11:36|Hallo
    [1] => katja.winkl@gmail.com|Katja|23.11.2012 20:11:12|TEST

    [0] => 

)
vorhermax@gmx.at|Max|23.11.2012 20:11:36|Hallo
nachhermax@gmx.at|Max|23.11.2012 20:11:36|Hallo
Array
(
    [0] => max@gmx.at
    [1] => Max
    [2] => 23.11.2012 20:11:36
    [3] => Hallo
)

Ich bin am verzweifeln :(

LG
 

Duddle

Posting-Frequenz: 14µHz

AW: Gästebuch - Undefined offset

Okay, file() ist da etwas mürrisch. Nimm
PHP:
$beitrag = file("gaestebuch.txt", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
und es sollte funktionieren. Erst wenn beide Optionen aktiviert werden, filtert er das korrekt.


Duddle
 
S

streamline

Guest

AW: Gästebuch - Undefined offset

Okay, file() ist da etwas mürrisch. Nimm
PHP:
$beitrag = file("gaestebuch.txt", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
und es sollte funktionieren. Erst wenn beide Optionen aktiviert werden, filtert er das korrekt.


Duddle

ganz großes DANKESCHÖN
es funktioniert :lol:

LG
 

hub

nicht ganz neu hier

AW: Gästebuch - Undefined offset

Läuft es jetzt? Sorry, war unterwegs. Wenn Duddles Vorschlag nicht hilft (ich kanns mir nicht vorstellen), hätte ich nur noch einen Lösungsvorschlag. Pack deine Datei einschließlich gaestebuch.txt in ein zip und stell es hier mal rein oder schicks per PM oder wie auch immer. Geht nicht gibts nicht ;)

Gruß Ulli
Super !!! zu langsam - umsonst getippt :)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben