Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

  1. #1
    Youngster
    Registriert seit
    22.11.2016
    Beiträge
    19
    Danke
    14
    Bekam 0 mal "Danke" in 0 Postings

    Frage Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Hallo an alle!
    Wir haben eine kleine Frage:
    Wir haben mehrere Felder in einem Formular, die man ausfüllen kann. Jedoch wollen wir es so einstellen, dass man nicht ALLE Felder ausfüllen MUSS. D.h. wenn man lediglich Vorname und Geburtsdatum eingeben würde, oder eine andere Kombination oder ein einzelnes Feld.
    Wie kriegen wir das hin?
    Unser Skript:

    PHP-Code:
    <head>
    <meta charset="utf-8">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
      <link rel="stylesheet" href="main.css">
    </head>
    <body>
    <?php
    $db 
    mysqli_connect("localhost","root","","familytreefinder")
        or die(
    "Verbindung zu MySQL oder der Datenbank gescheitert.");
    mysqli_set_charset($db"utf8");
    ?>
    <form>
    <label>Vorname eingeben</label><br>
    <input name="vorname" type="text"><br>
    <label>Nachname eingeben</label><br>
    <input name="nachname" type="text"><br>
    <label>Geschlecht wählen</label><br>
    <select name="geschlecht" class="form-control">
      <option>w</option>
      <option>m</option>
    </select><br>
    <label>Geburtsdatum angeben</label><br>
    <input name="gebdatum" type="text"><br>
    <button type="submit" name="suchen" class="btn btn-default">Suchen</button>
    </form>

    <?php

    if (isset ($_GET["suchen"]) || ($_GET["geschlecht"]) || ($_GET["vorname"]) || ($_GET["nachname"]) || ($_GET["gebdatum"]) )
    {
        
    $geschlecht trim($_GET["geschlecht"]);
        
    $geschlecht preg_replace("/m,w/"""$geschlecht);
        
    $vorname trim($_GET["vorname"]);
        
    $vorname preg_replace("/a-z/"""$vorname);
        
    $nachname trim($_GET["nachname"]);
        
    $nachname preg_replace("/a-z/"""$nachname);
        
    $gebdatum trim($_GET["gebdatum"]);
        
    $gebdatum preg_replace("/1-9/"""$gebdatum);
        
        
    $sql "SELECT * FROM person WHERE Geschlecht = '".$geschlecht."' AND Vorname = '".$vorname."' AND Nachname = '".$nachname."' AND Geburtsdatum = '".$gebdatum."'";
        
    $ergebnis mysqli_query($db$sql);
        
        echo 
    "<table border = '1' style = 'border-spacing: 0;'>\n";
        echo 
    "<tr><th>ID</th><th>Geschlecht</th><th>Titel</th><th>Vorname</th><th>Nachname</th><th>Geburtsdatum</th><th>Geburtsname</th><th>Geburtsort</th><th>Beruf</th><th>Sterbedatum</th><th>Sterbeort</th><th>Notitzen</th></tr>";
        while (
    $row mysqli_fetch_assoc($ergebnis)) 
        {
            echo 
    "<tr>";
            foreach (
    $row as $key => $value)
            {
                echo 
    "<td> $value&nbsp;</td>\n";
            }
            echo 
    "<tr>";
        }
        echo 
    "</table>\n";
    }


    mysqli_close($db);


    ?>
    </body>
    Danke im Voraus!
    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 !!!!!
    Geändert von Arne Drews (22.11.2016 um 16:41 Uhr) Grund: MOD: Bitte PHP-Tags verwenden, danke

  2. #2
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.075
    Danke
    21
    Bekam 110 mal "Danke" in 109 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Hallo,

    Ihr solltet unabhängig davon das Formular per POST senden lassen
    HTML-Code:
    <form method="post">
        <label>Vorname eingeben</label><br>
        <input name="vorname" type="text"><br>
        <label>Nachname eingeben</label><br>
        <input name="nachname" type="text"><br>
        <label>Geschlecht wählen</label><br>
        <select name="geschlecht" class="form-control">
            <option>w</option>
            <option>m</option>
        </select><br>
        <label>Geburtsdatum angeben</label><br>
        <input name="gebdatum" type="text"><br>
        <button type="submit" name="suchen" class="btn btn-default">Suchen</button>
    </form>
    Dann müsst ihr einfach nur die empfangenen Daten "filtern", ob diese leer sind, als Beispiel:
    PHP-Code:
    // wenn das formular abgesendet wurde
    if ( isset($_POST['suchen']) ) {

        
    // relevante Felder
        
    $aFields = [
                
    'geschlecht' => trim($_POST['geschlecht']),
                
    'vorname' => trim($_POST['vorname']),
                
    'nachname' => trim($_POST['nachname']),
                
    'gebdatum' => trim($_POST['gebdatum'])
            ];

        
    // nur befüllte felder filtern
        
    $aFields_Filtered array_filter'empty'$aFields );

        
    // where bedingungen zusammenfügen
        
    $sWhere '';

        foreach ( 
    $aFields_Filtered as $key=>$value )
            
    $sWhere .= $key "='" $value "'";

        
    $sql "SELECT * FROM person WHERE " $sWhere;
        
    $ergebnis mysqli_query($db$sql);

        
    // rest des codes (unverändert)    
        
    echo "<table border = '1' style = 'border-spacing: 0;'>\n";
        echo 
    "<tr><th>ID</th><th>Geschlecht</th><th>Titel</th><th>Vorname</th><th>Nachname</th><th>Geburtsdatum</th><th>Geburtsname</th><th>Geburtsort</th><th>Beruf</th><th>Sterbedatum</th><th>Sterbeort</th><th>Notitzen</th></tr>";

        while (
    $row mysqli_fetch_assoc($ergebnis)) {

            echo 
    "<tr>";

            foreach (
    $row as $key => $value) {

                echo 
    "<td> $value&nbsp;</td>\n";

            }

            echo 
    "<tr>";

        }

        echo 
    "</table>\n";


    ungetestet, sollte aber in etwa hinhauen...

  3. Folgende User finden die Antwort von Arne Drews gut:


  4. #3
    Youngster
    Themenstarter

    Registriert seit
    22.11.2016
    Beiträge
    19
    Danke
    14
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Hallo,

    erst mal vielen Dank für die schnelle und ausführliche Antwort.
    Wir haben das alles jetzt so verbessert, allerdings kommen jetzt wieder ziemlich viele Fehlermeldungen:

    Undefined variable: POST in den jeweiligen Zeilen, die wir bei $aFields verwenden, obwohl sie oben im form angegeben ist

    Warning: array_filter() expects parameter 1 to be array

    Warning: Invalid argument supplied for foreach()

    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result

    Wir sind jetzt ein bisschen überfordert. Das ist ein Projekt in für die Uni und wir müssen zum ersten Mal wirklich eine Datenbank in eine Website miteinbauen, weshalb wir noch ziemliche Anfänger sind

  5. #4
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.075
    Danke
    21
    Bekam 110 mal "Danke" in 109 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Hallo,

    Der einzige Fehler ist der erste, der Rest sind Folgefehler.
    Zeig bitte mal euer aktuelles Script, ich vermute, ihr habt $POST verwendet, anstatt $_POST

  6. Folgende User finden die Antwort von Arne Drews gut:


  7. #5
    Youngster
    Themenstarter

    Registriert seit
    22.11.2016
    Beiträge
    19
    Danke
    14
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Ah, ups

    Code:
    <head>
    <meta charset="utf-8">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
      <link rel="stylesheet" href="main.css">
    </head>
    <body>
    <?php
    $db = mysqli_connect("localhost","root","","familytreefinder")
        or die("Verbindung zu MySQL oder der Datenbank gescheitert.");
    mysqli_set_charset($db, "utf8");
    ?>
    <form method=post>
    <label>Vorname eingeben</label><br>
    <input name="vorname" type="text"><br>
    <label>Nachname eingeben</label><br>
    <input name="nachname" type="text"><br>
    <label>Geschlecht wählen</label><br>
    <select name="geschlecht" class="form-control">
      <option>w</option>
      <option>m</option>
    </select><br>
    <label>Geburtsdatum angeben</label><br>
    <input name="gebdatum" type="text"><br>
    <button type="submit" name="suchen" class="btn btn-default">Suchen</button>
    </form>
    
    
    <?php
    
    
    if (isset ($_POST["suchen"]) )
    {
        $aFields = [
        'geschlecht' => trim($POST['geschlecht']),
        'vorname' => trim($POST['vorname']),
        'nachname' => trim($POST['nachname']),
        'gebdatum' => trim($POST['gebdatum'])
        ];
        
        $aFields_Filtered = array_filter('empty',$aFields);
        
        $sWhere = '';
        
        foreach ($aFields_Filtered as $key=>$value)
            $sWhere .= $key . "='" . $value . "'";
        
        $sql = "SELECT * FROM person WHERE" . $sWhere;
        $ergebnis = mysqli_query($db, $sql);
        
        echo "<table border = '1' style = 'border-spacing: 0;'>\n";
        echo "<tr><th>ID</th><th>Geschlecht</th><th>Titel</th><th>Vorname</th><th>Nachname</th><th>Geburtsdatum</th><th>Geburtsname</th><th>Geburtsort</th><th>Beruf</th><th>Sterbedatum</th><th>Sterbeort</th><th>Notitzen</th></tr>";
        while ($row = mysqli_fetch_assoc($ergebnis)) 
        {
            echo "<tr>";
            foreach ($row as $key => $value)
            {
                echo "<td> $value&nbsp;</td>\n";
            }
            echo "<tr>";
        }
        echo "</table>\n";
    }
    
    
    
    
    mysqli_close($db);
    
    
    
    
    ?>
    </body>

    Aber die unteren drei Fehlermeldungen bleiben trotzdem

  8. #6
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.075
    Danke
    21
    Bekam 110 mal "Danke" in 109 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Ah ja, mein Fehler, die Parameter sind vertauscht.
    Bitte die Zeile mal so abändern:
    Code:
    $aFields_Filtered = array_filter($aFields, 'empty');
    Die anderen beiden sollten dann aber wieder Folgefehler und damit auch behoben sein.

  9. Folgende User finden die Antwort von Arne Drews gut:


  10. #7
    Youngster
    Themenstarter

    Registriert seit
    22.11.2016
    Beiträge
    19
    Danke
    14
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Warning: array_filter() expects parameter 2 to be a valid callback, function 'empty' not found or invalid function name

    Warning: Invalid argument supplied for foreach()

    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result

    kommen wieder. Müssen wir da vielleicht noch etwas für den Filter definieren?

  11. #8
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.075
    Danke
    21
    Bekam 110 mal "Danke" in 109 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Das würde bedeuten, dass er die PHP Funktion empty nicht kennt, was ich mir nicht vorstellen kann. Kannst Du bitte nochmal den aktuellen Stand posten? Braucht auch nur der erste PHP-Block bis $sql sein.

    Achso, welche PHP-Version habt ihr?
    findet ihr raus, indem ihr folgendes im PHP-Block einsetzt:
    PHP-Code:
    echo phpversion(); 

  12. Folgende User finden die Antwort von Arne Drews gut:


  13. #9
    Youngster
    Themenstarter

    Registriert seit
    22.11.2016
    Beiträge
    19
    Danke
    14
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Wir haben Version 5.6.14 (Danke für Info, wie man das herausfindet)

    Code:
    <head>
    <meta charset="utf-8">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
      <link rel="stylesheet" href="main.css">
    </head>
    <body>
    <?php
    $db = mysqli_connect("localhost","root","","familytreefinder")
    	or die("Verbindung zu MySQL oder der Datenbank gescheitert.");
    mysqli_set_charset($db, "utf8");
    
    
    echo phpversion();
    ?>
    <form method=post>
    <label>Vorname eingeben</label><br>
    <input name="vorname" type="text"><br>
    <label>Nachname eingeben</label><br>
    <input name="nachname" type="text"><br>
    <label>Geschlecht wählen</label><br>
    <select name="geschlecht" class="form-control">
      <option>w</option>
      <option>m</option>
    </select><br>
    <label>Geburtsdatum angeben</label><br>
    <input name="gebdatum" type="text"><br>
    <button type="submit" name="suchen" class="btn btn-default">Suchen</button>
    </form>
    
    
    <?php
    
    
    if (isset ($_POST["suchen"]) )
    {
    	$aFields = [
    	'geschlecht' => trim($_POST['geschlecht']),
    	'vorname' => trim($_POST['vorname']),
    	'nachname' => trim($_POST['nachname']),
    	'gebdatum' => trim($_POST['gebdatum'])
    	];
    	
    	$aFields_Filtered = array_filter($aFields, 'empty');
    	
    	$sWhere = '';
    	
    	foreach ($aFields_Filtered as $key=>$value)
    		$sWhere .= $key . "='" . $value . "'";

  14. #10
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.075
    Danke
    21
    Bekam 110 mal "Danke" in 109 Postings

    Standard AW: Formulare - wie kann man nicht alle Felder ausfüllen müssen?

    Das Verhalten kannte ich noch gar nicht. Ersetz die Zeile mal gegen das hier:
    PHP-Code:
    $aFields_Filtered = [];
    array_walk$aFields, function ($v$k) use ( &$aFields_Filtered ) { if (!empty($v)) $aFields_Filtered[$k] = $v; } ); 

  15. Folgende User finden die Antwort von Arne Drews gut:


Ähnliche Themen

  1. Formular Felder Automatisch ausfüllen lassen
    Von Muecke.1982 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 13.07.2014, 18:46
  2. Felder automatisch ausfüllen
    Von earthbraker im Forum HTML & CSS Forum
    Antworten: 16
    Letzter Beitrag: 29.06.2010, 19:40
  3. mit php alle felder in mysql addieren
    Von Walerik im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 08.11.2007, 17:20
  4. Formulare automatisch ausfüllen
    Von funtana im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 11.03.2007, 10:31
  5. [Photoshop] - [Frage]Kann nicht alle Filter Anwenden.
    Von Gast im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 5
    Letzter Beitrag: 19.08.2005, 17:54

Stichworte

Berechtigungen

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