Ik heb een MySQL-database draaien waaruit ik de info in een tabel wil krijgen. De bedoeling is dat hij op één regel in de 1e cel de mdl_course.shortname zet, in de 2e cel de mdl_course_sections.summary.

Mijn webform levert de waarden voor $nivo, $periode, en $week.

Als ik hem nu run krijg ik als output de tabel, maar zonder enige inhoud. Het lijkt erop dat hij niks doet met hetgeen in de WHILE staat (regel 22)

Ziet iemand wat ik fout doe?


<?PHP

// form vraagt naar $nivo $periode $week

// Make a MySQL Connection
mysql_connect("localhost", "username", "passwd");
mysql_select_db("moodle");

// Run sql
$sql = "SELECT mdl_course.shortname , mdl_course_sections.summary, mdl_course_sections.section"
        . " FROM mdl_course LEFT JOIN mdl_course_sections ON ( mdl_course.id = mdl_course_sections.course )"
        . " WHERE ( mdl_course.shortname like '$nivo%$periode' AND mdl_course_sections.section like '$week')"
        . " ORDER BY mdl_course.shortname LIMIT 0, 30";

$res = mysql_query($sql);

// begin table
echo "<table rules = 'all' frame='border'>";
echo "<tr><td><b>Vak</b></td><td><b>Weektaak</b></td></tr>";

// Voeg resultaten in
while ($aRow = mysql_fetch_row($res))
{
	echo "<tr>";
	echo "<td>$aRow[0]</td>";
	echo "<td>$aRow[1]</td>";
	echo "</tr>";
 }

// end table
echo "</table>";

// Close MySQL Connection
mysql_close();


?>
Begin je script ALTIJD met error_reporting(E_ALL); en controleer ALTIJD of je query wel is gelukt. Jij doet de aanname dat alles wel goed gaat, maar geheel volgens verwachting treedt de wet van Murphy in werking.

Ga je er eens in verdiepen en probeer het zelf op te lossen. Echo de query ook eens, dan weet je wat er wordt verstuurd naar de database.

Verder kun je beter mysql_fetch_assoc() gebruiken i.p.v. mysql_fetch_row(). Met de keys 0 en 1 weet je nooit wat er nu als output op je scherm komt te staan.
Ik heb me er al in verdiept, maar kwam er helaas niet uit.

$sql levert de bedoelde query, deze heb ik ook direct de database ingestuurd om te controleren of er wel resultaten zijn.

$res geeft Resource id #3
Je zou bv.
<?php
mysql_query($sql) or die(mysql_error());
?>
kunnen doen, dit is geen voorbeeld van nette fout afhandeling, maar het kan je wel verder helpen ...
Doe eens een print_r($aRow); Dan kun je zien wat er in de array staat.
Bedankt voor alle tips. De oplossing bleek echter ergens anders te zitten. De server waar de database op staat, staat op mijn werk. Vanaf hier kan ik niks aanpassen op die server.

Ik zet net de php-file op een andere server (waar ik wel nu bijkan), verander de localhost naar het adres in mysql_connect... en opeens werkt het :)

Al ben ik blij dat het werkt; ik snap er nu helemaal niks meer van. Waarom werkt het wel vanaf een externe server, maar niet vanaf de server zelf?

Reageren