Ergebnis 1 bis 5 von 5

Thema: PHP + Formular: Text einschränken

  1. #1
    Youngster
    Registriert seit
    09.04.2004
    Beiträge
    15
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard PHP + Formular: Text einschränken

    Hallo Leute,

    ich habe mir ein PHP Gästebuch aus dem Internet gezogen. Die Gäste geben ihren Text in die Textarea ein und klicken danach auf den "Eintragen Button". Der Text wird danach in meiner SQL Datenbank gespeichert und ausgegeben.

    Meine Fragen:
    1) Ist es möglich einen Zeilenumbruch nach einer bestimmten Anzahl von Zeichen automatisch auszulösen. Ich möchte nicht, dass mein Gästebuch vollgespamt wird.
    2) Kann man irgendwie festlegen, wieviele Zeichen in die Textarea maximal eingegeben werden dürfen?

    Danke schonmal im vorraus. Ich hoffe hier kann mir kann jemand helfen.

    Hier mein Quelltext:

    Code:
    <?php
    // Die "db.php" wird includet. Damit haben wir die Verbindug zu der DB aufgebaut und haben alle Funktionen, die sich in der "db.php" befinden zur Hand.
    include&#40;"db.php"&#41;;
     
    // 1. IF-Abfrage | Hinzufügen eines neuen GB-Eintrages
    // Anweisungen werden ausgeführt, wenn die Variable "$action" den Wert "new" aufweist
    if &#40;$action == "new"&#41; &#123;
       echo "Neuer beitrag
    ";
       // 2. IF-Abfrage | Überprüft die Felder "$vorname" und "$text" auf ihre Vollständigkeit
       if &#40;$vorname != "" && $text != ""&#41; &#123;
            echo "Danke für Ihren Eintrag.
    
    ";
           // Das aktuelle Datum&#40;+Uhrzeit&#41; werden auf die Variable "$datum" verwiesen. Das Datum besteht aus einer Zahlenfolge.
           $datum = time&#40;&#41;;
            // Der neue GB-Eintrag wird in die DB &#40;Tabelle "gaestebuch"&#41; gespeichert
            $sql = "INSERT INTO `gaestebuch` &#40;`name`, `vorname`, `mail`, `icq`, `homepage`, `text`, `datum`&#41;";
           $sql .= "VALUES &#40;'$name', '$vorname', '$mail', '$icq', '$homepage', '$text', '$datum'&#41;;";
          query&#40;$sql&#41;;
       &#125; 
        // Wenn die Felder nicht vollständig ausgefüllt sind, kommt folgende Meldung
      else &#123;
           echo "Sie haben nicht alle Felder ausgef&uuml;t!";
    // 2. IF-Abfrage ENDE
    &#125;
    // 1. IF-Abfrage ENDE
    &#125;
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>G&auml;stebuch</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5">
    </head>
    <body>
    <h1>G&auml;stebuch</h1>
    <h5>Hier k&ouml;nnen Sie einen neuen Eintrag erstellen&#58;</h5>
    
    <form action="gaestebuch.php">
    <table cellpadding="0" cellspacing="5" border="0">
    <tr>
    <td width="100" class="text" align="right">Name&#58;</td>
    <td><input type="text" name="vorname" size="25" ></td>
    </tr>
    
    
    <tr>
    <td class="text" align="right">e-Mail&#58;</td>
    <td><input type="text" name="mail" size="25"></td>
    </tr>
    
    <tr>
    <td class="text" align="right">Homepage&#58;</td>
    <td><input type="text" name="homepage" value="http&#58;//" size="25"></td>
    </tr>
    
    <tr>
    <td class="text" align="right" valign="top">Nachricht&#58;</td>
    <td><textarea cols="35" rows="10" name="text"></textarea></td>
    </tr>
    
    <tr>
    <td class="text">
    
    
    </td>
    <td valign="top" align="right"><input type="submit" value="Eintragen"></td>
    </tr>
    </table>
    
    <input type="hidden" name="action" value="new">
    </form>
    
    
     
     <h1>Alle Eintr&auml;ge&#58;</h1>
    
     <table border="0" width="380" cellpadding="2" cellspacing="0">
     <?php
     // "$persite" legt die Anzahl der GB-Einträge fest, die pro Seite angezeigt werden
     $persite = 5;
    
     // IF-Abfrage und Variable "$page" sind für die Verteilung der GB-Einträge auf mehrere Seiten zuständig
     if&#40;$x == ""&#41; $x = 0;
     $page = $x*$persite;
    
     // In den nächsten 5 Zeilen werden alle GB-Einträge auf einen Array &#40;"$row"&#41; verwiesen
     $result = query&#40;"SELECT * FROM gaestebuch ORDER BY Datum DESC LIMIT  $page,5"&#41;;
     $anzahl = mysql_num_rows&#40;$result&#41;;
     // WHILE-Schleife dient der Wiedergabe aller GB-Einträge, die sich in der DB befinden
     // WHILE-Schleife ANFANG
     while&#40;$row = mysql_fetch_array&#40;$result&#41;&#41; &#123;
        // IF-Abfrage überprüft ob eine Homepageadresse eingetragen ist oder nicht und macht dann eine entsprechende Ausgabe
        if &#40;$row&#91;homepage&#93;=="http&#58;//"&#41; &#123;
            $hp = "keine Homepage";
        &#125; else &#123;
            $hp = "<a href=\"$row&#91;homepage&#93;\" target=\"_blank\">Homepage</a>";
        // IF-Abfrage ENDE
        &#125;
     ?>
     
     <tr>
     <td class="text"><? echo $row&#91;vorname&#93;; ?> <? $row&#91;name&#93;; ?> | e-Mail | <? echo $hp; ?></td>
     </tr>
     <?
    
     // Da das Datum in einer Zahlenfolge in der DB liegt, muss diese zuerst in ein reguläres Datumformat zerlegt werden. Dies geschieht in folgenden 2 Zeilen
     $datum = getdate&#40;$row&#91;datum&#93;&#41;;
     $okay = "$datum&#91;mday&#93;.$datum&#91;mon&#93;.$datum&#91;year&#93; um $datum&#91;hours&#93;&#58;$datum&#91;minutes&#93;";
     ?>
     <tr>
     <td class="text">schrieb am <? echo $okay; ?></td>
     </tr>
     <?
     // IF-Abfrage überprüft ob ein Kommentar vorhanden ist oder nicht und gibt diesen ggf. wieder
     if &#40;$row&#91;8&#93; == ""&#41; $kommentar = "";
     else $kommentar = "Antwort&#58; $row&#91;kommentar&#93;";
     ?>
     <tr>
     <td class="text"> <? echo $row&#91;text&#93;; ?></td></tr>
     <tr>
     <td class="text"></td>
     </tr>
     <tr>
     <td class="comment"><? echo $kommentar; ?></td>
     </tr>
     <tr>
     <td class="text"></td>
     </tr>
     <tr>
     <td class="text"><hr align="center" color="000000" width="100%"></td>
     </tr>
     <tr>
     <td class="text"></td>
     </tr>
     <?
     // WHILE-Schleife ENDE
     &#125;
     ?>
     </table>
     <?
     // Die "menge"-Funktion wird aufgerufen um die Anzahl aller GB-Einträge zu ermitteln
     $count = menge&#40;"gaestebuch"&#41;;
    
     // Im foldendem Abschnitt werden die GB-Einträge auf mehrere "Seiten" aufgeteilt
     $count = $count/$persite;
     // FOR-Schleife ANFANG
     for&#40;$z=0; $z<$count; $z++&#41; &#123;
         $y = $z+1;
         // IF-Abfrage ANFANG
         if &#40;$x != $z&#41; &#123;
                 echo "<a href=\"gaestebuch.php?show=guestbook&kat=site&x=$z\">$y</a> | ";
         &#125; else &#123;
             echo "$y | ";
         // IF-Abfrage ENDE
        &#125;
     // FOR-Schleife ENDE
     &#125;
     ?>
     
     </body>
     </html>
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Moin

    Zu 1:
    Code:
    preg_replace&#40;"/&#40;\S&#123;ANZAHL DER ZEICHEN OHNE ' etc.&#125;&#41;&#40;\S&#41;/", "\\1 \\2", $text&#41;;
    Zu 2:
    Code:
    if&#40;strlen&#40;$text&#41; < 500&#41; &#123; 
    /* Gaaanz viel Code */
    &#125; 
    else &#123;
     echo 'Ihr Eintrag ist zu lang';
    &#125;
    Sollte so gehen.

  3. #3
    Forum Guru
    Registriert seit
    13.01.2005
    Ort
    Schweiz
    Beiträge
    5.240
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    ja, ist natürlich beides möglich, für 2 machst du am besten eine dritte if-abfrage wenn du auf nummer sicher gehen willst, und für 1 gibts eine funktion wordwrap..

    also - die länge des textes und der strings kannst du in den variablen $maxlenght und $stringlength bestimmen.

    Code:
    // 1. IF-Abfrage | Hinzufügen eines neuen GB-Eintrages
    // Anweisungen werden ausgeführt, wenn die Variable "$action" den Wert "new" aufweist
    if &#40;$action == "new"&#41; &#123;
       echo "Neuer beitrag
    ";
       // 2. IF-Abfrage | Überprüft die Felder "$vorname" und "$text" auf ihre Vollständigkeit
       if &#40;$vorname != "" && $text != ""&#41; &#123;
         $maxlength = 500;
         $stringlength = 200;
         // 3. IF-Abfrage | Text darf nicht länger als $maxlength sein
         if &#40;strlen&#40;$text&#41; < $maxlength&#41; &#123;
           echo "Danke für Ihren Eintrag.
    
    ";
           // Das aktuelle Datum&#40;+Uhrzeit&#41; werden auf die Variable "$datum" verwiesen. Das Datum besteht aus einer Zahlenfolge.
           $datum = time&#40;&#41;;
           // Text wird nach $stringlength Zeichen automatisch umgebrochen
           $text = wordwrap&#40;$text, $stringlength, "
    \n"&#41;;
            // Der neue GB-Eintrag wird in die DB &#40;Tabelle "gaestebuch"&#41; gespeichert
            $sql = "INSERT INTO `gaestebuch` &#40;`name`, `vorname`, `mail`, `icq`, `homepage`, `text`, `datum`&#41;";
           $sql .= "VALUES &#40;'$name', '$vorname', '$mail', '$icq', '$homepage', '$text', '$datum'&#41;;";
          query&#40;$sql&#41;;
         &#125;
         else &#123;
           echo "Ihr Text war zu lang - ".$maxlength." Zeichenlimit überschritten!";
         &#125;
         // 3. IF-Abfrage ENDE
       &#125;
        // Wenn die Felder nicht vollständig ausgefüllt sind, kommt folgende Meldung
      else &#123;
           echo "Sie haben nicht alle Felder ausgef&uuml;t!";
    // 2. IF-Abfrage ENDE
    &#125;
    // 1. IF-Abfrage ENDE
    &#125;
    ?>
    sollte klappen so.

    so long

  4. #4
    Youngster
    Themenstarter

    Registriert seit
    09.04.2004
    Beiträge
    15
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Danke für die Hilfe. Ich habe mir den Code von phore in meinen Quelltext kopiert.

    Das von DarkSyranus verstehe ich leider nicht so ganz, bzw. ich weis nicht wo ich die Befehle die mir genannt wurden einfügen soll. Ich hätte vielleicht sagen sollen, dass ich von PHP wirklich gaaar keine Ahnung habe, sry -.-
    Das mit den maximalen "Zeichen eingeben" funktioniert auch schon so wie ich es mir vorstelle. Danke.

    Aber das mit den Zeilenumbruch funktioniert noch nicht so ganz. Ich möchte es am liebsten so haben, dass wenn jemand zB.: "HalloHallohallohallohallohalloHalloHallohallohall ohallohalloHalloHallohallohallohallohallo einträgt, dass dann nach dem 10. Hallo zB in die nächste Zeile gewechselt wird bei der Textaussgabe.
    Also wenn ich den Quelltext von phore nehme funktioniert das nicht, meine ich.
    Oder kann man gleich Wörter, die mehr als 20 Zeichen haben verbieten? @_@

  5. #5
    König(in) Avatar von chris90night
    Registriert seit
    09.09.2006
    Ort
    <?php echo $_SERVER['PHP_SELF']; ?>
    Beiträge
    1.096
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Kann man nicht auch einfach bei dem input tag für sie Textarea das Attribut "maxlength=500" oder so hinzufügen, so mach ich das immer ... was die Maximalzeichen betrifft ...


    Denk immer daran: auch am anderen Ende der Leitung sitzt ein Mensch!

Ähnliche Themen

  1. Text nach Formular abschicken über diesem anzeigen lassen
    Von zahlenmeer im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 9
    Letzter Beitrag: 03.08.2008, 14:43
  2. Text in Page laden + Formular für email + scrollbar
    Von micson im Forum HTML & CSS Forum
    Antworten: 8
    Letzter Beitrag: 03.06.2007, 22:19
  3. Text in input-formular reinstellen
    Von FR0SCH im Forum HTML & CSS Forum
    Antworten: 0
    Letzter Beitrag: 20.11.2006, 22:39
  4. Text statt Submit - Button bei Formular?
    Von Ivanman im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 18.05.2006, 16:43
  5. Textfelder und Text in einem Formular positionieren ?
    Von jay im Forum HTML & CSS Forum
    Antworten: 4
    Letzter Beitrag: 16.11.2004, 13:08

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •