formular handling?

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

  • formular handling?

    Hallo,

    ich sitze derzeit an einer account-Seite - UserDaten ausgeben und ändern.

    Unter anderen enthält die Seite checkboxen, mit deren handling ich nicht klar komme:

    <input type="Checkbox" name="alles" value="1">Alles

    wenn ich die seite aufrufe, schaue ob $row['alles'] == '1', wenn ja => checked

    <input type="Checkbox" name="alles" value="1"<?php if($row['alles'] == '1') echo ' checked'; ?>>Alles

    Kein Problem.

    Wenn jetzt allerdings das Formular abgesendet wird und bei der Eingabe Fehler gemacht wurden, komme ich auf die accountSeite per POST zurück und ich müsste den Wert wie folgt bestimmen:

    <input type="Checkbox" name="alles" value="1"<?php if($_POST['alles'] == '1') echo ' checked'; ?>>Alles

    Wie aber bekomme ich beide Bedingungen da hinein?

    <input type="Checkbox" name="alles" value="1"<?php if($_POST['alles'] == '1') echo ' checked'; elseif($_POST['alles'] == '' && $row['alles'] == '1') echo ' checked'; ?>>Alles

    Es kann aber ja auch sein, dass post == '' ist

    1. wenn die Seite zum ersten mal aufgerufen wird
    2. vom errorhandling zurück kommt, und die checkbox zuvor abgewählt wurde

    Ich hoffe ich habe mich einigermassen verständlich ausgedrückt?!

    Kann mir da jmd helfen?

    Grüße!

  • #2
    PHP-Code:
    if($row['alles']==|| $_POST['alles']==1) {} 

    Kommentar


    • #3
      Re: formular handling?

      Original geschrieben von westberlin
      Wie aber bekomme ich beide Bedingungen da hinein?
      du möchtest OR bzw. || kennenlernen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Original geschrieben von ExInfernis
        PHP-Code:
        if($row['alles']==|| $_POST['alles']==1) {} 
        aber was, wenn $row['alles']==1 und $post['alles']=='' (Fehler bei der Eingabe, user hat zuvor die checkbox abgewählt, daher kommt post['alles'] mit NULL zurück), dann soll die checkbox nicht! checked sein.

        beim ersten laden, also wenn noch keine POST daten ankommen und die Werte aus der DB kommen, ist POST aber ja immer '' (NULL)....

        Kommentar


        • #5
          Original geschrieben von westberlin
          beim ersten laden, also wenn noch keine POST daten ankommen und die Werte aus der DB kommen, ist POST aber ja immer '' (NULL)....
          blödsinn ...
          1. "" == empty != NULL
          2. wird das form beim ersten aufruf geladen, existiert zwar $_POST (als array) aber garantiert nicht $_POST['whatever']
          3. eine checkbox kommt (wenn ge-checked) oder nicht ... wenn nicht ge-checked, dann nicht existent == !isset
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von Wurzel
            blödsinn ...
            1. "" == empty != NULL
            2. wird das form beim ersten aufruf geladen, existiert zwar $_POST (als array) aber garantiert nicht $_POST['whatever']
            3. eine checkbox kommt (wenn ge-checked) oder nicht ... wenn nicht ge-checked, dann nicht existent == !isset

            ich habe mal folgende testDatei angelegt:

            test.php
            PHP-Code:
            <?php

            if($_POST['irgendwas'] == ''){
                echo 
            'STOP';
            }

            ?>
            mehr steht in der Datei nich drin und wenn ich die ganz normal ohne irgendwelche werteübergabe aufrufe, erhalte ich folgende ausgabe:

            STOP

            Ich glaube, ich schaffe es nicht gut zu erkären, was mein Problem ist, daher nochmal:

            Wenn ich meine checkbox unchecked abschicke, die aber zuvor aufgrund des db-Wertes gechecked war, kommt POST['alles']
            ohne Wert (POST['alles'] == '') zurück. $row['alles'] ist immer noch 1 (row['alles'] == '1'). Jetzt darf die Checkbox allerdings nicht mehr checked sein...
            Beim ersten Aufruf besteht die selbe Konstellation - POST['alles'] == '' und row['alles'] == '1', ABER dort soll / muss die checkbox checked sein...
            War das verständlich?

            Kommentar


            • #7
              quark ... wenn du mal dein error_reporting auf "scharf" stellen würdest, bekämst du
              Notice: Undefined index: irgendwas in **** on line 3
              STOP
              if(nicht-da == "") ergibt hier "wahr", also ausgabe STOP

              PHP-Code:
              if(isset($_POST['irgendwas']) && $_POST['irgendwas'] == 'möglicherVergleichswert'){
                  echo 
              'STOP';

              ergibt?

              alternativ lass dir mal mit print_r() dein $_POST array ausgeben, wenn
              1. was gechecked ist
              2. nix gechecked ist
              Kissolino.com

              Kommentar


              • #8
                dann wäre das die Lösung:

                PHP-Code:
                <?php 
                if(isset($_POST['salles']) && $_POST['salles'] == '1') echo ' checked'; elseif(isset($_POST['salles']) && $_POST['salles'] == '') {} elseif($row['salles'] == '1') echo ' checked'
                ?>
                Danke Wurzel!

                Kommentar


                • #9
                  Also:

                  Die User haben die Möglichkeit Daten zu ändern.

                  1. SIe rufen ihre Daten auf.
                  2. Die Daten werden in einem Formular ausgegeben
                  3. Die User können Änderungen durchführen
                  4. Das Formluar wird abgeschickt und die Daten überprüft
                  5. Wenn nun festgestellt wird das wichtige Daten fehlen, wird wieder zurückgeleitet
                  6. Nun sollen aber nicht die original sondern die gerade veränderten Daten ausgegeben werden.

                  Stimmt das so?

                  Wenn ja, dann schick doch in einem hidden-field ne Kontrollvariable mit.
                  Ist diese Variable gesetzt, dann werden die Post so übernommen wie sie ankommen, also 1 ergibt checked.
                  Ist die Variable nicht gesetzt handelt es sich um den ersten Aufruf und es wird nur der row-Array überprüft.

                  PHP-Code:
                  if(!strcmp($_POST['kontrolle'],'yes'))
                  //-- Die Daten kommen also von der Überprüfung zurück
                  {
                  if(
                  $_POST['alles']==1) echo 'checked';
                  }
                  //-- Es handelt sich um den ersten Aufruf, daher wird der row-Array als Datenquelle untersucht
                  elseif($row['alles']==1) echo 'checked'

                  Kommentar


                  • #10
                    ja, das mit der kontrollVar wär auch ne Möglichkeit, finde aber die Lösung per isset() besser. Trotzdem vielen Dank für Deine Hilfe!

                    Woher kommstn Du aus berlin?

                    Kommentar


                    • #11
                      Moabit!

                      Block 5, Zelle 187

                      N8

                      Kommentar


                      • #12
                        n8

                        Kommentar

                        Lädt...
                        X