SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.08.2004, 21:52:47
Woody1000 Woody1000 ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 5
problem mit gästebuch datei auslesen

hallo!
bin frisch gebackener phpanfänger:)
also.. buch gekauft, durchgelesen, übungen gemacht und gleich eigenes gästebuch versucht.

das ganze ist ein gästebuch,dass die einträge in eine txt speichert. jeder eintrag in eine zeile und die einzelnen einträge sind mit "<>" getrennt.

PHP-Code:
//neuen eintrag speichern
//$ausgabe festlegen
$datum=date("d.m.Y H:i");
$ausgabe "n" $_POST['name'] . "<>" $_POST['mail'] . "<>" $_POST['eintrag'] . "<>" $datum "|";

//in datei speichern

$fp=fopen("book.txt","a");
fwrite($fp,$ausgabe);
echo
"<br>saved";
fclose($fp);

//auslesen
$fp=fopen("book.txt","r");
$auslesen=fread($fp,99999999);
$gelesen=explode("|",$auslesen);
//zeilenzähler

$count=count($gelesen);
$count++;
echo 
$count;
for(
$x=1;$x=$count;$x++) {
$eintrag=fgets($gelesen[$x],10000);
echo 
§eintrag;

da kommen ungefähr eine million erros mit diesem klugen spruch:
Notice: Undefined offset: 18 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 53

Warning: fgets(): supplied argument is not a valid stream resource in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 53

Notice: Use of undefined constant §eintrag - assumed '§eintrag' in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 54
§eintrag
Notice: Undefined offset: 18 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 53



fehlt noch code der zur fehlerbeseitigung fehlt?

ich hab das bis jetzt soweit, dass alle zeilen aus der extdatei angezeigt werden sollen.

vielen dank schon mal im vorraus!

cya woody

Geändert von Woody1000 (21.08.2004 um 21:55:28 Uhr)
Mit Zitat antworten
  #2  
Alt 22.08.2004, 00:24:57
Benutzerbild von yozek
yozek yozek ist offline
Junior Member
 
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
yozek eine Nachricht über ICQ schicken yozek eine Nachricht über MSN schicken
Hi, zuersteinmal würde ich versuchen dein Skript ein wenig zu verändern:

Heißt...
Speichern, wenn $_POST exisitiert


Die Indexfehler sind die Fehler, die dir die Info / Notiz anzeigen, dass die POST GET Variable nicht existiert. Diesen Fehler kannst du beheben, indem du vor jede ggf. leere GET POST Variable den Code verwendest
PHP-Code:
if (!empty($_POST['var']) :
   
//Mach irgendwas mit dem VAR 
endif; 
Die Offsetfehler sind meistens Informationen, dass irgendwo ein Offset nicht gesetzt ist (Meistens beim exploden)

Der Fehler mit FGETS... existiert die Datei auch wirklich? Scheint so, als dort beim einlesen der Datei ein Fehler auftaucht!

Ich würde an deiner Stelle mir mal folgenden, von mir umgeschriebenen Code anschauen. Der Ist was kürzer ;)

PHP-Code:
<?
// Überprüfung ob Daten gespeichert werden sollen
if (!empty($_POST)):
    // Falls ja, wird die Zeile zusammengestellt ...
    $datum=date("d.m.Y H:i");
    $ausgabe = $_POST['name'] . "<>" . $_POST['mail'] . "<>" . $_POST['eintrag'] . "<>" . $datum . "|n";
    // .. Datei zum Schreiben öffnen ..
    $fp=fopen("book.txt","a");
    // .. Zeile gespeichert
    fwrite($fp,$ausgabe);
    echo"<br>saved";
    // Verbindung getrennt
    fclose($fp);
endif;

// Nun wird die Kommentardatei geladen
$fp=file("book.txt");
// Schleife zeilenweise einlesen
for($x=0;$x<count($fp);$x++) :
    // Die Zeile zerlegt und ...
    $zerlegt = explode('<>', $fp[$x]);
    // in die einzelnen Variablen unterteilt
    $name = $zerlegt[0];
    $mail = $zerlegt[1];
    $text = $zerlegt[2];
    $datum = $zerlegt[3];
    // das | aus dem Datum entfernt ;)
    $datum = str_replace('|', '', $datum);
    
    // das ganze an den Browser rausgeprügelt
    print('<a href="mailto:' . $mail . '">' . $name . '</A> ');
    print($datum . '<br>' . "n");
    print($text);
    print('<hr>');
endfor;
?>
HTH
__________________
yozek

King of my castle - 127.0.0.1
Computer befreien das Denken vom Rechnen
Mit Zitat antworten
  #3  
Alt 22.08.2004, 15:05:57
Woody1000 Woody1000 ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 5
hallo!
vielen dank für deine hilfe, jetzt kappts schon fast perfekt! :)

der code sieht jetzt so aus
PHP-Code:
//neuen eintrag speichern
//$ausgabe festlegen
$datum=date("d.m.Y H:i");
$ausgabe "n" $_POST['name'] . "<>" $_POST['mail'] . "<>" $_POST['eintrag'] . "<>" $datum "|";

//in datei speichern

$fp=fopen("book.txt","a");
fwrite($fp,$ausgabe);
echo
"<br>saved";
fclose($fp);

//auslesen
$fp=file("book.txt");
// Schleife zeilenweise einlesen
for($x=0;$x<count($fp);$x++) {
    
// Die Zeile zerlegt und ...
    
$zerlegt explode('<>'$fp[$x]);
    
// in die einzelnen Variablen unterteilt
    
$name $zerlegt[0];
    
$mail $zerlegt[1];
    
$text $zerlegt[2];
    
$datum $zerlegt[3];
    
// das | aus dem Datum entfernt ;)
    
$datum str_replace('|'''$datum);
    
    }


//ausgeben
print('<a href="mailto:' $mail '">' $name '</A> ');
    print(
$datum '<br>' "n");
    print(
$text);
    print(
'<hr>');
    
    }
    }

?> 
aber es wird jetzt bloß die zuletzt geschriebene zeile angezeigt und nicht alle. deswegen wollte ich auch ans ende aller einträge ein | machen um die txt in ein array zu machen, was dann wieder in ein array gemach wird.
oder so..

das mit dem
PHP-Code:
if (!empty($_POST['var']) :
   
//Mach irgendwas mit dem VAR 
endif; 
hab ich schon weiter oben.

cya woody
Mit Zitat antworten
  #4  
Alt 22.08.2004, 18:12:43
Benutzerbild von yozek
yozek yozek ist offline
Junior Member
 
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
yozek eine Nachricht über ICQ schicken yozek eine Nachricht über MSN schicken
Zitat:
PHP-Code:
//auslesen
$fp=file("book.txt");
// Schleife zeilenweise einlesen
for($x=0;$x<count($fp);$x++) {
    
// Die Zeile zerlegt und ...
    
$zerlegt explode('<>'$fp[$x]);
    
// in die einzelnen Variablen unterteilt
    
$name $zerlegt[0];
    
$mail $zerlegt[1];
    
$text $zerlegt[2];
    
$datum $zerlegt[3];
    
// das | aus dem Datum entfernt ;)
    
$datum str_replace('|'''$datum);
    
    }
//SCheife zu
?> 
aber es wird jetzt bloß die zuletzt geschriebene zeile angezeigt und nicht alle. deswegen wollte ich auch ans ende aller einträge ein | machen um die txt in ein array zu machen, was dann wieder in ein array gemach wird.
oder so..
Das ist richtig so, so hast du es nämlich von PHP gewollt.
Du beendest die Schleife zu früh.
Er geht alle Zeilen durch, zerlegt diese und speichert diese in Variablen, die bei dem nächsten Durchgang wieder überschrieben werden ;)

WEnn du aus deinem Quellcode folgendes machst, wird es funktionieren:


PHP-Code:
//auslesen
$fp=file("book.txt");
// Schleife zeilenweise einlesen
for($x=0;$x<count($fp);$x++) 

// SCHLEIFE AUF
    // Die Zeile zerlegt und ...
    
$zerlegt explode('<>'$fp[$x]);
    
// in die einzelnen Variablen unterteilt
    
$name $zerlegt[0];
    
$mail $zerlegt[1];
    
$text $zerlegt[2];
    
$datum $zerlegt[3];
    
// das | aus dem Datum entfernt ;)
    
$datum str_replace('|'''$datum);
//ausgeben
print('<a href="mailto:' $mail '">' $name '</A> ');
    print(
$datum '<br>' "n");
    print(
$text);
    print(
'<hr>');
    
/// SCHLEIFE NACH DER AUSGABE ZU
    
}

?> 
__________________
yozek

King of my castle - 127.0.0.1
Computer befreien das Denken vom Rechnen
Mit Zitat antworten
  #5  
Alt 22.08.2004, 19:26:59
Woody1000 Woody1000 ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 5
ist nicht war..

ES KLAPPT!!!!!

wow, geiles gefühl, wenn man sein eigenes script ohne fehler laufen sieht. :)

cya und danke leute!
Mit Zitat antworten
  #6  
Alt 22.08.2004, 19:45:22
Woody1000 Woody1000 ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 5
argh, nächstes problem..
klappt alles tadellos.
wenn jetzt aber der benutzter in der textarea <enter> drückt, schreibt das script auch in der textdatei die zeilenumbrüche. dadurch können die zeilen nicht mehr in arrays umgewandelt werden.

gibts ne funktion, die zeilen umbrüche wegmacht?

cya woody

edit: nl2br funktioniert nicht

fehlermedlung:
Notice: Undefined offset: 3 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 56
Woodywoodpecker
eintrag zeile eins blabla laber und so bababa jetzt kommt ein


--------------------------------------------------------------------------------

Notice: Undefined offset: 1 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 54

Notice: Undefined offset: 2 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 55

Notice: Undefined offset: 3 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 56
test laba auf zeile 2 dsdsdsd



--------------------------------------------------------------------------------

Notice: Undefined offset: 2 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 55

Notice: Undefined offset: 3 in C:ProgrammeApache GroupApache2htdocsMACnews.php on line 56
zeile3

--------------------------------------------------------------------------------



code:
PHP-Code:
$ausgabe $_POST['name'] . "<>" $_POST['mail'] . "<>" nl2br($_POST['eintrag']) . "<>" $datum "n"
textdatei:
Woodywoodpecker<>woody@woodpecker.wo<>eintrag zeile eins blabla laber und so bababa jetzt kommt ein <enter><br /><br />
test laba auf zeile 2 dsdsdsd <enter><br /><br />
zeile3<>22.08.2004 20:03


woran liegts nu schon wieder?

cya

Geändert von Woody1000 (22.08.2004 um 20:06:32 Uhr)
Mit Zitat antworten
  #7  
Alt 22.08.2004, 21:00:57
Benutzerbild von yozek
yozek yozek ist offline
Junior Member
 
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
yozek eine Nachricht über ICQ schicken yozek eine Nachricht über MSN schicken
Ja klar ;)

Du musst nur wissen, dass ein ENTER folgendes Zeichen ist, von abhängigkeit des OS:

PHP-Code:

$text
=ereg_replace("[nr]"," ",$text); 
__________________
yozek

King of my castle - 127.0.0.1
Computer befreien das Denken vom Rechnen
Mit Zitat antworten
  #8  
Alt 22.08.2004, 21:16:00
Woody1000 Woody1000 ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 5
geht immer noch nicht, langsam wirds lustig xD
PHP-Code:
$eintrag=ereg_replace("[nr]"," ",$eintrag);
$datum=date("d.m.Y H:i");
$ausgabe "n" $_POST['name'] . "<>" $_POST['mail'] . "<>" $_POST['eintrag'] . "<>" $datum "|"
es passiert genau.. gar nichts,

ich werd wahnsinnig..

cya
Mit Zitat antworten
  #9  
Alt 22.08.2004, 21:58:05
Benutzerbild von yozek
yozek yozek ist offline
Junior Member
 
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
yozek eine Nachricht über ICQ schicken yozek eine Nachricht über MSN schicken
Ist auch verstädlich...

du definierst die Variable du ausgetauscht wird zwar, aber diese ist in diesemFall leer.
Du musst eine variable erstellen, die nr bereinigt ist und diese dann in diese Zeile einfügen..

Das passiert folgendermassen, wobei ich noch eine kl. veränderung mit einbaue, damit zeilenumbrüche angezeigt werden können:

PHP-Code:
$eintrag nl2br($_POST['eintrag']);
$eintrag=ereg_replace("[nr]"," ",$eintrag);
 
// Variable eintrag enthält die per POST übermittelteten Daten von eintrag ist aber zusätzlich von Zeilenumbrüchen bereinigt und mit BRs versehen. 
$datum=date("d.m.Y H:i");
$ausgabe "n" $_POST['name'] . "<>" $_POST['mail'] . "<>" $eintrag "<>" $datum "|"
// Nun wird die zeile generiert, die gespeichert werden soll, diese setzt sich unter anderem aus der von Zeilenumbrüchen befreiten per POST Übertrageneden eintragfeld.
__________________
yozek

King of my castle - 127.0.0.1
Computer befreien das Denken vom Rechnen

Geändert von yozek (22.08.2004 um 22:01:52 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:17:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt