if in if-Anweisung - funktioniert das?

anjaw

Moderator
Mitarbeiter
Team
Mitglied seit
30 November 2004
Beiträge
1.734
Danke
127
#1
Hallo,

ich hab da mal eine Verständnisfrage.
Wenn ich eine if-else-Anweisung habe und in der if-Anweisung nochmals eine if-Anweisung (ohne else) mache, wird das funktionieren?

Beispiel:

Code:
....
<?php if (xx==11)
{?>
   <tr>
      <th>....</th>....
   </tr>
   <tr>
      <td>...</td>....
      <td>
        <?php echo 11; ?>
      </td>
      <td>
        <?php if (yy=22)
         { echo 22;
         }
        ?>
      </td>
    </tr>
<?php } else { ?>
<tr>....
}
 

Amari

Administrator
Mitarbeiter
Team
Mitglied seit
16 April 2006
Beiträge
6.498
Danke
410
#2
Ja, ist kein Problem. :)

Ist sogar ziemlich gängig, stell dir vor du möchtest über ein Schachbrett oder eine Rastergrafik iterieren. Dann hast du auch verschachtelte
for Schleifen mit mehreren ifs. Je für x und y.
 

anjaw

Moderator
Mitarbeiter
Team
Mitglied seit
30 November 2004
Beiträge
1.734
Danke
127
#3
Danke dir.
Ich habs mir schon fast gedacht, aber aktuell bin ich noch auf der Fehlersuche, da er mir in der inneren if-Schleife sagt, dass er die Variable nicht kennt und da kam mir dann der Gedanke, ob das evtl. nicht funktioniert.
 

kingspride

Moderator
Mitarbeiter
Team
Mitglied seit
30 Juni 2010
Beiträge
16.608
Danke
1.018
#4
dir fehlen da oben einige $ und ein zweites = bei yy=22 ...
nicht dass dir das zweite gleichheitszeichen auch im echten code fehlt...
 

anjaw

Moderator
Mitarbeiter
Team
Mitglied seit
30 November 2004
Beiträge
1.734
Danke
127
#5
Das ist mir bewusst. War nur ein Beispiel.

Hier der richtige Codebereich, wo der Fehler ist:
PHP:
<?php if ($custom_fields['invoice']['oepnv_auto'] == true) { ?>

<tr>
    <th>Datum</th>
    <th>Einsatzdauer</th>
    <th>ÖPNV</th>
    <th>Fahrtzeit <br/> Hin- und Rück</th>
    <th>Summe</th>
</tr>
<tr>
    <td> </td> <!-- Datum / Leere Spalte??? -->
    <td>
        <?php echo $custom_fields['invoice']['einsatzdauer_betrag'] .' €/Std.'; ?> <!--Einsatzdauer -->
    </td>
    <td>
    
        <?php if ($product->product_name == 'oepnv')
        {
            echo htmlsc($product->product_price) . ' €';  //ÖPNV/Fahrtkosten
         } ?>

    </td>
    <td>
        <?php echo $custom_fields['invoice']['fahrtzeit_betrag'] . ' €/Std'; ?> <!--Fahrzeit -->
    </td>
</tr>

<?php } else { ?> 
.....
else funktioniert einwandfrei.
Aktuell hänge ich bei dem zweiten if-Bereich mit $product->product_name=='oepnv'. In dieser Zeile bringt er mir undefinded variable product.
 

anjaw

Moderator
Mitarbeiter
Team
Mitglied seit
30 November 2004
Beiträge
1.734
Danke
127
#7
Das $product ist ja durch die Software vorgegeben. Dort habe ich ein Produkt oepnv erstellt, das in einer Datebank abgspeichert ist.
Funktioniert ja weiter oben unten auch, nur dass ich hier nicht direkt auf den voreingestellten Wert Anzahl zugreifen will, sondern auf den Preis.

Wenn ich mir alle Werte anzeigen lasse, kommt für oepnv folgendes:
[1] => stdClass Object
(
[item_amount_id] => 51
[item_id] => 51
[item_subtotal] => 13.00
[item_tax_total] => 0.00
[item_discount] => 0.00
[item_total] => 13.00
[product_id] => 6
[family_id] =>
[product_sku] =>
[product_name] => oepnv
[product_description] => dd.mm.YYYY
[product_price] => 13.00
[purchase_price] =>
[provider_name] =>
[tax_rate_id] =>
[unit_id] =>
[product_tariff] => 0
[invoice_id] => 13
[item_tax_rate_id] => 0
[item_product_id] => 6
[item_date_added] => 2019-01-27
[item_task_id] =>
[item_name] => oepnv
[item_description] => 27.01.2019
[item_quantity] => 1.00
[item_price] => 13.00
 
Zuletzt bearbeitet:

Amari

Administrator
Mitarbeiter
Team
Mitglied seit
16 April 2006
Beiträge
6.498
Danke
410
#8
Ist bei dem Preis immer ein wert hinterlegt oder kann das auch mal leer sein?
 

kingspride

Moderator
Mitarbeiter
Team
Mitglied seit
30 Juni 2010
Beiträge
16.608
Danke
1.018
#10
schieb mal den var_dump an die stelle des inneren if ... php meint, dass deine komplette "sammlung" $product nicht definiert wäre.

kommt $product auch im else-Teil vor?
 

anjaw

Moderator
Mitarbeiter
Team
Mitglied seit
30 November 2004
Beiträge
1.734
Danke
127
#11
Habe gerade glaub ich einen Weg gefunden:

PHP:
<?php
         foreach ($items as $item)
        {
             if ($item->product_name == 'oepnv')
        {
            
                echo ($item->product_price) . ' €';  //ÖPNV/Fahrtkosten
        }   
    } ?>
var_dump hat mir auch undefined variable gebracht.
 

kingspride

Moderator
Mitarbeiter
Team
Mitglied seit
30 Juni 2010
Beiträge
16.608
Danke
1.018
#12
das konnten wir ja schlecht riechen, dass die variable eigentlich $item heißt :D gut dass du es gefunden hast :)
 

anjaw

Moderator
Mitarbeiter
Team
Mitglied seit
30 November 2004
Beiträge
1.734
Danke
127
#13
Mit dem oberen Code mit item hatte es auch nicht funktioniert. Ich musste die foreach-Schleife noch aussenrum bauen. Erst dann hat es geklappt.
Ja, das war ein sehr langes suchen und probieren. :rolleyes:
 

anjaw

Moderator
Mitarbeiter
Team
Mitglied seit
30 November 2004
Beiträge
1.734
Danke
127
#15
So nach einem Tag des Nachdenkens ist mir klar, warum es nur mit der foreach-Schleife geht.
Ich hab ja nicht nur das eine Produkt, sondern mehrere und da muss ich ja erstmal prüfen, ob er eins findet, wo 'oepnv' drin steht.
 
Oben