Als beginnende PHP-er worstel ik met het volgende probleem. Ik heb een database met een aantal tabellen: vogelwaarnemingen en foto's van vogels. Ik heb een script waarmee ik de waarnemingen van de laatste week kan tonen. Nu wil ik aan de hand van de code van vogel, telkens in de fototabel kijken of er een foto bestaat. Zo ja een link naar de foto tonen, zo nee niets doen. Ik krijg het niet voor elkaar om de query voor de foto uit te laten voeren. Hieronder de (uitgeklede versie van het PHP script)

Iemand een idee waarom de query voor de foto niet uitgevoerd wordt?

-----------------------------------
<?php

include ("db_connect_local.php");

// query om de waarnemingen te selecteren

$query = " select s.soort,
s.euringnummer,
date_format(datum, '%d-%m-%Y'),
p.plaatsnaam ,
aantal,
from soort s,
waarnemingen w ,
plaats p
WHERE w.soort = s.euringnummer and
p.plaatsnummer = w.locatie and
TO_DAYS(NOW()) - TO_DAYS(datum) between 0 and 8
order by datum desc, soort";

$result = mysql_query ($query);

// query om te kijken of er een foto in de tabel staat

$zoekfoto = "select fotonr from vwg_foto where soort='". $soortc. "'";

?>

<html>
<head>
<title>Weekoverzicht</title>

</head>

<body>
<table class="php_tabel" width="100%" border="0" cellspacing="1" cellpadding="2">
<?php
echo("<tr><td ><span class = \"vet\">Soort</td>
<td width=\"70\" class = \"vet\">Datum </td>
<td width=\"40\" class = \"vet\">Aant. </td>
<td width=\"100\"><span class = \"vet\">Locatie</td>
<td width=\"100\"><span class = \"vet\">Waarnemer</td>
<td><span class = \"vet\">Bijzonderheden</td></tr>");
//
// een voor een de waarnemingen ophalen
//
while (list($soort,$soortc,$datum, $locatie,$aantal,
$schat,$waarn,$bijz,$kaart,$blok,$hok) = mysql_fetch_row($result))
{
// nu kijken of er bij de soort een foto bestaat

$fotoresult = mysql_query($zoekfoto);

// is er een foto, dan een link aanmaken om daarna alle foto's te kunnen tonen

if ($fotoresult[fotonr] <> NULL)
{
$foto = "<a href=\"javascript:popvenster('fotos.php?soort=".$soortc."'); \">foto </a>";
}
else
{
$foto = "leeg";
}

echo("<tr><td valign=\"top\"><span class = \"vet\">$soort</td>
<td valign=\"top\" width=\"70\" nowrap>$datum </td>
<td valign=\"top\" width=\"40\" align= \"center\" >$aantal</td>
<td valign=\"top\" width=\"100\">$locatie</td>
<td valign=\"top\">$waarn</td>
<td valign=\"top\">$bijz </td></tr>");
}

?>
</table>

</body>
</html>
Waarschijnlijk is het de Wet van Murphy: Alles wat fout kan gaan, zal ook fout gaan.

Dus moet je controleren of dat hier ook het geval is. Een query kan namelijk altijd mislukken, al is het maar omdat de databaseserver down is.

Voorbeeldje van een foutafhandeling:
<?php
// De eerste twee regels van je code:
ini_set('display_errors', 1);
error_reporting(E_ALL);

// eerste deel van je code

$query = "....."; // Hier je query

$result = mysql_query($query);

// controleer of de query is gelukt:
if(!$result){
echo 'Mislukt: '.mysql_error().'<br />';
echo 'Met query: '..$query;
die(); // Beetje bot, kan beter
}

// rest van de code
?>
Bedankt voor je reactie. Heb het in het script gezet en gedraaid. Kreeg geen foutmelding. Lijkt er op dat ik de waarde niet goed uitlees uit $result. Hoe lees je in $result wat er in zit?
Heb nu:

ini_set('display_errors', 1);
error_reporting(E_ALL);
include ("db_connect_local.php");



// eerste deel van je code
// regel bestaat in de tabel ; gecontroleerd!

$query2 = "select fotonr
from vwg_foto
where soort='1340'";

$result2 = mysql_query($query2);

// controleer of de query is gelukt:
if(!$result2){
echo 'Mislukt: '.mysql_error().'<br />';
echo 'Met query: '.$query2;
die(); // Beetje bot, kan beter
}
else
{
echo 'Met query: '.$query2;
echo ("<br> resultaat: ". $result2['fotonr']);
die ();
}


en als resultaat op scherm

Met query: select fotonr from vwg_foto where soort='1340'
resultaat:

enig idee???
<?
if ($result && mysql_num_rows($result) >= 1)
{
//gebruik ik zelf
}
?>
Dat doet precies wat ik bedoelde. Bedankt. Ik heb alles weer onder controle

over en sluiten

Reageren