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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
21.08.2004, 21:52:47
|
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)
|
22.08.2004, 00:24:57
|
|
Junior Member
|
|
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
|
|
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
|
22.08.2004, 15:05:57
|
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
|
22.08.2004, 18:12:43
|
|
Junior Member
|
|
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
|
|
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
|
22.08.2004, 19:26:59
|
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!
|
22.08.2004, 19:45:22
|
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)
|
22.08.2004, 21:00:57
|
|
Junior Member
|
|
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
|
|
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
|
22.08.2004, 21:16:00
|
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
|
22.08.2004, 21:58:05
|
|
Junior Member
|
|
Registriert seit: May 2004
Ort: Köln
Alter: 43
Beiträge: 226
|
|
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)
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:17:07 Uhr.
|