Probleme mit Ausgabe einer Tabelle

Hallo,

nach einiger Zeit kann ich mich wieder mit der Erstellung der Vorlage für die Rechnung beschäftigen und komme leider nicht auf den Fehler.

Folgenden Code habe ich:

<?php
 echo "<table width=100%>";
		
	if ($custom_fields['invoice']['oepnv_auto'] === true)
				{
					echo "<tr><th>Datum</th><th>Einsatzdauer</th><th>ÖPNV</th><th>Fahrtzeit Hin- und Rück</th><th>Summe</th></tr>";
					echo "<tr><td></td><td>'à ' . $custom_fields['invoice']['fahrtwarte_betrag'] . ' €/Std.'</td></tr>";
				}
			else
				{
					echo "<tr><th>Datum</th><th>Einsatzdauer</th><th>Fahrtkosten</th><th>Fahrtzeit Hin- und Rück</th><th>Summe</th></tr>";
					echo "<tr><td></td><td>'à ' . $custom_fields['invoice']['fahrtkosten_betrag'] . ' €/Std.'</td></tr>";
				} 

	echo "</table>";
	?>

Das ganze soll anhand der Variablen oepnv_auto prüfen, ob der Wert auf true/false steht und dann jeweils eine Zeile ausgeben.
Leider funktioniert es nicht, da ich in dem oberen Konstrukt nicht auf die Variable zugreifen kann.
Änder ich den Code so ab, wie folgt, dann funktioniert zwar der Code, aber die if-Anweisung geht nicht und ich bekomme beide Zeilen ausgegeben.

<table width=100%>
		
	if ($custom_fields['invoice']['oepnv_auto'] === true)
				{
					<tr><th>Datum</th><th>Einsatzdauer</th><th>ÖPNV</th><th>Fahrtzeit Hin- und Rück</th><th>Summe</th></tr>
					<tr><td></td><td><?php echo 'à ' . $custom_fields['invoice']['fahrtwarte_betrag'] . ' €/Std.'; ?></td></tr>
				}
			else
				{
					<tr><th>Datum</th><th>Einsatzdauer</th><th>Fahrtkosten</th><th>Fahrtzeit Hin- und Rück</th><th>Summe</th></tr>
					<tr><td></td><td><?php 'à ' . $custom_fields['invoice']['fahrtkosten_betrag'] . ' €/Std.'; ?></td></tr>
				} 

	</table>

Bitte um Hilfe, wo mein Denkfehler ist.

Danke
Anja

<table>

    <?php if ($custom_fields['invoice']['oepnv_auto'] === true): ?>

    <tr>
        <th>Datum</th>
        <th>Einsatzdauer</th>
        <th>ÖPNV</th>
        <th>Fahrtzeit Hin- und Rück</th>
        <th>Summe</th>
    </tr>
    <tr>
        <td></td> <!-- Leere Spalte??? -->
        <td>
            <?php echo $custom_fields['invoice']['fahrtwarte_betrag'].' €/Std.'; ?>
        </td>
    </tr>

    <?php else: ?>

    <tr>
        <th>Datum</th>
        <th>Einsatzdauer</th>
        <th>Fahrtkosten</th>
        <th>Fahrtzeit Hin- und Rück</th>
        <th>Summe</th>
    </tr>
    <tr>
        <td></td> <!-- Leer Spalte??? -->
        <td>
            <?php echo $custom_fields['invoice']['fahrtkosten_betrag'].' €/Std.'; ?>
        </td>
    </tr>
    <?php endif ?>

</table>

<style>
table{
  width: 100%;
}
</style>

beim unteren code fehlten die PHP Tags, statt geschweifert klammer, kannst du auch wie ich es abgeändert habe nutzen…

schau dir auch mal die echo’s von fahrtkosten an, die sind noch etwas seltsam… da fehlt das echo, sowie was das à da soll, verstehe ich nicht ganz…

generell kannst du html und php nicht einfach so mischen…

in php funktionieren nur php funktionen, um html zu nutzen, musst du entweder diese mittels echo oder ähnliche funktionen ausgeben, oder den php-part schließen…

<?php
echo "<table>"; 
// ... 
?>
<table>...</table>


oder ...

<table>... <?php echo phpfunktionen() ?> ... </table>

oder zuletzt:

<?php echo $hieristeintitel-variable .' Jetzt dürfen wir wieder html <br><hr> ... aber nach '. $weiter-in-php-variable; ?>

und spätestens wenn es kompliziert wird, möchtest du es gut leserlich haben, sonst weißt du nächste woche nicht mehr was du da angestellt hast.

oder so müsste es auch gehen:

<table>
    <tr>
        <th>Datum</th>
        <th>Einsatzdauer</th>
        <th><?php echo ($custom_fields['invoice']['oepnv_auto'] ? 'ÖPNV' : 'Fahrtkosten') ?></th>
        <th>Fahrtzeit Hin- und Rück</th>
        <th>Summe</th>
    </tr>
    <tr>
        <td></td> <!-- Leere Spalte???  du kannst auch colspan="2" unten nehmen -->
        <td>
            <?php echo ($custom_fields['invoice']['oepnv_auto'] ? $custom_fields['invoice']['fahrtwarte_betrag'] : $custom_fields['invoice']['fahrtkosten_betrag']) ?> €/Std.
        </td>
    </tr>
</table>

Vielen Dank erst einmal für deine Antwort.
Die echo’s sind noch nicht komplett, da ich es erstmal für eins korrekt haben wollte.

Die Tabelle soll folgendermaßen ausschauen (-> = neue Spalte):

Datum -> Einsatzdauer -> ÖPNV -> Fahrtzeit Hin- und Rück -> Summe
leer -> á 20€ / Std. -> leer -> á 20€ / Std. -> leer
29.11.2018 -> 2 Std. -> 10 € -> 1 Std. -> Gesamtbetrag

Datum -> Einsatzdauer -> Fahrtkosten-> Fahrtzeit Hin- und Rück -> Summe
leer -> á 20€ / Std. -> 0,25€ / km -> á 20€ / Std. -> leer
29.11.2018 -> 2 Std. -> 15 km -> 1 Std. -> Gesamtbetrag

Die zwei Fälle habe ich. Obere Anreise mit den öffentlichen Verkehrsmitteln und unten mit dem Auto.
Die zweite Zeile (die mit leer anfängt), da will ich die Werte mit Variablen befüllen.

Ich werde jetzt mal deinen Code anschauen und falls ich Fragen habe, mich nochmals melden.

Kann mir jemand bitte in verständlichen Worten erklären, was genau die beiden Zeilen machen?

<th><?php echo ($custom_fields['invoice']['oepnv_auto'] ? 'Fahrtkosten <br />(ÖPNV)' : 'Fahrtkosten <br /> Hin- und Rück') ?></th>
<th><?php echo ($custom_fields['invoice']['oepnv_auto'] ? 'ÖPNV' : 'Fahrtkosten') ?></th>

In other php code

    if ($custom_fields['invoice']['oepnv_auto']) {
        echo 'Fahrtkosten &lt;br /&gt;(ÖPNV)' ;
    } else {
        echo 'Fahrtkosten &lt;br /&gt; Hin- und Rück' ;
    }

and

    if ($custom_fields['invoice']['oepnv_auto']) {
        echo 'ÖPNV';
    } else {
        echo 'Fahrtkosten';
    }
1 Like

Danke für die Erklärung.

1 Like