veschachtelte if-Anweisungen funktionieren nicht

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

  • veschachtelte if-Anweisungen funktionieren nicht

    Hallo,

    habe folgendes Problem...

    Ich möchte dass, wenn ein Wert in "getriebe" existiert, die nächste if-Anweisung betreten wird. Anschließend soll, wenn ein Wert in "antrieb" existiert, die erste Anweisung erfolgen sonst die zweite. Als Ergebnis dieses Codes kommt entweder gar nichts (was auch gut so ist wenn kein Wert in beiden vorkommt) oder es wird nur die else-Anweisung durchlaufen, was Mist ist da es ja einen Wert in "antrieb" gibt...

    PHP-Code:

    <? if ($row3["getriebe"] != 0) { 

        if ($row3["antrieb"] != 0) {

        ?>
             <tr>
                 <td>Kraft&uuml;bertragung</td>
                 <td><? echo $row3["getriebe"]; ?></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><? echo $row3["antrieb"]; ?></td>
             </tr> 
            <tr>
                 <td>&nbsp;</td>
                <td>&nbsp;</td>
             </tr>
        <? } else  { ?>

             <tr>
                 <td>Kraft&uuml;bertragung</td>
                 <td><? echo $row3["getriebe"]; ?></td>
            </tr>
            <tr>
                 <td>&nbsp;</td>
                <td>&nbsp;</td>
             </tr>
             
    <? 
          }  // else
    } // erste if-Anweisung

    ?>

    Was mach ich nur falsch???

    Gruß

  • #2
    der code müsste so lauffähig sein.
    das problem liegt wohl in der logik und dem code außerhalb des zitierten.

    print_r($row3) verrät u.u. weiteres.

    Kommentar


    • #3
      Hatte es vorher so realisiert:

      PHP-Code:

      <? while ($row3 = mysql_fetch_array($result3)) {  ?>
       <table width=400>          
               <tr>
                   <td><strong>Kraft&uuml;bertragung</strong></td>
                   <td><? echo $row3["getriebe"]; ?>,</td>
               </tr>
               <tr>
                          <td>&nbsp;</td>
                          <td><? echo $row3["antrieb"]; ?></td>
               </tr>
               <tr>
                   <td>&nbsp;</td>
                  <td>&nbsp;</td>
               </tr>
      </table>

      }
      und da funktionierte es auch korrekt (--> in Bezug auf print_r($row3)) die Werte stimmen.

      hier mal nen bissel mehr vom aktuellen Code bei dem ich es mit elseif probiert habe (gleiche Ergebnisse):

      PHP-Code:

      <? while ($row3 = mysql_fetch_array($result3)) { ?>
       <table width=400>          
               

      <? if ($row3["getriebe"] != 0) { 

          if ($row3["antrieb"] != 0) {

          ?>
               <tr>
                   <td><strong>Kraft&uuml;bertragung</strong></td>
                   <td><? echo $row3["getriebe"]; ?></td>
              </tr>
              <tr>
                  <td>&nbsp;</td>
                  <td><? echo $row3["antrieb"]; ?></td>
               </tr> 
              <tr>
                   <td>&nbsp;</td>
                  <td>&nbsp;</td>
               </tr>
          <? } elseif ($row3["antrieb"] == 0)  { ?>

               <tr>
                   <td><strong>Kraft&uuml;bertragung</strong></td>
                   <td><? echo $row3["getriebe"]; ?></td>
              </tr>
              <tr>
                   <td>&nbsp;</td>
                  <td>&nbsp;</td>
               </tr>
               
      <?

            } 
         }
      }

      ?>
      hängt es vielleicht mit der while-Schleife zusammen?

      Kommentar


      • #4
        trotzdem würde ich gern var_dump() von $row3["getriebe"] und $row3["antrieb"] sehen...

        Kommentar


        • #5
          So...

          nun zu deiner Beruhigung hier die ausgabe von var_dump($row3) ;o)

          array(32) { [0]=> string(2) "25" ["id"]=> string(2) "25" [1]=> string(1) "1" ["markenid"]=> string(1) "1" [2]=> string(23) "Audi 80 1.9" ["name"]=> string(23) "Audi 80 1.9 TDI Phase 1" [3]=> string(2) "66" ["leistungv"]=> string(2) "66" [4]=> string(2) "88" ["leistungn"]=> string(2) "88" [5]=> string(4) "4000" ["leistunguminv"]=> string(4) "4000" [6]=> string(4) "4000" ["leistunguminn"]=> string(4) "4000" [7]=> string(4) "1900" ["hubraumv"]=> string(4) "1900" [8]=> string(4) "1900" ["hubraumn"]=> string(4) "1900" [9]=> string(3) "202" ["drehmomentv"]=> string(3) "202" [10]=> string(3) "275" ["drehmomentn"]=> string(3) "275" [11]=> string(4) "2000" ["drehmomentuminv"]=> string(4) "2000" [12]=> string(4) "1900" ["drehmomentuminn"]=> string(4) "1900" [13]=> string(15) "5-Gang-Getriebe" ["getriebe"]=> string(15) "5-Gang-Getriebe" [14]=> string(12) "Frontantrieb" ["antrieb"]=> string(12) "Frontantrieb" [15]=> string(3) "549" ["preis"]=> string(3) "549" }

          Ich frage mich woran es liegt...???

          Kommentar


          • #6
            ich sehe in dem code kein problem. nehme daher an, dass das problem in etwas anderem besteht.

            reduziere sowohl die ausgabe als auch die benötigte logik auf das minimum, so dass du das problem eingrenzen kannst.

            Kommentar


            • #7
              du vergleichst ($row3["getriebe"] != 0) bzw. ($row3["antrieb"] != 0),
              wobei $row3['getriebe']='5-Gang-Getriebe' und $row3['antrieb']='Frontantrieb' ist.

              du vergleichst also einen string mit einem integer. dabei wird der string nach (int) gecastet; casting=typumwandlung.

              wird ein string nach int gecastet, ist int=0. ist der erste teil des strings eine ziffer, ist int diese ziffer, der rest wird abgeschnitten.

              kannst du ja selbst testen:
              PHP-Code:
              $row3["getriebe"]='5-Gang-Getriebe';
              $row3["antrieb"]='Frontantrieb';
              echo 
              'int von getriebe: ', (int) $row3["getriebe"], '<br />'' int von antrieb: ', (int) $row3["antrieb"]; 
              ausgabe:
              int von getriebe: 5
              int von antrieb: 0

              Kommentar


              • #8
                Klingt logisch...

                hab nun einfach 0 gegen string ausgetauscht und nu funzt alles...


                Besten dank für die Problemlösung!!!

                Kommentar


                • #9
                  Original geschrieben von orangebud
                  Klingt logisch...
                  als logisch würde ich das nicht bezeichnen.
                  ist aber ein generelles problem von ungetypten sprachen.

                  Kommentar

                  Lädt...
                  X