Checkbox bleibt bei Standardwert "0"...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Checkbox bleibt bei Standardwert "0"...

    Hallo,

    ich bin gerade dabei eine Art "Reiseantrag" zu erstellen.

    Dieses funktioniert über ein Formular, in dem man seine
    Daten einträgt und am Ende zusätzlich über div. Checkboxen noch
    angaben über Reisemittel (Flug, Mietwagen, etc...) festlegt.
    Ich benutze kein Template, sondern alle Daten befinden sich in
    einer Datei "antrag.php"

    Eine Checkbox sieht hier in etwa so aus:

    Code:
    <td>Flug:</td><td><input type="checkbox" name="flug"
     value="0" $flug /></td>
    Standardmässig ist die Box also deaktiviert (o).


    Als query habe ich ganz normal:

    PHP-Code:
    $DB->query("INSERT INTO antraege(kategorie,name,...flug,....)
    VALUES('
    $kategorie','$name',...'$flug',...)"); 
    danach halt die Anweisung, ob angeklickt, oder nicht:


    PHP-Code:
    if ($_POST['flug']==1$flug='checked'

    Wenn ich das Formular nun ausfülle, dann speichert er zwar alle Daten,
    die über Textfelder sende, aber in der DB-Tab steht nach wie vor unter
    Flug=0..also Standardwert, obwohl ich die Checkbox aktiviert habe...

    Mit dem Aktivieren der Box soll keinerlei weitere Funktion erfolgen,
    sondern nur "ja", bzw. "nein" anzeigen...


    Ich bin eigentlich der Meinung, dass ich laut 'nem Artikel bei
    "php-faq.de" den Anweisungen gefolgt bin....


    Grüße

    Bistar
    Zuletzt geändert von bistar; 28.04.2005, 12:11.

  • #2
    wenn du einer checkbox den value 0 zuweist, wird der auch dieser wert übertragen! und was soll das $flug im <input-tag bedeuten?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Re: Checkbox bleibt bei Standardwert &quot;0&quot;...

      Original geschrieben von bistar
      danach halt die Anweisung, ob angeklickt, oder nicht:
      PHP-Code:
      if ($_POST['flug']==1$flug='checked'
      wo bitte soll denn die 1 herkommen?

      der einzige wert, den deine checkbox übertragen kann ist 0 - oder gar nichts, falls sie nicht angekreuzt wurde.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        PHP-Code:
        # falls hier noch php code: ?>
         <td>Flug:</td>
         <td>
            <input type="checkbox" name="flug"
            <?php
            
        if ($_POST['flug']==1) {
               echo 
        "value=\"1\" checked>";
            } else { echo 
        "value=\"0\">";
            }
            
        ?>
          </td>
        # ...

        Kommentar


        • #5
          Oh...das $flug im Tag war ein Flüchtigkeitsfehler beim
          Posten. 'Tschuldigung!

          Also muss es folgendermassen sein?

          Code:
          <input type="checkbox" name="flug"  />


          Aber ich muss der Box doch einen Wert zuweisen, wenn diese aktiviert ist.
          In der DB habe ich ja auch "Standard = 0" angegeben...

          Dann habe ich da wohl einiges falsch aufgefasst....

          PHP-Code:
          if ($_POST['flug']==0$flug='checked'
          <- so?

          Kommentar


          • #6
            ...auch mit dem o.g. Code bleibt der Eintrag bei 0...egal ob aktiviert oder nicht...

            Kommentar


            • #7
              wie sieht der HTML-Quelltext aus?

              Kommentar


              • #8
                was willst Du denn mit $flug='checked' anstellen?
                ... und: mir drängt sich der Verdacht auf, das dies gar nicht die Seite ist, die etwas per POST bekommt, sondern dass das die Seite ist, die per POST senden soll? Wie soll dann if($_POST... zutreffen? ... oder sendet UND empfängt sie?
                Wie ist denn die Struktur der Seiten? Wird der eigentliche Eintrag in die DB auf derselben Seite durchgeführt?

                Kommentar


                • #9
                  Ja, er wird auf der selben Seite durchgeführt...


                  Ich habe hier mal das Script (verkürzt aufs Wesentliche):

                  PHP-Code:
                  <?PHP
                  if ($button==" Speichern ") {

                  //hier Check, ob alle Felder ausgefüllt


                  }
                  else {

                  $DB->query("INSERT INTO
                  antraege(kategorie,name,etc..dienst_tel,......)VALUES(
                  '
                  $kategorie','$name',etc...'$dienst_tel',.....)");

                  ?>


                  .....
                  .....
                  <td class="heads">Neuer Dienstreiseantrag</td>
                  </tr>
                  <tr>
                  <td class="standard" align="center">
                     <br><br><br>
                     <br> Es wurde ein neuer Dienstreiseantrag gestellt </br>
                     <br> Kategorie:     "<?=$kategorie?>" </br>
                     <br> Vorname:       "<?=$vorname?>"
                     <br> Name:          "<?=$name?>" </br>
                     <br> Status: erfolgreich eingefügt!<br><br><br><br>
                    </td>

                  ......
                  ......


                  <?PHP
                   
                  }
                   }
                  else {
                  ?>




                  <form action="include.php?path=adressen/add.php" method="post">

                  <TABLE class="contentbody" RULES="none" BORDER="0" cellSpacing=1
                   cellPadding=3 width="100%">
                  <tr>
                  <td class="heads" colspan="2">Neuer Dienstreiseantrag 
                  <a class="heads" href="include.php?path=adressen/
                  uebersicht.php">zurück</a></td>
                  </tr>
                  <tr><td>

                  //es folgen verschiedene Textfelder


                  //nun kommen die Checkboxen

                  <input type="checkbox" name="dienst_tel"
                      <?php
                                  
                  if ($_POST['dienst_tel']==1) {
                                  echo 
                  "value=\"1\" checked>";
                                  } else { echo 
                  "value=\"0\">";
                                  }
                                  
                  ?>



                   <td class="odd">Antrag abschließen</td>
                   <td class="even"><input type="submit" name="button" value="
                   Speichern ">
                   </td>
                  ....
                  ....
                  ....
                  </tr>
                  </table>
                  </form>

                  }


                  ?>
                  Zuletzt geändert von bistar; 28.04.2005, 13:34.

                  Kommentar


                  • #10
                    Original geschrieben von bistar
                    Aber ich muss der Box doch einen Wert zuweisen, wenn diese aktiviert ist.
                    nein.

                    die checkbox bekommt immer ihr value.

                    wenn sie aktiviert wird, wird dieser wert im POST-request mit übermittelt.
                    wird sie nicht aktiviert, dann wird für die box überhaupt kein wert übermittelt.

                    mir scheint, du wirfst hier value und selected durcheinander.


                    beschäftige dich mal etwas intensiver damit, wie man formulare in PHP auswertet - bspw. hier: http://php-faq.de/ch/ch-webvariablen.html
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Ja, genau dort habe ich ja schon nachgeschlagen.

                      Tut mir leid, wenn ich auf dem Schlauch stehe...bin auch noch nicht lange dabei...aber wenn der Value immer enthalten ist, dann bräuchte ich ja theoretisch NUR <input type="checkbox".....> schreiben....?!?


                      *stöhn*

                      Kommentar


                      • #12
                        Original geschrieben von bistar
                        aber wenn der Value immer enthalten ist, dann bräuchte ich ja theoretisch NUR <input type="checkbox".....> schreiben....?!?
                        value ist deshalb "immer enthalten", weil du es natürlich immer dort ausgibst!

                        *stöhn*
                        ja, gleichfalls.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          kommt drauf an, für was die .... stehen.

                          Kommentar


                          • #14
                            Wenn ich das richtig verstehe, ist es in diesem Fall doch angebrachter, die IF Verzweiflung ... äh - Verzweigung nicht mit ==1, sondern per
                            if (isset($_POST['dienst_tel'])) {
                            gefolgt von preg_match usw durchzuführen.

                            edit: Typo
                            Zuletzt geändert von C8H10N4O2; 28.04.2005, 14:14.

                            Kommentar

                            Lädt...
                            X