• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PHP-Formulare

AnonymusChaotic

Workaholic
Registriert
22 November 2013
Beiträge
760
Diamanten
0
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:
<form action="send.php" method="post">
 <p>Ihr Name: <input type="text" name="username" /></p>
 <p>Ihr Alter: <input type="text" name="alter" /></p>
 <p><input type="submit" /></p>
</form>

Man gibt die Daten ein und klickt auf absenden.

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

PHP:
<?php
$username = $_POST['username'];

if ( empty ($_POST['username']) == TRUE )
{
echo
"
<form action=\"send.php\" method=\"post\">
BITTE GEBEN SIE IHREN NAMEN AN!
<p>Ihr Name: <input type=\"text\" name=\"username\" value\=\" $username \" /></p>

<p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
<p><input type=\"submit\" /></p>
</form>
";
}
if (empty ($_POST['alter']) == TRUE ) {
echo "
 <form action=\"send.php\" method=\"post\">
 <p>Ihr Name: <input type=\"text\" name=\"name\" value\=\" $_POST[username]\" /></p>
 BITTE GEBEN SIE IHR ALTER AN!
 <p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
 <p><input type=\"submit\" /></p>
</form>
";
}
else{
echo 'Danke!'

;};
?>

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
 
Zuletzt bearbeitet:

McLive

Kuhfänger
Registriert
18 Juli 2012
Beiträge
81
Diamanten
0
So vielleicht? :x Hab leider grad nichts zum testen da ...
Code:
<?php

$username = $_POST['username'];

if ( empty ($_POST['username']) ) {
    echo
    "
    <form action=\"send.php\" method=\"post\">
    BITTE GEBEN SIE IHREN NAMEN AN!
    <p>Ihr Name: <input type=\"text\" name=\"username\" value\=\" $username \" /></p>

    <p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
    <p><input type=\"submit\" /></p>
    </form>
    ";
}
if (empty ($_POST['alter']) && !empty($_POST['username']) ) {
    echo "
    <form action=\"send.php\" method=\"post\">
    <p>Ihr Name: <input type=\"text\" name=\"name\" value\=\" $_POST[username]\" /></p>
    BITTE GEBEN SIE IHR ALTER AN!
    <p>Ihr Alter: <input type=\"text\" name=\"alter\" value\=\" $_POST[alter]\" /></p>
    <p><input type=\"submit\" /></p>
    </form>
    ";
}
if(!empty($_POST['username']) && !empty($_POST['alter']) ){
    echo 'Danke!';
}

?>

Edit: Glaube das hier triffts besser:
Code:
<?php

if ( empty ($_POST['username']) || empty($_POST['alter']) ) { ?>
    <form action="send.php" method="post">
        <?php if ( empty ($_POST['username']) ) { echo "BITTE GEBEN SIE IHREN NAMEN AN!"; } ?>
        <p>Ihr Name: <input type="text" name="username" value=" <?php echo $_POST['username']; ?> "></p>

        <?php if ( empty ($_POST['alter']) ) { echo "BITTE GEBEN SIE IHR ALTER AN!"; } ?>
        <p>Ihr Alter: <input type="text" name="alter" value=" <?php echo $_POST['alter']; ?> " ></p>
        <p><input type="submit" ></p>
    </form>
    
<?php

} else {
    echo 'Danke!';
}

?>
Auch ungetestet
 
Zuletzt bearbeitet:

Elrontur

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
5 April 2013
Beiträge
138
Diamanten
0
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:
<!--
  Alles in <fieldset> gepackt.
  <fieldset>-Beschreibung mit <legend> angegeben.
  Textfeld-Namen in <label> gepackt.
  Textfeldern eine ID gegeben -> für anklickbare <label>!
  
  Für <input>-Felder "required" angeben -> Check, ob Feld leer. Wenn Feld leer, keine Absendung des Forumlars!
-->
<form action="send.php" method="post">
  <fieldset>
  <legend>Angaben</legend>
  
    <p> <label for="username">Username</label> <br>
        <input type="text" name="username" id="username"> </p>
    <p> <label for="alter">Alter</label> <br>
        <input type="text" name="alter" id="alter"> </p>
  </fieldset>
  <p> <input type="submit"> </p>
</form>

<input> mit "required"-Tag
HTML:
<form action="send.php" method="post">
  <fieldset>
  <legend>Angaben</legend>
  
    <p> <label for="username">Username</label> <br>
        <input type="text" name="username" id="username" required> </p>
    <p> <label for="alter">Alter</label> <br>
        <input type="text" name="alter" id="alter" required> </p>
  </fieldset>
  <p> <input type="submit"> </p>
</form>

PHP
PHP:
<?php
  // WENN
  //    $_POST['username'] existiert
  // UND
  //    $_POST['username'] nicht leer
  // UND
  //    $_POST['alter'] existiert
  // UND
  //    $_POST['alter'] nicht leer
  if(isset($_POST['username']) AND $_POST['username'] != null AND isset($_POST['alter']) AND $_POST['alter'] != null) {
    echo '<p> Danke für die Sendung deiner Daten! </p>
          <p> Du hast angegeben: <br>
              Username = '.$_POST['username'].' <br>
              Alter = '.$_POST['alter'].' </p>
          <p> <a href="index.php">Zurück</a> </p>';
  
  // ANSONSTEN...
  // (WENN MINDESTENS EINE ANGABE NICHT ÜBEREINSTIMMT.)
  } else {
    // STARTE FORMULAR-CODE
    
    // acion="send.php" -> action="'.basename($_SERVER['PHP_SELF']).'"
    // basename($_SERVER['PHP_SELF']) GIBT LETZTEN TEIL EINES PFADES AN, HIER ALSO 'send.php'!
    echo '<form action="'.basename($_SERVER['PHP_SELF']).'" method="post">
            <fieldset>
            <legend>Angaben</legend>';
    
    
    // ------------------
    // PHP-CHECK ANFANG
    // ------------------
    
    // WENN
    //    $_POST['username'] existiert
    // UND
    //    $_POST['username'] nicht leer
    if(isset($_POST['username']) AND $_POST['username'] != null) {
      echo '  <p> <label for="username">Username</label> <br>
                  <input type="text" name="username" value="'.$_POST['username'].'"> </p>';
    
    // ANSONSTEN...
    // (WENN MINDESTENS EINE ANGABE NICHT ÜBEREINSTIMMT.)
    } else {
      echo '  <p> GIB DEINEN NAMEN AN! </p>
              <p> <label for="username">Username</label> <br>
                  <input type="text" name="username"> </p>';
    }
    
    if(isset($_POST['alter']) AND $_POST['alter'] != null) {
      echo '  <p> <label for="alter">Alter</label> <br>
                  <input type="text" name="alter" value="'.$_POST['alter'].'"> </p>';
    } else {
      echo '  <p> GIB DEIN ALTER AN! </p>
              <p> <label for="alter">Alter</label> <br>
                  <input type="text" name="alter"> </p>';
    }
    
    // ------------------
    // PHP-CHECK ENDE
    // ------------------
    
    
    // BEENDE FORMULAR-CODE
    echo '  </fieldset>
            <p> <input type="submit"> </p>
          </form>';
  }
?>
 
Zuletzt bearbeitet:

AnonymusChaotic

Workaholic
Registriert
22 November 2013
Beiträge
760
Diamanten
0
Danke

McLive: Die Ausgabe des ersten codes nach vollständigem Ausfüllen.
[__________ ] steht für ein Formularfeld:
$username = $_POST['username']; if ( empty ($_POST['username']) ) { echo "
BITTE GEBEN SIE IHREN NAMEN AN!
Ihr Name: [__________ ]

Ihr Alter: [__________ ]

[__________ ]

"; } if (empty ($_POST['alter']) && !empty($_POST['username']) ) { echo "
Ihr Name: [__________ ]

BITTE GEBEN SIE IHR ALTER AN!
Ihr Alter: [__________ ]

[__________ ]

"; } if(!empty($_POST['username']) && !empty($_POST['alter']) ){ echo 'Danke!'; } ?>
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!
 

AnonymusChaotic

Workaholic
Registriert
22 November 2013
Beiträge
760
Diamanten
0
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:
<form action="send2.php" method="post">
    <fieldset> <legend>Senden</legend>
        <table>
            <tr>
                <td style="width: 10em;">
                    <label for="username">Username:</label>
                </td>
                <td>
                    <input type="text" maxlength="40" id="username" name="username">
                </td>
            </tr>
            <tr>
                <td>
                    <label for="alter">Alter:</label>
                </td>
                <td>
                    <input type="number" id="alter" name="alter"/>
                </td>
            </tr>



        </table>
    </fieldset>
    <fieldset>
        <table>
            <tr>
                <td style="width: 10em;" >
                    <label for="email">E-Mail</label>
                </td>
                <td>
                    <input type="email" maxlength="40" id="email" name="email" />
                </td>
            </tr>
        </table>
    </fieldset>
    <fieldset>
        <table>
            <tr>
                <td>
                    <input type="submit" >
                </td>
                </td>
            </tr>
        </table>
    </fieldset>
</form>

PHP:
<?php
if (isset($_POST['username']) AND $_POST['username'] != NULL AND isset($_POST['alter']) AND $_POST['alter'] != NULL AND isset($_POST['email']) AND $_POST['email'] != NULL)
    {
    echo '
        <p>
        Danke :) <br />
        Deine Angaben zur Kontrolle: <br />
        Username: '.$_POST['username'].' <br />
        Alter:    '.$_POST['alter'].' <br />
        E-Mail:   '.$_POST['email'].'

';
  }

else {
    echo '
    <form action="'.basename($_SERVER['PHP_SELF']).'" method="post">
    <fieldset> <legend>Senden</legend>
        <table>
        ';

    if(isset($_POST['username']) AND $_POST['username'] != NULL)
    {  echo '
            <tr>
                <td>
                    <label for="username">Username:</label>
                </td>
                <td>
                    <input type="text" maxlength="40" id="username" name="username" value="'.$_POST['username'].'">
                </td>
            </tr>

            ';


    }
    else{
            echo '  <tr>
                <td colspan="2"><b>Bitte gib Deinen Usernamen an!</b></b></td>
            </tr>
            <tr>
                <td>
                    <label for="username">Username:</label>
                </td>
                <td>
                    <input type="text" maxlength="40" id="username" name="username">
                </td>
            </tr>
    ';
    }
    if (isset($_POST['alter']) AND $_POST['alter'] != NULL)
    { echo '

            <tr>
                    <td>
                        <label for="alter">Alter:</label>
                    </td>
                    <td>
                        <input type="number" id="alter" name="alter"/>
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="submit">
                    </td>
                </tr>


            </table>
        </fieldset>
    </form>';
    }
    else
    { echo '
            <tr>
                <td colspan="2"><b>Bitte gib Dein Alter an!</b></b></td>
            </tr>
            <tr>
                    <td>
                        <label for="alter">Alter:</label>
                    </td>
                    <td>
                        <input type="number" id="alter" name="alter"/>
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="submit">
                    </td>
                </tr>


            </table>
        </fieldset>
    </form>';
    }
    if (isset($_POST['email']) AND $_POST['email'] != NULL)
    {
        echo
        '<fieldset>
            <table>
                <tr>
                    <td style="width: 10em;" >
                        <label for="email">E-Mail</label>
                    </td>
                    <td>
                        <input type="email" maxlength="40" id="email" name="email '.$_POST['email'].'" />
                    </td>
                </tr>
            </table>
        </fieldset>'
        ;
    }
    else
    {
        echo
        '<fieldset>
            <table>
                <tr>
                <tr>
                    <td colspan="2" >
                    <b>Bitte gib Deine E-Mail-Adresse an!</b>
                    </td>
                </tr>
                    <td style="width: 10em;" >
                        <label for="email">E-Mail</label>
                    </td>
                    <td>
                        <input type="email" maxlength="40" id="email" name="email" value="" />
                    </td>
                </tr>
            </table>
        </fieldset>'
        ;
    }
}
?>
 
M

Mineshare

Guest
PHP:
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:
if (isset($_POST['username'], $_POST['alter'], $_POST['email']))

Wenn mehrere Parameter übergeben werden, gibt isset() nur dann TRUE zurück, wenn alle Parameter belegt sind. Die Auswertung geht von links nach rechts und wird abgebrochen, sobald eine Variable nicht belegt ist.
[...]
Gibt TRUE zurück, wenn var existiert einen von NULL verschiedenen Wert hat, andernfalls FALSE.


Quelle: http://php.net/manual/de/function.isset.php
 
Oben