2017-05-22 11 views
-2

Ich möchte den Text rot machen, wenn username == user_id, aber es gibt mir einen Syntaxfehler, unerwartete 'if' (T_IF). mein Code:PHP-Syntaxfehler, unerwartete 'if' (T_IF)

foreach ($dag as $taak) { 
    echo '<li' if($_SESSION['user_id'] == $taak['username']){ echo 'style="color:red"';}'>'.$taak['taak_naam'].' - '.$taak['username'].'</li>'; 
} 

jemand irgendeine Idee?

Antwort

2

Es sollte so etwas wie dieses

echo '<li'; 

if($_SESSION['user_id'] == $taak['username']){ 

echo ' style="color:red"'; 

} 

echo '>'.$taak['taak_naam'] . ' - ' .$taak['username'] . '</li>'; 
+0

Warum kann ich das wissen? – JYoThI

+1

Es fehlt immer noch ein Leerzeichen vor dem Attribut style. – Hienz

+0

tanqq für Punkt, dass @Hienz – JYoThI

-1

Das Semikolon vergessen.

foreach ($dag as $taak) { 
echo '<li'; 
if($_SESSION['user_id'] == $taak['username']) { 
    echo ' style="color:red"'; 
} 
echo '>'.$taak['taak_naam'].' - '.$taak['username'].'</li>'; 
} 
+0

Dies wird Ihnen immer noch einen Syntaxfehler geben, wenn in diesem Zusammenhang nicht erlaubt ist (Kommentar wurde vor dem Bearbeiten der Antwort gemacht) –

+0

Warum ist es nicht erlaubt? Ich denke, es sollte funktionieren. – Hienz

+0

Sehen Sie sich die Antwort vor der Bearbeitung an. –

-1

Sie verwenden können, die kurz sein, wenn Syntax, die lange Syntax in diesem Zusammenhang nicht erlaubt ist:

foreach ($dag as $taak) { 
     echo '<li' . (($_SESSION['user_id'] == $taak['username']) ? ' style="color:red"' : '') . '>' .$taak['taak_naam'] . ' - ' . $taak['username'].'</li>'; 
    } 
+0

Es gibt keine solche Sache wie * "die kurze if-Syntax" *. ['if'] (http://php.net/manual/en/control-structures.if.php) ist eine Kontrollflussanweisung, ['?: '] (http://php.net/manual/ de/language.operators.comparison.php # language.operators.comparison.ternary) ist ein Operator. Sie sind völlig verschiedene Dinge. Eine Anweisung macht etwas (eine control-flow-Anweisung entscheidet darüber, welche Code-Verzweigung basierend auf einer Bedingung ausgeführt werden soll), ein Operator verbindet zwei Unterausdrücke zu einem größeren Ausdruck. Ein Ausdruck hat einen Wert (er kann berechnet werden). – axiac

0

Sie nicht verwenden können, wenn zwischen den Strings

foreach ($dag as $taak) { 
     $style=''; 
     if($_SESSION['user_id'] == $taak['username']) 
      $style='style="color:red"'; 
     echo "<li {$style}> {$taak['taak_naam']} - {$taak['username']}</li>"; 
    } 

       ****OR**** 


foreach ($dag as $taak) { ?> 
    <li <?php if($_SESSION['user_id'] == $taak['username']) 
     echo 'style="color:red"'; ?> > 
     <?= $taak['taak_naam'].' - '.$taak['username']; ?> 
    </li>'; 
    <?php 
} 
1

Mischen Sie keine Entscheidungen (if ...) mit dem Ausgang. Bereiten Sie alles vor Echo:

foreach ($dag as $taak) { 
    // Don't add color by default 
    $style = ''; 
    // Special color for special entries 
    if ($_SESSION['user_id'] == $taak['username']) { 
     $style = ' style="color: red;"'; 
    } 

    // Make sure HTML special characters in $taak['username'] do not break the HTML 
    $username = htmlspecialchars($taak['username']); 

    // Display 
    echo("<li{$style}>{$taak['taak_naam']} - {$username}</li>"); 
} 

Durch die string in double quotes (") Umgebung, PHP recognizes variable names Inneren und ersetzt sie mit ihren Werten.

Die curly braces ({ and }) around the array values tell PHP die Variable $taak['taak_naam'] ist, sonst findet es nur $taak und es gibt Array['taak_naam'] (was nicht das, was wir wollen).

Wenn ein Wert, den Sie zum Erstellen von HTML-Inhalten verwenden, Zeichen enthält, die in HTML eine Sonderform haben, müssen Sie diese Zeichen mit ihrer korrekten HTML-Definition codieren. Die PHP-Funktion htmlspecialchars() weiß, wie es geht.

Es kodiert <, >, & und " (diese sind HTML Brecher, wenn sie nicht richtig codiert werden). Wenn Sie alle Symbole, die in HTML definiert sind, als "Zeichenentitäten" codieren müssen, können Sie stattdessen die PHP-Funktion htmlentities() verwenden.

Verwandte Themen