Ik wil een database maken met daarin de reviews die ik bezit. Ik heb daarvoor de code geschreven die je hieronder ziet, er zijn een paar probleempjes. Ik heb twee resultaten in de tabel staan op dit moment, er komt er maar 1 tevoorschijn. Verder wil ik dat er van de dvd's waarvan er een review op mijn site staat een link komt naar die review. Bestaat die review niet, dan geef ik de dvd de code 999999 bij het veld review in de database, als php 999999 aantreft zou hij '--' in de tabel moeten zetten, zo niet, dan de link naar de desbetreffende review. Ook dit werkt nog niet, de '--' wordt altijd weergegeven.

Hier wat er nu uit komt rollen: www.mc-online.info/dvd_collection.php
En hier de code:

<?php

$username="mconline";
$password="******";
$database="reviews";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$vraag = "SELECT * FROM dvdcoll";
$result = mysql_query($vraag) or die('Error, query failed');

$num=mysql_numrows($result);

$title=mysql_result($result,$i,"title");
$director=mysql_result($result,$i,"director");
$type=mysql_result($result,$i,"type");
$discs=mysql_result($result,$i,"discs");
$review=mysql_result($result,$i,"review");
$imdbid=mysql_result($result,$i,"imdbid");

echo "<table width=100% BORDER=0>";
echo "<tr><TD>Title</TD><TD>Director(s)</TD><TD>Type</TD><TD>Discs</TD><TD>Review</TD><TD>IMDb</TR>";
$nr="0";
while ($row = mysql_fetch_array($result)) {
echo "<TR><TD>". $row['title']." </TD>";
echo "<TD>". $row['director']." </TD>";
echo "<TD>". $row['type']." </TD>";
echo "<TD>". $row['discs']." </TD>";

if ( $row['review'] = 999999 ) {
echo "<TD>--</TD>";
}
else {
echo "<TD><a href=reviews.php?page=". $row['review']. ">x</a></TD>";
}

echo "<TD><a href=http://www.imdb.com/title/tt";. $row['imdbid']. ">x</a></TD>";
}
echo "</table>";

?>

Iemand een idee wat ik fout doe? Alvast bedankt
en wat geeft hij terug als je gewoon

echo $row['review'] doet?

Geeft hij dan wel het getal wat jij in die rij hebt staan?
Dit is een toekenning van 999999 aan $row['review'], dus de if() zal altijd true geven.
if ( $row['review'] = 999999 ) {

En dat is een vergelijking.
if ( $row['review'] == 999999 ) {
@SanThe: Natuurlijk, dom dom dom :)
Aha, weer wat geleerd, het werkt nu prima, bedankt!
Bestaat die review niet, dan geef ik de dvd de code 999999 bij het veld review in de database, als php 999999 aantreft zou hij '--' in de tabel moeten zetten
Zo te lezen is de database niet (optimaal) genormaliseerd.

Wanneer er geen review is, dan zet je namelijk helemaal geen code in het veld 'review'. Er valt namelijk helemaal niets te koppelen (foreignkey). Net zo min als dat je -- in de tabel zet. Dit is opmaak en geen data. Opmaak zet je niet in de database.

Voorbeeldje:
tabel 'dvd'
- id (INT, auto_increment)
- titel (VARCHAR)

tabel 'review'
- id (INT, auto_increment)
- id_dvd (INT, foreignkey met de tabel 'dvd' op id)
- omschrijving (TEXT)

Reageren