• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

3 einfache PHP-Gästebuch-Probleme

Myro

Neues Mitglied
Hi, ich kann es nur durch probieren, für lernen ist es zu spät.
Ich hab ein "Gäste"buchscript (ist aber nur für EINE Person) kopiert, befummelt und angepasst, es funktioniert!

1. Problem: Die Einträge werden absteigend gezeigt, ich möchte aber den jeweils neuesten Eintrag oben haben, also AUFsteigende Anzeige.

2. Problem: Ich krieg's ums Verrecken nicht hin, dass vor jedem Eintrag das Eintragsdatum gezeigt wird, und zwar so:
01.01.2013 - 23.42 Uhr - .....(Text) Also auch der Bindestrich, damit der Text ein bisschen abgesetzt ist.)

3. Problem: Und was doch in drei Teufels Namen auch nicht so schwer sein kann, ist, im ausgegebenen Text überhaupt einen und dann auch noch den Zeilenumbruch zu machen, der bei der Eingabe auch gemacht wurde.

Und nun hab ich ne herzliche Bitte, sonst ist aller Rat für die Katz. Tipps von der Machart: Binde halt den Dingspups einfach an den Bumspups und dann füg noch ein rewind-array-Piepspups dran nützen mir (s.o.) NIX!

Meine Frage also:

Wo muss ich WAS einfügen, damit es funktioniert?

Hier die beiden Seiten-Codes.............


1. gaestebuch.php:


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Natalie</title>

<style>
body
{scrollbar-base-color:#000000;
scrollbar-highlight-color:#999999;
scrollbar-arrow-color:#999999;
scrollbar-shadow-color:#aaaaaa;
overflow-x:hidden;}
</style>

<style type=text/css>
<!--
*.schrift10 { font-family:verdana; font-size:10px; font weight:normal; }
*.schrift14 { font-family:verdana; font-size:14px; font weight:normal; }
*.schrift11 { font-family:verdana; font-size:11px; font weight:normal; }
*.schrift12 { font-family:verdana; font-size:12px; font weight:normal; }
*.schrift13 { font-family:tahoma; font-size:14px; font weight:normal; font color:#000000; }
*.schrift20 { font-family:verdana; font-size:20px; font weight:bold; }
*.schrift1a { font-family:verdana; font-size:5px; font weight:normal; }
*.schrift16 { font-family:verdana; font-size:16px; font weight:bold; }
*.schrift1b { font-family:verdana; font-size:3px; font weight:normal; }

a {text-decoration: none;} -->

</style>

<style>
body
{overflow-x:hidden;}
{overflow-y:hidden;}
</style>
</head>

<body text="#FFFFFF" bgcolor="#000000" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">

<table border="0" width="100%" cellpadding="0" id="table1" height="100%">
<tr>
<td height="120" width="200" align="center">Links oben</td>
<td height="120">
<p align="center">
Oben</td>
</tr>
<tr>
<td width="200" align="center" valign="top">
&nbsp;<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Links</td>
<td align="center" valign="top">

<form action=danke.php id=comment-reply method=post>

<dt>&nbsp;</dt>
<dt>&nbsp;&nbsp; </dt>
<dt>&nbsp;&nbsp; </dt>

<table border="0" width="750" cellspacing="0" cellpadding="0" id="table2">
<tr>
<td class="schrift16" align="center" width="100%" height="44" bgcolor="#353535">
Deine Nachricht an mich</td>
</tr>
<tr>
<td class="schrift12" align="left" width="541">
Datum:&nbsp; <font color="#FFFF00">Jede Nachricht beginnt mit dem Datum!
(z.B.: 31.12.2012 - .....)</font></td>
</tr>
<tr>
<td align="center">
<textarea cols=91 id=comment name=comment placeholder='Text: ..... ' rows=10 title='Text'></textarea></td>
</tr>
<tr>
<td align="center">
<p align="left">
<input type=submit value='Abschicken'/></td>
</tr>
</table>
&nbsp;<p align="center">
&nbsp;</p>
</form>

<h2 align="center">Nachrichten</h2>
<div align="center">
<table border="1" width="750" cellspacing="0" cellpadding="10" bordercolor="#800000" id="table1" bgcolor="#272727">
<tr>
<td class="schrift13" align="left" bgcolor="#272727" color="#000000">
<?php
$datenbank = "daten.dat"; $datei = fopen($datenbank,"r");
fpassthru($datei);
?>
<p>&nbsp;</td>
</tr>
</table>
</div>
</td>
</tr>
</table>

</div>
<p>&nbsp;</p>

</body>
</html>



2. "danke.php":



<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Natalie</title>

<style>
body
{scrollbar-base-color:#000000;
scrollbar-highlight-color:#999999;
scrollbar-arrow-color:#999999;
scrollbar-shadow-color:#aaaaaa;
overflow-x:hidden;}
</style>

<style type=text/css>
<!--
*.schrift10 { font-family:verdana; font-size:10px; font weight:normal; }
*.schrift14 { font-family:verdana; font-size:14px; font weight:normal; }
*.schrift11 { font-family:verdana; font-size:11px; font weight:normal; }
*.schrift12 { font-family:verdana; font-size:12px; font weight:normal; }
*.schrift20 { font-family:verdana; font-size:20px; font weight:bold; }
*.schrift1a { font-family:verdana; font-size:5px; font weight:normal; }
*.schrift16 { font-family:verdana; font-size:16px; font weight:bold; }
*.schrift1b { font-family:verdana; font-size:3px; font weight:normal; }
a {text-decoration: none;} -->
</style>

<style>
body
{overflow-x:hidden;}
{overflow-y:hidden;}
</style>

</head>
<body text="#FFFFFF" bgcolor="#000000">
<table border="0" width="100%" cellpadding="0" id="table1" height="100%">
<tr>
<td height="120" width="200" align="center">Links oben</td>
<td height="120">
<p align="center">
Oben</td>
</tr>
<tr>
<td width="200" align="center" valign="top">
&nbsp;<p>&nbsp;</p>
<p>Links</td>
<td align="center" valign="top">

<h2 align="center">&nbsp;</h2>
<h2 align="center">Nachrichten</h2>
<div align="center">
<table border="1" width="507" cellspacing="0" cellpadding="10" bordercolor="#800000" id="table1">
<tr>
<td align="left">
<p align="center">

<?php
$datum = date("d.m.Y");
$uhrzeit = date("H:i");
echo $datum," - ",$uhrzeit," Uhr";

$daten=$_POST[comment]. $_POST[date]. " <br> --- Ende der Nachricht ---".$_POST."".$_POST[author]."</a><br><br>";
$datenbank = "daten.dat";

$datei = fopen ($datenbank,"a");
$comment=strip_tags($comment);
fwrite($datei, $daten);
?>
<b>&nbsp;-&nbsp;Eintrag erfolgreich! </b></p>
<p align="center"><a href="gaestebuch.php">Zurück zur Nachrichtenseite</a></td>
</tr>
</table>
</div>
</td>
</tr>
</table>

</body>
</html>

Paar Sachen auf den Originalseiten, die hier nicht relevant sind, hab ich gelöscht. Die Scripte funktionieren aber in dieser Form!
Also nochmals herzliche Bitte: keine fachmännische Rhetorik, die im Grunde das Wissen voraussetzt, wegen dessen Fehlen ich ja gerade frage,
sondern wenn es IR-GEND geht, im hier geposteten Code einfach den vollständige ("wörtlichen") Code an angegebener Stelle einfügen oder ansagen!

Ich wäre unendlich dankbar - und mein über Tage geschundener Rücken erst recht!
(Ich bin 65 und nicht mehr wirklich aufzuhübschen).....
Myro
 
Werbung:
Hallo,

also zuerst verlangst recht viel von uns aber mal schauen.
zuerst nimm für code auch den code tag im editor, macht das lesen einfacher für uns.

zu1 Sortierung umdrehen:
geht mit den nicht da du keine Datenbank nutzt sondern eine Datei zu speichern.
abhilfe konnte das schaffen in gaestebuch.php.
das
PHP:
<?php
$datenbank = "daten.dat"; $datei = fopen($datenbank,"r");
fpassthru($datei);
?>
in
PHP:
<?php
$datenbank = "daten.dat";
 $datei = fopen($datenbank,"r");
$result = array_reverse($datei);
foreach($result AS $result_output)
   {
   echo $result_output."<br>";
   }
?>

zu2. Eintragsdatum danke.php:
das
PHP:
<?php
$datum = date("d.m.Y");
$uhrzeit = date("H:i");
echo $datum," - ",$uhrzeit," Uhr";
$daten=$_POST[comment].  $_POST[date].    " <br> --- Ende der  Nachricht  ---".$_POST[email]."".$_POST[author]."</a><br><br>";
in
PHP:
<?php
$datumzeit = date("d.m.Y")." - ".date("H:i")." - ";
$daten=$datumzeit.nl2br($_POST[comment]).  $_POST[date].    " <br> --- Ende der  Nachricht  ---".$_POST[email]."".$_POST[author]."</a><br><br>";

und 3 ist in zu 2 drin, das nl2br().

Cheffchen
 
Das
PHP:
$result = array_reverse($datei);
geht ganz sicher in die Hose. ;)

Und wenn man schon keine Datenbank nimmt (wieso eigentlich nicht??), würde ich die Daten schon beim Schreiben in die richtige Reihenfolge bringen, denn Gästebücher werden mehr gelesen, als hineingeschrieben.
 
Werbung:
Danke, danke, danke, Chefchen! Ich werde es sofort probieren.....
Unter Deiner freundlichen Mail ist eine weitere, die behauptet, eine Zeile gehe "in die Hose"!
.....?
 
Hallo Chefchen, hab's sofort ausprobiert! leider funktioniert jetzt das ganze GB nicht mehr. Es zeigt die Einträge GAR nicht mehr an, als Asgabe erscheint nur noch einmalig Folgendes:

Warning: array_reverse() [function.array-reverse]: The argument should be an array in /homepages/31/d31897709/htdocs/natalie/gaestebuch/gaestebuch.php on line 94

Warning: Invalid argument supplied for foreach() in /homepages/31/d31897709/htdocs/natalie/gaestebuch/gaestebuch.php on line 95

:-(
 
Das
PHP:
$result = array_reverse($datei);
geht ganz sicher in die Hose. ;)

Und wenn man schon keine Datenbank nimmt (wieso eigentlich nicht??), würde ich die Daten schon beim Schreiben in die richtige Reihenfolge bringen, denn Gästebücher werden mehr gelesen, als hineingeschrieben.

Hallo bdt600!
Das steht eigentlich in meinem Einleitungstext: Ich bin ein nicht mehr therapierbarer Datenbank-Legastheniker und eben mehr so richtig lern-frisch.
Und wenn es per script-Ergänzung einfach "beim Schreiben" schon in die richtige (aufsteigende) Reihenfolge gebracht werden kann,
bräuchtest Du es nur noch wie Chefchen zu machen
und den Schnipsel hier posten.
Dann wüsste ich nicht nur, was in die Hose geht, sondern auch, wie es richtig ist!
Gruß von Myro
 
Werbung:
Ich bin ein nicht mehr therapierbarer Datenbank-Legastheniker und eben mehr so richtig lern-frisch.
Das Datenbankhandling ist keine Hexerei und nicht so schwer zu erlernen. Außerdem ist es deutlich besser als mit Dateien rumzuturnen.
bräuchtest Du es nur noch wie Chefchen zu machen und den Schnipsel hier posten.
Wenn jemand so offensichtlich um Quellcode bettelt, verweigere ich das in der Regel. Denn man kann sicher sein, dass der Lerneffekt gleich null ist und einfach nur per Copy/Paste übernommen wird. Sieht man ja auch an dem Beispiel von Cheffchen. Ich gebe dann nur noch hilfreiche Tipps, die zum Lernen animieren:
Statt
PHP: fopen - Manual
ist wohl dies gemeint
PHP: file - Manual
 
Lieber bdt600, "betteln" ist im Normalfall ein entwürdigender Vorgang. Ich denke, ich habe nicht "gebettelt", sondern mit beigefügter Begründung mit etwas Humor gebeten. Nicht jeder ist nämlich in der Situation, "einfach so" ohne freundlichen Lehrer oder ohne freundliche Anleitung Chinesisch lernen zu können (was PHP, MySQL und Datenbank eben für jemanden sind, der sich erst mühsam nach der Versuch-und-Irrtum-Methode einfummelt. Immerhin hab ich schon mal am bestehenden Code so weit rumprobieren können, dass es letztendlich geklappt hat. Und ich bin schon ein bisschen stolz, dass ich immerhin schon das mit dem HTML-Code einigermaßen durchschaue. Hat mir auch keiner geholfen dabei. Über so einfache Fortschritte kannst Du ja von Deinem hohen Experten-Ross gerne lachen!
Lernen kann man übrigens, wie ich auf bescheidener Ebene ja vormache, auch am richtigen Exempel.
Ein Lehrer, der wirklich einer ist und kein Amateurpädagoge (so wie ich ein Amateur-Code-Fummler bin), wüsste das.
Aber wenn Dir das einen Zacken aus der Expertenkrone bricht, dann lass es halt.
Scheint ja mehr Zeit in Anspruch zu nehmen als Deine erzieherischen Belehrungen für einen, der sich sehr wohl bemüht. - Myro
 
Du kennst das Sprichwort:
Gib einem Hungernden einen Fisch, und er wird einmal satt, lehre ihn Fischen, und er wird nie wieder hungern.
Das lässt sich wunderbar auf Foren umsetzen.

Außerdem sitze ich weder auf einem hohen Ross noch schreibe ich erzieherische Belehrungen. Ich bemühe mich, den Leuten sinnvoll weiterzuhelfen und nicht einfach alles vorzukauen oder einen fertigen Quellcode hinzuklatschen. In den meisten Fällen führt das zum Erfolg, wobei es natürlich immer Ausnahmen gibt.

Aber anstatt dich über mich zu beschweren, hättest du einfach mal auf die Links klicken können und dir wäre vermutlich klar geworden, wo das Problem liegt. Besonders dann, wenn man die Fehlermeldung beachtet.
 
Werbung:
1. Wer auf hohem Ross sitzt und erzieherische Belehrungen verteilt, tut dies auch dann, wenn er es bestreitet.
2. Die Links habe ich geöffnet, über dem Inhalt des einen hatte ich sogar schon auf einer Tutorialseite gegrübelt.
"Sinnvoll" hättest Du mir helfen können durch erläuterndes "Hinklatschen" (weniger polemisch: Vormachen).
3. "...und dir wäre vermutlich klar geworden, wo das Problem liegt. Besonders dann, wenn man die Fehlermeldung beachtet."
Wer Lehrer sein will, muss was von Schülern verstehen. Deine Selbstinszenierung "Lehrer" übersteigt indes deutlich Deine dafür notwendige Empathiefähigkeit!
Wenn Du derart gut bist, wäre das "Hinklatschen" ja wohl deutlich weniger Aufwand gewesen als diese pseudopädagogische Belehrungsfarce.

Wenn Deine Frau Dich fragt, ob Du ihr mal die schwere Tasche abnehmen würdest, weist Du sie dann auch hochnäsig darauf hin, wie man auf Google den Weg zum Fitness-Studio sucht?
Manchmal will man in dieser Welt voller Bescheidwisser einfach mal.....
Ach, lass es einfach!
 
OK, du willst anscheinend nicht die Grundlagen lernen. Und wenn man schon die Doku nicht lesen kann, wie will man dann je ohne fremde Hilfe ein Script zusammenschreiben können?

Ich bin dann mal weg.

PS: Der Vergleich mit der Tasche hinkt ganz gewaltig.

Und ein letzter Tipp:

Richtig debuggen


  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank für diesen paste-and-copy-"Rat"!
War aber unnötig: Ich sagte doch schon, dass Deine Selbstinszenierungswut Deine Empathiefähigkeit übersteigt.
Ich bin dann auch mal weg!
 
Werbung:
Meine Güte, ist das jetzt wirklich so schwer?!?!?!?
Statt
PHP:
$datei = fopen($datenbank,"r");
PHP:
$datei = file($datenbank);
Für manche ist Programmieren definitiv das falsche Hobby.

Ich sagte doch schon, dass Deine Selbstinszenierungswut Deine Empathiefähigkeit übersteigt.
Du musst es ja wissen.

Ich zitiere mal aus einem anderen Forum
Wer lernen will zu programmieren, sollte wissen was er tut. Alles Andere führt zu Unmengen an Frust. Jeder, der sich ernsthaft mit PHP auseinandersetzen möchte und hier eine Frage stellt, sollte zumindest Kenntnisse über die Grundlagen vorweisen können.

» Das PHP Handbuch - zu Fragen über Funktionen und deren Anwendung
alternativ die englische Variante mit den Beiträgen der Nutzer beachten
» Die PHP FAQ - wiederkehrende Fragen und Probleme zu den Grundlagen
» Ein Grundlagen Tutorial - für jeden der sich mit PHP beschäftigt ist dieses Wissen Voraussetzung
» Ein OOP Tutorial - ein Einblick in weiterführende Themen
» Das MySQL Handbuch - zu Fragen über Syntax, Funktionen und co:
» Ein MySQL Grundlagen Tutorial - zwingend notwendig für die Verwendung von Datenbanken
 
Überraschung: Immerhin danke ich Dir jetzt.
Aber leider ist auch jetzt noch ein Fehler drin, der aber von Cheffchen stammt und von Dir wohl übersehen wurde.
Sei sicher, ich hab lange auf die Code-Zeilen gestarrt:

Aus diesem 2 mal eingegebenen Testtext:

"Dieser Text ist ein Testtext zum Ausprobieren von Datumsangabe, aufsteigender Sortierung und Zeilenumbruch.
Der wäre jetzt HIER!"
und danach noch einmal:
"Dieser Text ist ein Testtext zum Ausprobieren von Datumsangabe, aufsteigender Sortierung und Zeilenumbruch.
Der wäre jetzt HIER!"

wird dieser Ausgabentext:

"Der wäre jetzt HIER!


Der wäre jetzt HIER!

09.01.2013 - 11:28 - Dieser Text ist ein Testtext zum Ausprobieren von Datumsangabe, aufsteigender Sortierung und Zeilenumbruch.

09.01.2013 - 11:19 - Dieser Text ist ein Testtext zum Ausprobieren von Datumsangabe, aufsteigender Sortierung und Zeilenumbruch."


Das heißt: Nicht erst ein neuer Beitrag wird nach oben sortiert, sondern innerhalbeines Beitrags nach jedem Zeilenumbruch schon jeder neue Absatz des Beitrags.
Und außerdem werden alle Absätze für sich aufsteigend sortiert, die Gesamtmeldungen also jeweils in ihre Absätze zerrissen und alle Absätze gesondert sortiert.
 
Werbung:
Der angegebene Link öffnet nur wieder die Seite selber!

Was wäre denn daran so schlimm, auch den Sortierfehler wieder einfach so lakonisch zu korrigieren, wie den ersten auch schon?
Dann würde ich auch (sicher in Deinem Sinn) verschwinden und nie wiederkommen.
So kann es ja noch ewig hin und her gehen.....
 
Der angegebene Link öffnet nur wieder die Seite selber!
Komisch, ich lande damit auf der Doku bei nl2br
Was wäre denn daran so schlimm, auch den Sortierfehler wieder einfach so lakonisch zu korrigieren, wie den ersten auch schon?
Dann würde ich auch (sicher in Deinem Sinn) verschwinden und nie wiederkommen.
So kann es ja noch ewig hin und her gehen.....
Dazu sage ich nix mehr.
 
Dann lass es halt! Immerhin hast Du den Fehler bei Cheffchen ganz offensichtlich ja auch nicht erkannt!

Ich werde also Deinen wertvollen Code wieder aus meinem Script löschen!
Dann bleibt es zwar bei dem beklagten Manko des Gästebuches,
aber wenigstens funktioniert es sonst richtig,
was es nach Deiner großzügigen Code-Korrektur ja nicht tat!
...Du Bescheidwisser-Riese!
 
Werbung:
Immerhin hast Du den Fehler bei Cheffchen ganz offensichtlich ja auch nicht erkannt!
Soll ich jetzt wirklich jeden hier im Forum geposteten Quellcode auf Fehler untersuchen? :evil: Kopfschüttel :evil:

Ich werde also Deinen wertvollen Code wieder aus meinem Script löschen!
Ist mir völlig wurscht.

Dann bleibt es zwar bei dem beklagten Manko des Gästebuches
Das auch, ist ja nicht mein Gästebuch

aber wenigstens funktioniert es sonst richtig
Glaubst du.

was es nach Deiner großzügigen Code-Korrektur ja nicht tat!
Habe ich auch nie behauptet, weil ich nicht nach weiteren Fehler gesucht habe, die da bestimmt noch drin sind.

...Du Bescheidwisser-Riese!
Witzbold!

Es stellt sich mir eigentlich nur eine Frage: bist du zu blöd oder zu faul die Grundlagen zu lernen? Aber egal, du wirst es ja wissen. Wichtig ist ja, das du Hinweise ignorierst und lieber rummeckerst.
 
Zurück
Oben