In onderstaand script worden bepaalde velden uit de mysql database weergegeven. Nu probeer ik alleen een artikel weer te geven waarbij feed_script='Auto' en waar het image veld niet leeg is. Nu wordt er toch een artikel genomen waarbij het image veld leeg is. Ik krijg vervolgens ook geen title te zien.

Bij if (!empty($image)) heb ik ook if (isset($image)) geprobeerd, de laatste optie geeft dan wel weer een titel.
Moet ik wat veranderen in mijn sqlCommand of if statement?

HOe moet ik mijn script veranderen, opdat mijn script doet wat het mijninziens behoort te doen?

<?php
include_once "scripts/connect_all.php";
mysql_query("SET NAMES utf8");

$sqlCommand = "SELECT * FROM feeds WHERE feed_script='Auto' ORDER BY pubDate DESC LIMIT 1";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());

$html4= "";
while ($row = mysqli_fetch_array($query)) {
$fid1 = $row["id"];
$feed_id = $row["feed_id"];
$image = $row["image"];
$link = $row["link"];
$description = $row["description"];
$feed_script = $row["feed_script"];
$title = $row["title"];
$title = preg_replace("/'/", '', $title);
if (strlen($title)>70) {
$title=substr($title, 0, 70)."...". substr($title,1000);
}

if (!empty($image)) {
$html4.= "<div class='nederlandc2text'>
<div class='nederlandc2bron'>
".$feed_script."
</div>
<div class='nederlandc2title'>
<li><a href='$link'target='_blank' class='nederlandc2filldiv'>".$title."</a></li>
</div>
</div>
<div>
<a href='$link'target='_blank' title=".$title."><img class='centerimg' src=".$image."></a>
</div>";
}
}

?>
Is $feed_script ergens gedefiniƫerd?
(Foutje) maar dat is het probleem niet
Je kunt gewoon in de query controleren of het veld leeg is:

... WHERE feed_script='Auto' AND image IS NOT NULL ....

En waarom zet je telkens de waarde van een kolom in een variable?
$sqlCommand = "SELECT * FROM feedsWHERE feed_script='Auto' AND image IS NOT NULL ORDER BY pubDate DESC LIMIT 1 "; werkt helaas niet
Kennelijk staat er dus altijd iets in het image veld ook wanneer het 'leeg' zou moeten zijn. Hoe vul je de velden? Hoe ziet je insert statement er uit?
Ik mis een spatie tussen feeds en WHERE
en wat gaat er fout of wat werkt er niet?
@John D Er staat niets in de image velden.

Ik gebruik het script if (!empty($image)) meerdere malen om te checken of het veld leeg is of niet en dan werkt het wel.
Insert statement gaat zo:

<?php
$html = "";
$url = "$feed_url";
$xml = simplexml_load_file($url);

for($i = 0; $i < $feed_length; $i++) {
$image = $xml->channel->item[$i]->image;
}
?>

@Ger van Steenderen

Het gaat vaak goed, als er een link staat in het image veld. Dan wordt zowel de titel als de afbeelding getoond en werkt het script perfect.
Indien er link staat en het veld van de image volledig leeg is, dan wordt zowel de titel als de afbeelding niet weergegeven. Als ik isset gebruik in plaats van !empty dan wordt weer wel de titel weergegeven maar niet de afbeelding.
Mijn vraag was wat er niet goed gaat aan de oplossing in de query, kreeg je een sql fout of een onjuist resultaat?
Co de Kraker op 14/08/2013 13:17:51

@John D Er staat niets in de image velden.
Wanneer AND image IS NOT NULL niet werkt staat er wel iets in de database. Het is beter om IS NOT NULL te gebruiken dan alle data uit de tabel over te fietsen naar PHP en daar gaan testen of iets wel of niet empty is. Wanneer AND image IS NOT NULL niet werkt staat er dus wel iets ipv NULL in de database. Hier moet je het probleem oplossen en geen symptoombestrijding of workaround maken en in PHP alles aftesten. Verder moet je ook een spatie toevoegen in FROM feedsWHERE feed: FROM feeds WHERE feed

(geen spatie was kopieerfout)
@Ger van Steenderen

Ik krijg geen melding op geen enkele manier, ook als error_reporting aan staat

@John D
Ik snap wat je bedoelt, maar het gekke is dat ook de titel niet weergegeven wordt, terwijl deze wel altijd in de database staat. Dus denk ik dat de fout ergens anders ligt dan de WHERE IS NOT NULL.

Ieder geval bedankt voor de moeite allebei, ik ga verder op zoek. Zodra ik de oplossing gevonden heb, post ik deze.

Reageren