Announcement

Collapse
No announcement yet.

Auf checkbox prüfen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Auf checkbox prüfen

    Moin,

    ich möchte, wenn die checkbox gesetzt ist, ein ja in die Datenbank schreiben und wenn sie nicht gesetzt ist, ein nein.
    Ich kann einwandfrei in die Datenbank schreiben, nur die Prüfung ob die checkbox gesetzt ist funktioniert nicht, da er immer ja reinschreibt.Was habe ich falsch gemacht?

    Ich möchte zusätzlich, wenn das Formular ausgefüllt ist eine Druckversion anbieten wo, die Inhalte nicht mehr in der Textbox stehen und somit nicht mehr verändert werden können. Wie mache das?

    Ich danke schon mal für die antworten.

    PHP Code:
    <?php
    function validateFormField($name$bezeichnung$required 0) {
        
    // Wenn das Feld nicht ausgef&uuml;llt wurde, gibt es zwei M&ouml;glichkeiten...
        
    if (!isset($_POST[$name]) || trim($_POST[$name]) == "") {
            
    // Pflichtfeld: FEHLER!!
            
    if ($required == 1) {
                
    $out "";
                
    // $GLOBALS['msgArr'][] = new Msg('Bitte das Feld \''.$bezeichnung.'\' ausf&uuml;llen!', 1);
                // Kein Pflichtfeld: Na gut, weiter.
            
    } else {
                
    $out "";
            }
            
    // Formular wurde vorbildlich ausgefuellt :-)
        
    } else {
            
    $out trim(str_replace('<''&lt;'$_POST[$name]));
        }
        
        return 
    $out;
    }

    //Funktion einbinden
    require_once ('inc.functions.php');
    //Datenbank verbinden
    require ('db_connect.php');

    //Variablen Definition
    $vorname '';
    $personen_id '';
    $geraet_id '';
    $durchwahl '';
    $handynummer '';
    $person_id '';
    $id '';
    $geraettyp '';
    $row '';

    // Submit-Schaltfläche der Eingabemaske wurde betätigt
    if (isset($_POST['submit_mitarbeitereingabe']) && $_POST['submit_mitarbeitereingabe']) {
        
        
    $vorname validateFormField('vorname''vorname'1);
        
    $nachname validateFormField('nachname''nachname'1);
        
    $geburtsdatum validateFormField('geburtsdatum''geburtsdatum'1);
        
    $ort validateFormField('ort''ort'1);
        
    $molfseevalidateFormField('molfsee''molfsee'0);
        
    $airbusvalidateFormField('airbus''airbus'0);
        
        If (
    $molfsee"ja" )
            {
                
    $molf"ja";
            } 
        If (
    $molfsee"nein" )
            {
                
    $molf="nein";
            }
        
        If (
    $airbus=  "ja")
            {
                
    $airbus"ja";
            } 
            Else 
            {
                
    $airbus="nein";
            }
        
        
    //SQL statement zum Befüllen der Datenbank-Tabelle Handy mit dem Inhalt der Benutzereingaben
        
        
    $sql "         
              INSERT INTO `verantstaltungen`(`vorname`,`name`,`ort`,`geburtsdatum`,`molfsee`,`hamburg`)
              Values('"
    .$vorname."','".$nachname."','".$ort."','".$geburtsdatum."','".$molf."','".$airbus."')";
        
        
    $msg 'Die Verantstaltung wurde angemeldet';
        
        
    // SQL-Kommando ausführen
        
    $db_erg mysql_query($sql) or die(mysql_error().':<pre>'.$sql.'</pre>');
         @
    header('Location: http://'.$_SERVER['HTTP_HOST'].'/auto/redirect.php?ref='.$_SERVER['PHP_SELF'].'&msg='.$msg);

        echo 
    $msg;
       if (
    $_GET['msg'] != '') {
            echo 
    $_GET['msg'];
        }
    }

    //Onlineformular zum füllen der Handy-Tabelle
    ?>
    <html>
        <head>
        </head>
        <body>
            <form id="form" name="form" method="post">
                <!--<table border="0" cellpadding="1" cellspacing="2">--><b>Formular zum Anmelden bei Verantstaltungen</b>
                <table width="100%">
                    <tr>
                        <td>
                            Vorname 
                        </td>
                        <td>
                            <input name="vorname" size="30" type="text" value="<?= $vorname ?>">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Nachname: 
                        <td><input name="nachname" size="30" type="text" value="<?= $nachname ?>"></td>     
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Ort: 
                        <td><input name="ort" size="30" type="text" value="<?= $ort ?>"></td>     
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Geburtsdatum: 
                        </td>
                        <td>
                            <input name="geburtsdatum" size="30" type="text" value="<?= $geburtsdatum ?>">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Verantstaltung: 
                        </td>
                   </tr> 
                           <tr>    <input name="molfsee" size="30" type="checkbox" value="<?= $molfsee?> ' checked' : ''">Molfsee
                        <tr>    <input name="airbus" size="30" type="checkbox" value="<?= $airbus?> ' checked' : ''">Airbus
                        </td>
                    </tr>
                    
                    <tr>
                        <td colspan="2">
                            <input name="submit_mitarbeitereingabe" type="submit" value="Abschicken">
                        </td>
                    </tr>
                    </tabel>
                    
                </form>
                </body>
            </html>
    Gruß Niklas

  • #2
    Moin,

    dass ist die Lösung:

    PHP Code:
    If ($molfsee== true )
            {
                
    $molf"ja";
            }
        Else
            {
                
    $molf="nein";
            }
       
        If (
    $airbus==  true)
            {
                
    $airbus"ja";
            }
            Else
            {
                
    $airbus="nein";
            } 

    Ich weiß nur noch nicht wie ich es mit dem Druckformular löse.

    Gruß Niklas

    Comment


    • #3
      Hallo,
      Originally posted by Niklas View Post
      ...dass ist die Lösung:
      Da bin ich mir nicht so ganz sicher!

      Mal zum Verständniss. Beim Absenden eines Formulars wird eine Checkbox nur übertragen, wenn sie "angehakt" ist. Der value-Wert taucht unter dem Namen der Checkbox also nur dann im $_POST auf, wenn die Checkbox ausgewählt wurde. Ansonsten gibt es KEINEN Eintrag $_POST['molfsee']!

      Wenn ich deinen Code jetzt versuche nachzuvollziehen, dann wird beim ersten Formularaufruf der value von molfsee mit '' belegt. (Ich habe zumindest keine Initiale Wertzuweisung gefunden)
      Wird das Formular jetzt abgeschickt, wird an $molfsee immer ein Leerstring '' zugewiesen, egal ob die Checkbox ausgewählt wurde oder nicht. (Entweder weil der Wert '' is oder durch die Formularvalidierung) Wird das Formular erneut aufgerufen, z.B. wg. Validierungsfehler, dann steht wieder ein '' in value von molfsee. Der Wert von $molfsee kann demnach NIE etwas anderes als ein Leerstring werden und ein Vergleich '' == true ist IMMER false!

      Du solltest den value deiner Checkbox also fest auf z.B. 'ja' setzen und stattdessen das Attribut checked in Abhängigkeit von $molfsee manipulieren.

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Moin,

        das Reinschreiben in die Datenbank funktioniert ja einwandfrei , somit kann der Wert nicht immer false sein. Das die variable Post nur $molfsee enthält wenn sie angekreuzt wurde stört mich nicht weiter für das Druckformular.

        Gruß Niklas

        Comment


        • #5
          Trotzdem solltest Du Falks Hinweise beachten.
          Willst Du nur ein für Dich funktionierendes Skript haben soll es zusätzlich auch korrekt sein?

          Wie Du Falsk Angaben entnehmen kannst, würde es völlig ausreichen
          PHP Code:
          if(isset($_POST["checkbox"])) {
            
          // Existiert: Es kann in die DB geschrieben werden
          } else {
            
          // Optional: Andere Aufgaben, da Checkbox nicht im POST existiert

          Für "checkbox" mußt Du dann natürlich den Namen der entsprechenden Box einsetzen.
          PHP rocks!
          Eine Initiative der PHP Community

          Comment


          • #6
            Hallo,
            Originally posted by Niklas View Post
            ...das Reinschreiben in die Datenbank funktioniert ja einwandfrei , somit kann der Wert nicht immer false sein.
            Aber nur weil dein Code zstzl. Buggy ist! Die Zeile
            PHP Code:
            <input name="molfsee" size="30" type="checkbox" value="<?= $molfsee?> ' checked' : ''">Molfsee
            sollte ja bestimmt eigentlich so aussehen:
            PHP Code:
            <input name="molfsee" size="30" type="checkbox" value="<?= $molfsee ' checked' ''?>">Molfsee
            Zumindest läßt das Konstrukt darauf schließen. Somit ist value initial nicht leer (wie von mir angenommen, sondern enthält "' checked' : ''", was im Endeffekt als TRUE ausgewertet wird.
            Den einen Bug jedoch mit dem anderen zu kaschieren ist nicht nur schlechter Stil, sondern wird dir auch immer wieder Probleme bereiten.
            Es ist meist sehr vorteilhaft sich den im Browser generierten HTML-Code mal anzusehen und zu prüfen ob der auch mit dem gewünschten übereinstimmt.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X