komisches Verhalten bei Variablen Übergabe

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

  • komisches Verhalten bei Variablen Übergabe

    Hallo,

    derzeitig sieht mein code so aus:

    PHP-Code:
    <select name="plzAusschluss1" id="ar" style="width: 130;">
     <option value="k">keine Einschränkung
     <?php
     
    for($pai 0$pai <= 9$pai++)
     {
      echo 
    '<option value="'.$pai.'" ';
       if(
    $pai == $_POST['plzAusschluss1'])
        echo 
    'selected';
       echo 
    '>von '.$pai.'0 bis '.$pai.'9';
       }
     
    ?>
    </select>
    Vielleicht sitzt ich aber schon wieder zu lange am Rechner,
    aber wenn ich 'keine Einschränkung' wähle (also value = "k")

    Dann ist auf der Empfangseite echo $_POST['plzAusschluss1']
    > k

    und 'von 00 bis 09' sowie 'keine Einschränkung' sind 'selected'
    siehe Quelltext:

    PHP-Code:
    <select name="plzAusschluss1" id="ar" style="width: 130;">
     <
    option value="k" selected>keine Einschränkung
     
    <option value="0" selected>von 00 bis 09
     
    <option value="1" >von 10 bis 19
     
    <option value="2" >von 20 bis 29
     
    <option value="3" >von 30 bis 39 
     
    <option value="4" >von 40 bis 49
     
    <option value="5" >von 50 bis 59
     
    <option value="6" >von 60 bis 69
     
    <option value="7" >von 70 bis 79
     
    <option value="8" >von 80 bis 89
    <option value="9" >von 90 bis 99                                             </select
    Wie kann 'von 00 bis 09' selected sein? K ist doch nicht 0, oder?
    Kann mir da jmd helfen?

  • #2
    Zitat von de.selfhtml.org zum Thema
    Ein Abschluss-Tag </option> ist zwar optional, im Hinblick auf verarbeitende Programmiersprachen aber dringend zu empfehlen.
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Hat leider nicht geholfen, hier der Quelltext mit den </option>-Tags...

      PHP-Code:
      <select name="plzAusschluss1" id="ar" style="width: 130;">
      <
      option value="k" selected>keine Einschränkung</option>
      <
      option value="0" selected>von 00 bis 09</option>
      <
      option value="1" >von 10 bis 19</option>
      <
      option value="2" >von 20 bis 29</option>
      <
      option value="3" >von 30 bis 39</option>
      <
      option value="4" >von 40 bis 49</option>
      <
      option value="5" >von 50 bis 59</option>
      <
      option value="6" >von 60 bis 69</option>
      <
      option value="7" >von 70 bis 79</option>
      <
      option value="8" >von 80 bis 89</option>
      <
      option value="9" >von 90 bis 99</option>
      </
      select

      Kommentar


      • #4
        Hast du denn den Value 'k' bereits als select gesetzt ? Musste wohl haben, denn dein Code Schnippel wird das sicherlich nicht tun.
        PHP-Code:
        if($pai == $_POST['plzAusschluss1']) 
        $pai kann ja nur Zahlwerte enthalten. Also würde ich nun vermuten, dass 'k' immer als selected gesetzt ist (steht wohl so in deinem HTML Code).
        Wenn aber doch dein PHP Script das gemacht haben sollte, dann würde ich mal in der Schleife die Werte dumpen.
        PHP-Code:
        if($pai == $_POST['plzAusschluss1']){
            
        var_dump($pai);
            
        var_dump($_POST['plzAusschluss1']);
            
        //Rest des Codes

        imho müsste, wenn es wirklich durch PHP, mit diesem Code gemacht wurde, dann $pai ja gleich 'k' sein.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Das gibt er aus:
          int(0)
          string(1) 0

          imho müsste, wenn es wirklich durch PHP, mit diesem Code gemacht wurde, dann $pai ja gleich 'k' sein.
          $pai wird doch auch bei 'von XX bis XX' mit den Options ausgegeben und ist da die richtige zahl...

          Kommentar


          • #6
            Und wo dumped er deinen Value 'k' ? Wenn PHP diesen Wert als selected setzt dann muss irgendwo im var_dump() dieser Wert doch auch vorkommen...
            Allenfalls (wäre sauberer) noch Klammern {} bei deinem if-Konstrukt einsetzen.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              aktueller Quellcode:

              PHP-Code:
              <select name="plzAusschluss1" id="ar" style="width: 130;">
              <option value="k" <?php if('k' == $_POST['plzAusschluss1']) echo 'selected'?>>keine Einschränkung</option>
              <?php
              for($pai 0$pai <= 9$pai++)
              {
               echo 
              '<option value="'.$pai.'" ';
               if(
              $pai == $_POST['plzAusschluss1']){
                echo 
              'selected';
              }
              echo 
              '>von '.$pai.'0 bis '.$pai.'9 __ </option>';
              var_dump($pai);
              var_dump($_POST['plzAusschluss1']);
              }
              ?>
              </select>
              ich wähle 'kein Einschränkung' (also wieder value="k") aus und schicke das fomular ab...'
              generierter Quelltext:

              PHP-Code:
              <select name="plzAusschluss1" id="ar" style="width: 130;">
              <
              option value="k" selected>keine Einschränkung</option>
              <
              option value="0" selected>von 00 bis 09 __ </option>int(0)
              string(1"k"
              <option value="1" >von 10 bis 19 __ </option>int(1)
              string(1"k"
              <option value="2" >von 20 bis 29 __ </option>int(2)
              string(1"k"
              <option value="3" >von 30 bis 39 __ </option>int(3)
              string(1"k"
              <option value="4" >von 40 bis 49 __ </option>int(4)
              string(1"k"
              <option value="5" >von 50 bis 59 __ </option>int(5)
              string(1"k"
              <option value="6" >von 60 bis 69 __ </option>int(6)
              string(1"k"

              <option value="7" >von 70 bis 79 __ </option>int(7)
              string(1"k"
              <option value="8" >von 80 bis 89 __ </option>int(8)
              string(1"k"
              <option value="9" >von 90 bis 99 __ </option>int(9)
              string(1"k"
              </select

              Kommentar


              • #8
                Mach aus
                PHP-Code:
                if($pai == $_POST['plzAusschluss1']){ 
                mal
                PHP-Code:
                if ((string)$pai == $_POST['plzAusschluss1']) { 
                So zwingst du PHP dazu, $pai in einen string umzuwandeln und dann zwei strings zu vergleichen.

                Machst du das nicht, vergleichst du einen integer mit einem string, PHP wandelt den string also intern in einen integer um um da 'k' keine gültige Zahl ist, kommt 0 oder false (such dir was aus, bin mir nicht sicher) raus
                0 = 0 ist richtig
                0 = false ist richtig
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Das klappt, danke...!
                  Hatte das auch schon angenommen, aber mit settype auch keinen erfolg. Kannte (string)$var gar nicht, danke nochmal

                  Kommentar


                  • #10
                    Ist eine sog. explizite Typkonvertierung
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar

                    Lädt...
                    X