Antworten auf deine Fragen:
Neues Thema erstellen

Gästebuch auf mehreren Seiten angeben!

declaudi

Nicht mehr ganz neu hier

Hallo alle zusammen,

ich bastel gerade an einem Gästebuch herum. Und habe folgendes Problem. Es funktioniert alles soweit wunderbar, aber das Gästebuch schreibt sich bei der Ausgabe unendlichh ins Weite ...

Hat jemand eine Lösung für das Problem oder zumindest ne Idee in welche Richtung ich denken muss?

Da erstmal mein Script:

Html-Code: guestbook.phpl

HTML:
<div id="main_left">
                    <h2> Hier k&ouml;nnen Sie sich in mein G&auml;stebuch eintragen! </h2><br/><br/><br/>

                                        <div id="guestbook_eintrag">
                                                  <form class="form" action="php/guestbook/guestbook_auswertg.php" method="POST">
                                                         <table style="width:500px">
                                                                <tr>
                                                                        <td><label for="name">Ihr Name:<em>*</em></label></td>
                                                                        <td><input color="#000000" type="text" name="name" value=""/></td>
                                                                </tr>
                                                                <tr>
                                                                        <td><label for="vname">Ihr Vorname:<em>*</em></label></td>
                                                                        <td><input color="#000000" type="text" name="vname" value=""/></td>
                                                                </tr>
                                                                <tr>
                                                                        <td><label for="ort">Ihr Ort:<em>*</em></label></td>
                                                                        <td><input color="#000000" type="text" name="ort" value=""/></td>
                                                                </tr>
                                                                <tr>
                                                                        <td><label for="email">Ihre email:<em>*</em></label></td>
                                                                        <td><input color="#000000" type="text" name="email" value=""/></td>
                                                                </tr>
                                                                <tr>
                                                                        <td><label for="eintrag">Ihr Eintrag:<em>*</em></label></td>
                                                                        <td><textarea color="#000000" type="text" name="eintrag" cols="30" rows="5"></textarea></td>
                                                                </tr>
                                                                <tr>
                                                                        <td></td>
                                                                        <td></td>
                                                                        <td></td>
                                                                </tr>
                                                                <tr>
                                                                        <td></td>
                                                                        <td></td>
                                                                        <td></td>
                                                                </tr>
                                                                <tr>
                                                                        <td></td>
                                                                        <td></td>
                                                                        <td></td>
                                                                </tr>
                                                                <tr>
                                                                        <td></td>
                                                                        <td>
                                                                                <input id="inputbutton" type="submit" value="senden" align="left"/><br/><br/>
                                                                                <input id="inputbutton" type="reset" value="Felder zur&uuml;ck setzen" align="left"/><br/><br/>
                                                                                        <a href="php/guestbook/guestbook_ansehen.php">
                                                                                                <input id="inputbutton" type="submit" value="... zum G&auml;stebuch" align="left"/>
                                                                                        </a>
                                                                        </td>
                                                                </tr>
                                                         </table>
                                                  </form>
                                        </div>
                                </div>

PHP-Code: auswertung.php

PHP:
<div id="main_left">
                <h2> Ihr Eintrag </h2>

                <?php
                    $eintrag=$_POST['eintrag'];
                    $groesse_eintrag = strlen($eintrag);
                    $name=$_POST['name'];
                    $vname=$_POST['vname'];
                    $ort=$_POST['ort'];
                                        $email=$_POST['email'];

                    $WT=date("w");
                    $D= date ("d");
                    $N= date ("n");
                    $Y= date ("Y");
                    $Z=date("H:i:s");
                    $WT= array ("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
                                        $MON= array (1=> "Janar", "Februar", "Marz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

                         //Linkerror meiner Besucher- und Gästeeinträge
                         $eintrag=htmlspecialchars($eintrag);
                         $name=strip_tags($name);
                         $vname=strip_tags($vname);
                         $ort=strip_tags($ort);
                         $email=strip_tags($email);

                         //Datenzusammenfassung
                         $daten=$vname." ".$name." mit der Email: <a href=\"mailto:".$email."\">".$email."</a> aus ".$ort." hat folgenden Eintrag am $WT[$W] den $D.$MON[$N]&nbsp;$Y um $Z verfasst: ".$eintrag."<br/><br/>";

                         //Datenbank
                         $datenbank = "daten.dat";
                         $datei = fopen($datenbank,"r+");

                         //Inhalt auslesen
                         $old_data = fread($datei, filesize($datenbank));
                         $daten = $daten.$old_data;

                         //Daten schreiben
                         rewind($datei);

                                                if (fwrite($datei, $daten)) {

                                                        if ((!empty($vname))&&(!empty($name))&&(!empty($ort))&&(!empty($email))&&(!empty($eintrag))) {
                                                                echo "<b> Ihr Eintrag war erfolgreich! </b><br/><br/><br/>";

                                                                if (strstr($email, "@")){
                                                                        echo "Bitte best&auml;tigen Sie den Button um zu Ihrem Eintrag im G&auml;stebuch zu gelangen! <br/><br/><hr/>";

                                                                        if(($groesse_eintrag < 10)||($groesse_eintrag > 500)) {
                                                                                echo "Ihr Eintrag sollte zwischen 10 und 500 Zeichen liegen <br/><br/><br/><br/>";

                                                                        }else{
                                                                                echo "Hier gehts zum G&auml;stebuch und Ihrem Eintrag! <br/><br/><br/>";
                                                                        }

                                                                }else{
                                                                        echo "Bitte f&uuml;llen Sie Ihre email vollst&auml;ndig aus!!! <br/><br/><br/>";
                                                                        echo "<a href=\"../../guestbook.php\"><input type=\"submit\" value=\"Zur&uuml;ck zum Formular\"></input></a><br/><br/><br/>";
                                                                }

                                                        }else{
                                                                echo "Ihr Eintrag war nicht erfolgreich! <br/><br/><br/>";
                                ?>
                                                                        Bitte f&uuml;llen Sie Ihre pers&ouml;nlichen Daten vollst&auml;ndig aus:

                                                 <form action="../../guestbook.php" method="POST">
                                        <input color="#000000" type="hidden" name="name" value="<?php echo $name ?>"/>
                                        <input color="#000000" type="hidden" name="email" value="<?php echo $email ?>"/>

                                        <br/><br/><input id="inputbutton" type="submit" value="Zur&uuml;ck zum Formular"></input><br/><br/><br/>
                                         </form>
                                <?php
                                                        }
                                                }
                                ?>

                <a href="guestbook_ansehen.php">
                                        <input id="inputbutton" type="submit" value="... zum G&auml;stebuch" align="left"/>
                                </a>
            </div>

PHP-Code: ansicht.php

PHP:
<div id="main_left">
                                <div id="guestbook_container">
                                        <h1> Mein G&auml;stebuch! <br/>
                                        Ihr Feedback! </h1>

                                                <?php
                                                        //Inhalt schreiben
                                                        $datenbank = "daten.dat";
                                                        $datei = fopen($datenbank,"r");

                                                        fpassthru($datei);
                                                        fclose($datei);
                                                ?>

                                        <a href="../../guestbook.php"><input id="inputbutton" type="submit" value="weiteren Eintrag ..."/></a>
                                </div>
                        </div>


Ein nächstes Problem ist, dass ich gerne jeden Eintrag in einem kleinem <div>-Container anzeigen lassen möchte, damit etwas Ordnung auf die Seite kommt. Immer wenn ich im php-script eine ID vergebe reagiert das CSS garnicht darauf. Muss ich da etwas beachten??

Und eine andere Frage ist: Wie kann ich in meinem Script am einfachsten prüfen ob in einer email ein @ und ein Punkt vorhanden ist? Ist das überhaupt möglich?

Vielen Dank schon mal!
 

sokie

Mod | Web

AW: Gästebuch auf mehreren Seiten angeben!

aber das Gästebuch schreibt sich bei der Ausgabe unendlichh ins Weite ...
verstehe ich so, dass du lieber nur eine feste Anzahl von Datensätzen ausgeben würdest und gegebenenfalls eine Funktion zum 'weiterklicken' zu den jeweils nächsten?
Du hast weder für den Fall im schreiben deiner daten, noch im Ausgeben des inhalts deiner Datenbankdatei vorbereitungen getroffen. Einfacher wäre es die daten gleich als datensätze (zB csv) zu schreiben, sodass eine ZEILE in der Datenbankdatei genau ein Datensatz(ein Gästebucheintrag) ist.
zb (name;vorname;e-mail;datum;nachricht)und Umbruch, das ganze ohne Formatierungen(keine <br /> keine weiteren html tags etc.
so ist es möglich genau die Anzahl der Datensätze festzulegen, die ausgegeben werden sollen.(fgetcsv())
Und eine andere Frage ist: Wie kann ich in meinem Script am einfachsten prüfen ob in einer email ein @ und ein Punkt vorhanden ist? Ist das überhaupt möglich?
eine ähnliche Überprüfung hst du ja schon drin mit if (strstr($email, "@")){...
die könntest du erweitern:
Code:
if (strstr($email, "@") && strstr($email, ".")){..
obwohl hier ein regulärer Ausdruck wohl besser wäre.
Ein nächstes Problem ist, dass ich gerne jeden Eintrag in einem kleinem <div>-Container anzeigen lassen möchte, damit etwas Ordnung auf die Seite kommt. Immer wenn ich im php-script eine ID vergebe reagiert das CSS garnicht darauf. Muss ich da etwas beachten??
wenn Du einzelne Datensätze hast, und die zB. per fgetcsv() ausgibst, kannst du natürlich um jeden Datensatz ein Div legen.

zwei Sachen sind mir beim kurzen überfliegen des Codes aufgefallen:
Code:
if (fwrite($datei, $daten)) {
hier wird überprüft ob die daten erfolgreich in die Datenbankdatei eingetragen wurden, und nur (und erst dann!) überprüfst du, ob die Einträge valide sind. sie stehen aber dann schon in deiner Datei.

Code:
                    $WT=date("w");
                    $D= date ("d");
                    $N= date ("n");
                    $Y= date ("Y");
                    $Z=date("H:i:s");
                    $WT= array ("Sonntag",...);
hier wird $WT erst mit einem integer belegt und dann gleich mit einem array überschrieben, dein Wert für den 'Tag der Woche' steht später nicht mehr zur Verfügung.
 

declaudi

Nicht mehr ganz neu hier

AW: Gästebuch auf mehreren Seiten angeben!

Das ist dann also ein Fall für die Datenbank. Hui. Heftiges Scripten angesagt.

Gut da danke ich erstmal wie verrückt.

Ich denke ich werde sicher nocheinmal darauf zurück kommen weil wieder irgendwas nicht funktionieren möchte.
 

declaudi

Nicht mehr ganz neu hier

AW: Gästebuch auf mehreren Seiten angeben!

Hab heut einiges ausprobiert aber nix wollte so richtig funktionieren. Zu dem csv habe ich auch nichts so richtig gefunden. Nur was es ist und was es kann. Bin nun aber auf dieses interessante Tut gestoßen:


Ist zwar nicht so richtig das was ich mir vorgestellt hatte, aber wenigstens ein kleiner Anfang in Richtung "Schön". Bis zu Punkt drei klappt alles soweit. Allerdings bei Punkt vier, weiß ich nicht so richtig was mit "Anzeigen" gemeint ist.

Habe schon versucht den Browser. Aber irgendwie tut sich da nix???
 
Zuletzt bearbeitet:

declaudi

Nicht mehr ganz neu hier

AW: Gästebuch auf mehreren Seiten angeben!

@sokie:

Habe gerade eben versucht die Fehler auszubügeln die Du in Deinem vorletztem Post geschrieben hattest. Aber nun tut sich garnichts ehr so richtig in Punkto Fehlermeldung und Sicherheitsüberprüfung.

Da ist das geänderte Script:

guestbook.php:

PHP:
<div id="guestbook_eintrag">
  <form class="form" action="php/guestbook/guestbook_auswertg.php" method="POST">
    <table style="width:500px">
      <tr>
         <td><label for="name">Ihr Name:<em>*</em></label></td>
         <td><input class="field" type="text" name="name" value=""/></td>
      </tr>
      <tr>
        <td><label for="vname">Ihr Vorname:<em>*</em></label></td>
        <td><input class="field" type="text" name="vname" value=""/></td>
      </tr>
      <tr>
         <td><label for="ort">Ihr Ort:<em>*</em></label></td>
         <td><input class="field" type="text" name="ort" value=""/></td>
      </tr>
      <tr>
        <td><label for="email">Ihre email:<em>*</em></label></td>
        <td><input class="field" type="text" name="email" value=""/></td>
      </tr>
      <tr>
        <td><label for="eintrag">Ihr Eintrag:<em>*</em></label></td>
        <td><textarea class="field" type="text" name="eintrag" cols="30" rows="5"></textarea></td>
      </tr>
      <tr>
        <td></td>
        <td><input type="text" name="website" size="10" maxlength="50" style="display: none"/></td>
      </tr>
      <tr>
        <td></td>
        <td>
          <input id="inputbutton" type="submit" value="senden" align="left"/><br/><br/>
          <input id="inputbutton" type="reset" value="Felder zur&uuml;ck setzen" align="left"/><br/><br/>
          <a href="php/guestbook/guestbook_ansehen.php">
             <input id="inputbutton" type="submit" value="... zum G&auml;stebuch" align="left"/>
          </a>
        </td>
      </tr>
    </table>
  </form>
</div>
guestbook_auswertung.php:

PHP:
<?php
$eintrag=$_POST['eintrag'];
$groesse_eintrag = strlen($eintrag);
$name=$_POST['name'];
$vname=$_POST['vname'];
$ort=$_POST['ort'];
$email=$_POST['email'];

$WT=date("w");
$D= date ("d");
$N= date ("n");
$Y= date ("Y");
$Z=date("H:i:s");
$WT= array ("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
$MON= array (1=> "Janar", "Februar", "Marz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

//Linkerror meiner Besucher- und Gästeeinträge
$eintrag=htmlspecialchars($eintrag);
$name=strip_tags($name);
$vname=strip_tags($vname);
$ort=strip_tags($ort);
$email=strip_tags($email);

//Spam verhindern
function filter($message) {
    if(!empty($_POST['website'])) {
       $error = true;
       $errormsg .= 'Spambot identifiziert! <br />';
    }
                                                        
 //Böse Wörter Error
$badwords = array("viagra", "porn", "drog", "canna");
foreach ($badwords as $word) {
     if(eregi($word, $message)) {
        $error = true;
     }
}if($error) {
     echo('Im Beitrag wurden nicht erlaubte Wörter verwendet! <br/>');
     echo('Deshalb kann Ihr Eintrag nicht weitergeleitet werden! <br/>');
     echo('Ich bitte um Ihr Verst&auml;ndnis!');
     header("refresh:3;url=../../index.php");
}
return $errormsg;
}

//Datenzusammenfassung
$daten=$vname." ".$name." mit der Email: <a href=\"mailto:".$email."\">".$email."</a> aus ".$ort." hat folgenden Eintrag am $WT[$W] den $D.$MON[$N]&nbsp;$Y um $Z verfasst: ".$eintrag."<br/><br/>";

//Datenbank
$datenbank = "daten.dat";
$datei = fopen($datenbank,"r+");

//Inhalt auslesen
$old_data = fread($datei, filesize($datenbank));
$daten = $daten.$old_data;

//Daten schreiben
rewind($datei);

if ((!empty($vname))&&(!empty($name))&&(!empty($ort))&&(!empty($email))&&(!empty($eintrag))) {
     echo "<b> Ihr Eintrag war erfolgreich! </b><br/><br/><br/>";

   if ((strstr($email, "@"))&&(strstr($email, "."))){
        echo "Ihre email-Daten waren vollst&auml;ndig! <br/><br/><hr/>";

      if(($groesse_eintrag < 10)||($groesse_eintrag > 300)) {
           echo "Ihr Eintrag sollte zwischen 10 und 300 Zeichen liegen <br/><br/><br/><br/>";

        if (fwrite($datei, $daten)) {
             }else{
             echo "";
             }

      }else{
           echo "Hier gehts zum G&auml;stebuch und Ihrem Eintrag! <br/><br/><br/>";
      }
   }else{
        echo "Bitte f&uuml;llen Sie Ihre email vollst&auml;ndig aus!!! <br/><br/><br/>";
        echo "<a href=\"../../guestbook.php\"><input type=\"submit\" value=\"Zur&uuml;ck zum Formular\"></input></a><br/><br/><br/>";
 }
 }else{
      echo "Ihr Eintrag war nicht erfolgreich! <br/><br/><br/>";
 ?>
      Bitte f&uuml;llen Sie Ihre pers&ouml;nlichen Daten vollst&auml;ndig aus:
         <form action="../../guestbook.php" method="POST">
          <input color="#000000" type="hidden" name="name" value="<?php echo $name ?>"/>
          <input color="#000000" type="hidden" name="email" value="<?php echo $email ?>"/>
          <br/><br/><input id="inputbutton" type="submit" value="Zur&uuml;ck zum Formular"></input><br/><br/><br/>
        </form>
<?php
}
?>

<a href="guestbook_ansehen.php">
     <input id="inputbutton" type="submit" value="... zum G&auml;stebuch" align="left"/>
</a>
in der Ausgabedatei habe ich nichts verändert.

Das Problem, oder die Probleme sind:

- es kommt keine Fehlerausgabe bei "@" && "." Abfrage
- die grösse_eintrag - Meldung kommt zwar wenn mein Eintrag zu kurz ist, jedoch leitet er den Eintrag dennoch weiter.
- am Beginn des Scriptes habe ich eine "Linksperre" eingefügt. Es stoppt zwar den Vorgang in dem er den Eintrag zwar nicht einfügt, aber es wird dennoch zum Gästebuch frei gegeben und die Fehlermeldung bleibt aus.

Wie meinst Du das mit der $WT - Variable? Versteh ich das richtig? Eine der beiden Variablen muss gelöscht werden, weil sie sich gegenseitig aufheben?

Ich weiß echt nicht mehr woran es liegen könnte. Bin das Script schon mehrmals durchlaufen ...

Vielen Dank schon mal
 
Zuletzt bearbeitet:

Doitsu

Aktives Mitglied

AW: Gästebuch auf mehreren Seiten angeben!

Also erstmal: Dein Code ist Extrem schwer zu lesen.
-
- nicht um jeden Ausdruck in einer if-Bedingung muss eine Klammer stehen.
z.B.
PHP:
if ((!empty($vname))&&(!empty($name))&&(!empty($ort))&&(!empty($email))&&(!empty($eintrag))) {
->
PHP:
if (!empty($vname) && !empty($name) &&
    !empty($ort) && empty($email) &&
    !empty($eintrag)) {

Dann zu deinen Problemen:
eMail ueberpruefen meinte sokie schon, nehme ein preg_match befehl..
hier findest du einige. Ansonsten sehe ich da keinen Fehler.

2. die Fehlermeldung 'groesse_eintrag' - Das ist doch genau das, was du willst?
PHP:
if(($groesse_eintrag < 10)||($groesse_eintrag > 300)) {
Wenn der Eintrag kleiner als 10, oder groesser als 300 ist, Meldung ausgeben und Daten schreiben. Ansonsten Meldung 'Hier gehts zum G&auml;stebuch und Ihrem Eintrag' zurueckgeben

3. Hae?

4.
PHP:
$WT=date("w");
 $WT= array ("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
Da, zuerst wird der Wochentag rein geschrieben, danach mit dem Array ueberschrieben.
Was du machen musst waere
PHP:
$wt = date("w");
$wt_array = array("Sonntag", "Montag", "Dienstag", "Mittwoch",
    "Donnerstag", "Freitag", "Samstag");
$wt = $wt_array[$wt];
 

declaudi

Nicht mehr ganz neu hier

AW: Gästebuch auf mehreren Seiten angeben!

@Doitsu:

Sorry erstmal für das extrem schwer lesbare Script. Ich habe es gleich ausgebessert.

Leider funktioniert das ohne Klammer um jede einzelne if-Bedingung nicht. Ich habe es bei mir gerade ausprobiert. Da kommt dann immer Syntax error in line ...

zu2.: Ja die Ausgabe kommt, das ist schon richtig und das auch genau zur richtigen Zeit. Jedoch schreibt sich dann der Eintrag trotzdem ins Gästebuch. Der Button kann ja kommen, aber der darauf folgende Eintrag im Gästebuch soll nicht stattfinden!

Der Rest funktioniert nun wieder! Dankeschön!
 

Doitsu

Aktives Mitglied

AW: Gästebuch auf mehreren Seiten angeben!

Hm, evtl. 'ne Klammer zu viel geloescht? Am besten du nimmst meine bedingung, allerdings habe ich eben gesehen, dass ich versehentlich das ! bei empty($email) geloescht habe - das solltest du dann wieder einfuegen.

f(($groesse_eintrag < 10)||($groesse_eintrag > 300)) {
echo "Ihr Eintrag sollte zwischen 10 und 300 Zeichen liegen <br/><br/><br/><br/>";

if (fwrite($datei, $daten)) {
Eben, du gibst die Meldung aus, anschliessend schreibst du die Daten in die Datei..
Also das fwirte gedoense ist zu viel.
 

declaudi

Nicht mehr ganz neu hier

AW: Gästebuch auf mehreren Seiten angeben!

Die Klammern scheinen soweit zu passen. Das Script bleibt unverändert. mmh na gut ich könnte grad so auch ohne diese Abfrage leben und es dann immer noch richtig einfügen. Viel wichtiger ist mir eigentlich die Ausgabe der Einträge in div Container und ein "paging" der Einträge. Dies ist imn Laufe des Themas wieder untergegangen.

Habe nun schon einiges ausprobiert, jedoch möchte nichts so richtig funktionieren.



Bei diesem Tut komm ich ab Punkto 4 nicht weiter. Weiß nicht so recht was da mit Anzeigen gemeint ist. Bei mir schreibt sich über diesen Code nichts in die DB. Und zum Thema csv finde ich nicht wirklich etwas ...
 
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

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.454
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben