2017-03-28 1 views
-3

Ich habe eine grundlegende Anzeige PHP-Tabelle für Bilder jedoch einige der Spalten in der Tabelle sind leer.PHP Mysql ignorieren leere Spalten im Echo

$result = mysql_query("SELECT * FROM table2 
    WHERE bid=$bid 
    AND fhid=$fhid 
    ") or die(mysql_error()); 

echo "<table align='center'>"; 
while($row = mysql_fetch_array($result)) { 
    echo "<tr><td>"; 
    echo '<a href="'.$row['photo1'].'"target="_blank"><img src="'.$row['thumb1'].'" width="180" height="250" alt="'.$row['name'].' '.$row['alttext'].'"/></a>'; 
    echo "</td><td>"; 
    echo '<a href="'.$row['photo16'].'"target="_blank"><img src="'.$row['thumb16'].'"width="180" height="250"alt="'.$row['name'].' '.$row['alttext'].'"/></a>'; 
    echo "</td><td>"; 
    echo '<a href="'.$row['photo2'].'"target="_blank"><img src="'.$row['thumb2'].'" width="180" height="250"alt="'.$row['name'].' '.$row['alttext'].'"/></a>'; 
    echo "</td></tr>"; 
} 
echo "</table>"; 

Wenn zum Beispiel der Zeile mit photo16 in der db-Tabelle leer war, wie kann ich dieses Skript ändere das Bild zu überspringen, ohne eine fehlende Bild auf der Seite zeigt und weiter nach photo2.

Ich habe rundherum überprüft und hatte kein Glück mit NULL, da es die ganze Zeile nicht mehr anzeigt. Danke im Voraus.

+5

Zuerst ** stop ** mit deprected mysql_ * 'API. Verwenden Sie 'mysqli_ *' oder 'PDO' mit vorbereiteten Anweisungen. Zweitens müssen Sie überprüfen, ob die Datei existiert und dann entscheiden, ob Sie den Link erstellen oder nicht – Jens

+1

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet .] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) ***. Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

Antwort

0

einfach überprüfen, ob isset var müssen Sie kontrollieren ($ row [ 'photo16'])

if (isset($row['photo16']) && strlen($row['photo16']) > 0) { 
     echo '<a href="'.$row['photo16'].'"target="_blank"> 
       <img src="'.$row['thumb16'].'"width="180" height="250"alt="'. 
        $row['name'].' '.$row['alttext'].'"/></a>'; 
    } 
+0

@JayBlanchard. Ihr Vorschlag ist richtig, aber (wenn ich richtig verstehe) scheint, dass die Frage auf ein einzelnes Bild und nicht auf die ganze Reihe bezogen ist ... könnte ich falsch liegen. – scaisEdge

+0

Ich dachte darüber nach und es scheint, dass das OP über das Überspringen einer Spalte spricht, nicht eine Zeile. Sie müssten die Spalten * innerhalb * der 'while'-Schleife durchlaufen, um zu erreichen, wonach das OP sucht. –

+0

Er spricht über überspringen Foto16 aber zeigen Foto2 .. ist für diese .. ich habe diese Antwort vorgeschlagen .. sollte besser fragen, um die OP .. .. – scaisEdge

0

Versuchen Sie, die Bedingung innerhalb des While-Zyklus hinzuzufügen, wenn die Zeile nicht leer ist. Etwas wie folgt aus:

if(!empty($row)){ 
echo "<table align='center'>"; 
echo "<tr><td>"; 
echo '<a href="'.$row['photo1'].'"target="_blank"><img src="'.$row['thumb1'].'" width="180" height="250" alt="'.$row['name'].' '.$row['alttext'].'"/></a>'; 
echo "</td><td>"; 
echo '<a href="'.$row['photo16'].'"target="_blank"><img src="'.$row['thumb16'].'"width="180" height="250"alt="'.$row['name'].' '.$row['alttext'].'"/></a>'; 
echo "</td><td>"; 
echo '<a href="'.$row['photo2'].'"target="_blank"><img src="'.$row['thumb2'].'" width="180" height="250"alt="'.$row['name'].' '.$row['alttext'].'"/></a>'; 
echo "</td></tr>"; 
} 
+0

Das OP möchte nur die Spalte ausschließen, in der der leere Wert ist. –

0

Prüfung mit empty() Funktion

wie unten . Wenn nicht leer, wird es gedruckt

if (!empty($row['photo16']) > 0) { 
     echo '<a href="'.$row['photo16'].'"target="_blank"> 
       <img src="'.$row['thumb16'].'"width="180" height="250"alt="'. 
        $row['name'].' '.$row['alttext'].'"/></a>'; 
    }