Web PHP-Formulare

Dieses Thema im Forum "Programmierung" wurde erstellt von AnonymusChaotic, 30. Juli 2014.

  1. AnonymusChaotic
    Offline

    AnonymusChaotic

    Registriert seit:
    22. November 2013
    Beiträge:
    762
    Ort:
    Wien, Österreich
    Minecraft:
    AnonymusChaotic
    hallo, ich bin gerade dabei mir PHP beizubringen.
    Momentan kämpfe ich gerade mit einem Formular. Dieses sollte die folgende Funktion haben:
    Die Seite index.php wird aufgerufen, auf dieser befindet sich folgendes Script:

    PHP:
    1. <form action="send.php" method="post">
    2.  <p>Ihr Name: <input type="text" name="username" /></p>
    3.  <p>Ihr Alter: <input type="text" name="alter" /></p>
    4.  <p><input type="submit" /></p>
    5. </form>
    6.  
    Man gibt die Daten ein und klickt auf absenden.

    Nun wird die Datei send.php aufgerufen. Diese hat folgenden Code:

    PHP:
    1. <?php
    2. $username = $_POST['username'];
    3.  
    4. if ( empty ($_POST['username']) == TRUE )
    5. {
    6. echo
    7. "
    8. <form action=\"send.php\" method=\"post\">
    9. BITTE GEBEN SIE IHREN NAMEN AN!
    10. <p>Ihr Name: <input type=\"text\" name=\"username\" value\=\" $username \" /></p>
    11.  
    12. <p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
    13. <p><input type=\"submit\" /></p>
    14. </form>
    15. ";
    16. }
    17. if (empty ($_POST['alter']) == TRUE ) {
    18. echo "
    19. <form action=\"send.php\" method=\"post\">
    20. <p>Ihr Name: <input type=\"text\" name=\"name\" value\=\" $_POST[username]\" /></p>
    21. BITTE GEBEN SIE IHR ALTER AN!
    22. <p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
    23. <p><input type=\"submit\" /></p>
    24. </form>
    25. ";
    26. }
    27. else{
    28. echo 'Danke!'
    29.  
    30. ;};
    31. ?>
    32.  
    Sind alle Felder ausgefüllt wird Danke! angezeigt, sind nicht alle ausgefüllt, soll das Formular erneut angezeigt werden mit dem Hinweis, dass das entsprechende Feld auszufüllen ist.

    Bdie bereits eingefüllten Daten sollen aber nicht verloren sein (ist erfahrungsgemäß nervig;))

    Klappt mittlerweile auch schon :)

    Meine Bitte an Euch ist dass Ihr euch mal den Code anschaut und mir sagt, was ich daran noch verbessern kann bzw. welche Anfängerfehler ich gemacht habe, bevor ich morgen weiter mit denen arbeite :)
    (und ob man das mit den 2xif so machen darf und ob es im formular bei $_POST[username] egal ist ob man $_POST[username] oder $_POST['username'] schreibt. (mit dem 2. habe ich es iwie nicht hinbekommen)


    Freue mich auf hilfreiche Tipps,
    lg. Ano

    //EDIT:

    Wenn man bei index.php den namen frei lässt und alter mit etwas befüllt kommt bei aufruf der send.php zusätzlich zum Formular die Nachricht DANKE!. Das soll nicht sein, wie behebe ich das?

    Wenn man bei der send.php den namen ein zweites mal nicht eingibt erhält man trotzdem die Danke-Nachricht - Das soll auch behoben werden.

    Könnt ihr mir dabei helfen? (und nach Möglichkeit bitte die Erklärung in Worte fassen, für mich als Anfänger ist er verdammt schwer einen vorgefertigten Code exakt zu verstehen;))

    //EDIT2: Öhm ja, wenn man beides frei lässt wid das Forular doppelt gezeigt, auch nicht unbedingt ideal ... Sollte das Teil wohl noch generalüberholen
     
    #1
  2. McLive
    Offline

    McLive

    Registriert seit:
    18. Juli 2012
    Beiträge:
    67
    So vielleicht? :x Hab leider grad nichts zum testen da ...
    Code (Text):
    1. <?php
    2.  
    3. $username = $_POST['username'];
    4.  
    5. if ( empty ($_POST['username']) ) {
    6.     echo
    7.     "
    8.     <form action=\"send.php\" method=\"post\">
    9.     BITTE GEBEN SIE IHREN NAMEN AN!
    10.     <p>Ihr Name: <input type=\"text\" name=\"username\" value\=\" $username \" /></p>
    11.  
    12.     <p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
    13.     <p><input type=\"submit\" /></p>
    14.     </form>
    15.     ";
    16. }
    17. if (empty ($_POST['alter']) && !empty($_POST['username']) ) {
    18.     echo "
    19.     <form action=\"send.php\" method=\"post\">
    20.     <p>Ihr Name: <input type=\"text\" name=\"name\" value\=\" $_POST[username]\" /></p>
    21.     BITTE GEBEN SIE IHR ALTER AN!
    22.     <p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
    23.     <p><input type=\"submit\" /></p>
    24.     </form>
    25.     ";
    26. }
    27. if(!empty($_POST['username']) && !empty($_POST['alter']) ){
    28.     echo 'Danke!';
    29. }
    30.  
    31. ?>
    Edit: Glaube das hier triffts besser:
    Code (Text):
    1. <?php
    2.  
    3. if ( empty ($_POST['username']) || empty($_POST['alter']) ) { ?>
    4.     <form action="send.php" method="post">
    5.         <?php if ( empty ($_POST['username']) ) { echo "BITTE GEBEN SIE IHREN NAMEN AN!"; } ?>
    6.         <p>Ihr Name: <input type="text" name="username" value=" <?php echo $_POST['username']; ?> "></p>
    7.  
    8.         <?php if ( empty ($_POST['alter']) ) { echo "BITTE GEBEN SIE IHR ALTER AN!"; } ?>
    9.         <p>Ihr Alter: <input type="text" name="alter" value=" <?php echo $_POST['alter']; ?> " ></p>
    10.         <p><input type="submit" ></p>
    11.     </form>
    12.    
    13. <?php
    14.  
    15. } else {
    16.     echo 'Danke!';
    17. }
    18.  
    19. ?>
    Auch ungetestet
     
    #2
    1 Person gefällt das.
  3. Elrontur
    Offline

    Elrontur Ehem. Teammitglied

    Registriert seit:
    5. April 2013
    Beiträge:
    138
    Minecraft:
    Elrontur
    Habs mit ein paar Kommentaren ausgestattet. ;) Und du kämst auch relativ einfach, wenn du erstmal bei den <input>'s ein "required" dranhängst. (Bei XHTML glaube ich, musst du ' required="required" ' angeben, oder so. Bin mir aber nicht sicher.)
    Hier mal meine Ideen:

    HTML
    HTML:
    1. <!--
    2.  Alles in <fieldset> gepackt.
    3.  <fieldset>-Beschreibung mit <legend> angegeben.
    4.  Textfeld-Namen in <label> gepackt.
    5.  Textfeldern eine ID gegeben -> für anklickbare <label>!
    6.  
    7.  Für <input>-Felder "required" angeben -> Check, ob Feld leer. Wenn Feld leer, keine Absendung des Forumlars!
    8. -->
    9. <form action="send.php" method="post">
    10.   <legend>Angaben</legend>
    11.  
    12.     <p> <label for="username">Username</label> <br>
    13.         <input type="text" name="username" id="username"> </p>
    14.     <p> <label for="alter">Alter</label> <br>
    15.         <input type="text" name="alter" id="alter"> </p>
    16.   </fieldset>
    17.   <p> <input type="submit"> </p>
    18. </form>
    <input> mit "required"-Tag
    HTML:
    1. <form action="send.php" method="post">
    2.   <legend>Angaben</legend>
    3.  
    4.     <p> <label for="username">Username</label> <br>
    5.         <input type="text" name="username" id="username" required> </p>
    6.     <p> <label for="alter">Alter</label> <br>
    7.         <input type="text" name="alter" id="alter" required> </p>
    8.   </fieldset>
    9.   <p> <input type="submit"> </p>
    10. </form>

    PHP
    PHP:
    1. <?php
    2.   // WENN
    3.   //    $_POST['username'] existiert
    4.   // UND
    5.   //    $_POST['username'] nicht leer
    6.   // UND
    7.   //    $_POST['alter'] existiert
    8.   // UND
    9.   //    $_POST['alter'] nicht leer
    10.   if(isset($_POST['username']) AND $_POST['username'] != null AND isset($_POST['alter']) AND $_POST['alter'] != null) {
    11.     echo '<p> Danke für die Sendung deiner Daten! </p>
    12.          <p> Du hast angegeben: <br>
    13.              Username = '.$_POST['username'].' <br>
    14.              Alter = '.$_POST['alter'].' </p>
    15.          <p> <a href="index.php">Zurück</a> </p>';
    16.  
    17.   // ANSONSTEN...
    18.   // (WENN MINDESTENS EINE ANGABE NICHT ÜBEREINSTIMMT.)
    19.   } else {
    20.     // STARTE FORMULAR-CODE
    21.    
    22.     // acion="send.php" -> action="'.basename($_SERVER['PHP_SELF']).'"
    23.     // basename($_SERVER['PHP_SELF']) GIBT LETZTEN TEIL EINES PFADES AN, HIER ALSO 'send.php'!
    24.     echo '<form action="'.basename($_SERVER['PHP_SELF']).'" method="post">
    25.            <fieldset>
    26.            <legend>Angaben</legend>';
    27.    
    28.    
    29.     // ------------------
    30.     // PHP-CHECK ANFANG
    31.     // ------------------
    32.    
    33.     // WENN
    34.     //    $_POST['username'] existiert
    35.     // UND
    36.     //    $_POST['username'] nicht leer
    37.     if(isset($_POST['username']) AND $_POST['username'] != null) {
    38.       echo '  <p> <label for="username">Username</label> <br>
    39.                  <input type="text" name="username" value="'.$_POST['username'].'"> </p>';
    40.    
    41.     // ANSONSTEN...
    42.     // (WENN MINDESTENS EINE ANGABE NICHT ÜBEREINSTIMMT.)
    43.     } else {
    44.       echo '  <p> GIB DEINEN NAMEN AN! </p>
    45.              <p> <label for="username">Username</label> <br>
    46.                  <input type="text" name="username"> </p>';
    47.     }
    48.    
    49.     if(isset($_POST['alter']) AND $_POST['alter'] != null) {
    50.       echo '  <p> <label for="alter">Alter</label> <br>
    51.                  <input type="text" name="alter" value="'.$_POST['alter'].'"> </p>';
    52.     } else {
    53.       echo '  <p> GIB DEIN ALTER AN! </p>
    54.              <p> <label for="alter">Alter</label> <br>
    55.                  <input type="text" name="alter"> </p>';
    56.     }
    57.    
    58.     // ------------------
    59.     // PHP-CHECK ENDE
    60.     // ------------------
    61.    
    62.    
    63.     // BEENDE FORMULAR-CODE
    64.     echo '  </fieldset>
    65.            <p> <input type="submit"> </p>
    66.          </form>';
    67.   }
    68. ?>
     
    #3
    1 Person gefällt das.
  4. AnonymusChaotic
    Offline

    AnonymusChaotic

    Registriert seit:
    22. November 2013
    Beiträge:
    762
    Ort:
    Wien, Österreich
    Minecraft:
    AnonymusChaotic
    Danke

    McLive: Die Ausgabe des ersten codes nach vollständigem Ausfüllen.
    [__________ ] steht für ein Formularfeld:
    Der zweite Code klappt soweit, allerdings wird nach erneutem leeren absenden Danke! angezeigt, obwohl die Eingabe noch nötig wäre.


    Elonturs Code klappt perfekt, ich muss ihn jetzt dann nur noch versehen :)



    Vielen Dank für die Hilfe!
     
    #4
  5. AnonymusChaotic
    Offline

    AnonymusChaotic

    Registriert seit:
    22. November 2013
    Beiträge:
    762
    Ort:
    Wien, Österreich
    Minecraft:
    AnonymusChaotic
    Ich schreibe jetzt der Übersichtlichkeit halber eine zweite Antwort (sollte sich ein Mod daran stören bitte einfach in den oberen dazukopieren)
    Habe jetzt noch eine Mailadresse hinzugefügt.
    Als nächstes soll das Script die Daten dann auch noch abspeichern - Genug Arbeit für morgen ^^
    Denke die Codes sind so ok ;)


    PHP:
    1.  
    2. <form action="send2.php" method="post">
    3.     <fieldset> <legend>Senden</legend>
    4.         <table>
    5.             <tr>
    6.                 <td style="width: 10em;">
    7.                     <label for="username">Username:</label>
    8.                 </td>
    9.                 <td>
    10.                     <input type="text" maxlength="40" id="username" name="username">
    11.                 </td>
    12.             </tr>
    13.             <tr>
    14.                 <td>
    15.                     <label for="alter">Alter:</label>
    16.                 </td>
    17.                 <td>
    18.                     <input type="number" id="alter" name="alter"/>
    19.                 </td>
    20.             </tr>
    21.  
    22.  
    23.  
    24.         </table>
    25.     </fieldset>
    26.     <fieldset>
    27.         <table>
    28.             <tr>
    29.                 <td style="width: 10em;" >
    30.                     <label for="email">E-Mail</label>
    31.                 </td>
    32.                 <td>
    33.                     <input type="email" maxlength="40" id="email" name="email" />
    34.                 </td>
    35.             </tr>
    36.         </table>
    37.     </fieldset>
    38.     <fieldset>
    39.         <table>
    40.             <tr>
    41.                 <td>
    42.                     <input type="submit" >
    43.                 </td>
    44.                 </td>
    45.             </tr>
    46.         </table>
    47.     </fieldset>
    48. </form>
    49.  

    PHP:
    1.  
    2. <?php
    3. if (isset($_POST['username']) AND $_POST['username'] != NULL AND isset($_POST['alter']) AND $_POST['alter'] != NULL AND isset($_POST['email']) AND $_POST['email'] != NULL)
    4.     {
    5.     echo '
    6.        <p>
    7.        Danke :) <br />
    8.        Deine Angaben zur Kontrolle: <br />
    9.        Username: '.$_POST['username'].' <br />
    10.        Alter:    '.$_POST['alter'].' <br />
    11.        E-Mail:   '.$_POST['email'].'
    12.  
    13. ';
    14.   }
    15.  
    16. else {
    17.     echo '
    18.    <form action="'.basename($_SERVER['PHP_SELF']).'" method="post">
    19.    <fieldset> <legend>Senden</legend>
    20.        <table>
    21.        ';
    22.  
    23.     if(isset($_POST['username']) AND $_POST['username'] != NULL)
    24.     {  echo '
    25.            <tr>
    26.                <td>
    27.                    <label for="username">Username:</label>
    28.                </td>
    29.                <td>
    30.                    <input type="text" maxlength="40" id="username" name="username" value="'.$_POST['username'].'">
    31.                </td>
    32.            </tr>
    33.  
    34.            ';
    35.  
    36.  
    37.     }
    38.     else{
    39.             echo '  <tr>
    40.                <td colspan="2"><b>Bitte gib Deinen Usernamen an!</b></b></td>
    41.            </tr>
    42.            <tr>
    43.                <td>
    44.                    <label for="username">Username:</label>
    45.                </td>
    46.                <td>
    47.                    <input type="text" maxlength="40" id="username" name="username">
    48.                </td>
    49.            </tr>
    50.    ';
    51.     }
    52.     if (isset($_POST['alter']) AND $_POST['alter'] != NULL)
    53.     { echo '
    54.  
    55.            <tr>
    56.                    <td>
    57.                        <label for="alter">Alter:</label>
    58.                    </td>
    59.                    <td>
    60.                        <input type="number" id="alter" name="alter"/>
    61.                    </td>
    62.                </tr>
    63.                <tr>
    64.                    <td>
    65.                        <input type="submit">
    66.                    </td>
    67.                </tr>
    68.  
    69.  
    70.            </table>
    71.        </fieldset>
    72.    </form>';
    73.     }
    74.     else
    75.     { echo '
    76.            <tr>
    77.                <td colspan="2"><b>Bitte gib Dein Alter an!</b></b></td>
    78.            </tr>
    79.            <tr>
    80.                    <td>
    81.                        <label for="alter">Alter:</label>
    82.                    </td>
    83.                    <td>
    84.                        <input type="number" id="alter" name="alter"/>
    85.                    </td>
    86.                </tr>
    87.                <tr>
    88.                    <td>
    89.                        <input type="submit">
    90.                    </td>
    91.                </tr>
    92.  
    93.  
    94.            </table>
    95.        </fieldset>
    96.    </form>';
    97.     }
    98.     if (isset($_POST['email']) AND $_POST['email'] != NULL)
    99.     {
    100.         echo
    101.         '<fieldset>
    102.            <table>
    103.                <tr>
    104.                    <td style="width: 10em;" >
    105.                        <label for="email">E-Mail</label>
    106.                    </td>
    107.                    <td>
    108.                        <input type="email" maxlength="40" id="email" name="email '.$_POST['email'].'" />
    109.                    </td>
    110.                </tr>
    111.            </table>
    112.        </fieldset>'
    113.         ;
    114.     }
    115.     else
    116.     {
    117.         echo
    118.         '<fieldset>
    119.            <table>
    120.                <tr>
    121.                <tr>
    122.                    <td colspan="2" >
    123.                    <b>Bitte gib Deine E-Mail-Adresse an!</b>
    124.                    </td>
    125.                </tr>
    126.                    <td style="width: 10em;" >
    127.                        <label for="email">E-Mail</label>
    128.                    </td>
    129.                    <td>
    130.                        <input type="email" maxlength="40" id="email" name="email" value="" />
    131.                    </td>
    132.                </tr>
    133.            </table>
    134.        </fieldset>'
    135.         ;
    136.     }
    137. }
    138. ?>
    139.  
    140.  
     
    #5
  6. Mineshare
    Online

    Mineshare

    PHP:
    1. if (isset($_POST['username']) AND $_POST['username'] != NULL AND isset($_POST['alter']) AND $_POST['alter'] != NULL AND isset($_POST['email']) AND $_POST['email'] != NULL)
    Das geht kürzer:
    PHP:
    1. if (isset($_POST['username'], $_POST['alter'], $_POST['email']))

    Quelle: http://php.net/manual/de/function.isset.php
     
    #6