Ik ben net met PHP/MySQL begonnen en heb een database aangemaakt met producten. Uit deze database probeer ik alle producten te krijgen en deze in tabelvorm te presenteren. Op dit moment heb ik ervoor gekozen om alles horizontaal te presenteren (Titel, Fabrikant, PrijsNormaal, Prijsaanbieding en een plaatje). Dit leek me voor nu even iets makkelijker want eigenlijk wil ik ernaar toe om te beginnen met het (thumbnail) plaatje en rechts daarnaast de 4 eergenoemde rubrieken onder elkaar. Dit neemt minder ruimte in waardoor je 2 kolommen van producten naast elkaar kan maken. Stap daarna moet worden dat je op de titel klikt en naar een detailscherm moet gaan.

EDIT: Error opgelost, link naar details gelukt. Alleen nog oplossing voor 2 kolommen met producten gezocht!!

Maar eerst terug naar wat ik nu heb:

<?
$username="";
$password="";
$database="";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$sitepad = "/test/tnimages/";
$sql = "SELECT * FROM Product ";
$resultaat = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($resultaat) > 0)
{
echo "<table border =1>";

while ($rij = mysql_fetch_array($Resultaat)) {
echo "<tr>";
echo "<td>".$rij["Titel"]."</td>";
echo "<td>".$rij["Fabrikant"]."</td>";
echo "<td>".$rij["Prijsnormaal"]."</td>";
echo "<td>".$rij["PrijsAanbieding"]."</td>";
echo "<td>";
$sql = "SELECT * FROM Pictures WHERE Product_ID=".$rij["Product_ID"];
$Pictures = mysql_query($sql);
if (mysql_num_rows($Pictures) > 0) {
while ($afb_rij = mysql_fetch_array($Pictures)) {
$bestandsnaam = $sitepad.$afb_rij["Pictures_ID"].$afb_rij["Bestandstype"];
echo "<img src=\"$bestandsnaam\"> ";
}
}else {
echo "Geen afbeelding";
}
echo "</td></tr>";
}
echo "</table>";
}
mysql_close();
?>


Ik krijg de volgende error: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Heb de uitleg over deze functie op deze site nog eens gelezen maar zie de fout niet zo snel.

Wie kan mij helpen en ook eventueel al meedenken over mijn gevolgstappen.

HEEL erg bedankt alvast, wordt langzamerhand gek van het feit dat het niet werkt. LOL
<?
$query = 'SELECT id, naam, nog_iets FROM tabel';
$result = mysql_query($query);

while($row = mysql_fetch_assoc($result)){
$data[]=$row;
}

echo '<table>';
for($i=0;$i<count($data);$i++){
echo'<tr><td>';
echo $data[$i]['id'].'<br />';
echo $data[$i]['naam'].'<br />';
echo $data[$i]['nog_iets'].'<br />';
echo'</td><td>';
$i++;
echo $data[$i]['id'].'<br />';
echo $data[$i]['naam'].'<br />';
echo $data[$i]['nog_iets'].'<br />';
echo'</td></tr>';
}
echo'</table>';
Rick, helemaal top. Heb de code nog iets aangepast zodat het wat fraaier eruit ziet. Heb uit mijn oude code ook weer de link naar de detail pagina toegevoegd maar die lijkt nog niet helemaal te werken. Ik ben er natuurlijk nog lang niet want nu moet ik naast de tekst een plaatje tonen. In de code uit mijn eerste bericht had ik dit netjes voor elkaar maar hoe ik dat hierin ga implementeren is een heel ander verhaal. Code zoals ik nu heb zonder afbeeldingen:

$query = 'SELECT Product_ID, Titel, Fabrikant, PrijsNormaal, PrijsAanbieding FROM Product';
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_assoc($result)){

$data[]=$row;

}
$Product_ID = $row["Product_ID"];
echo '<table table width="595">';
for($i=0;$i<count($data);$i++){
echo'<tr><td>';
echo $data[$i]['Product_ID'].'<br />';
echo '<a href=\"rubriek_resultaat.php?id=$Product_ID\"><b>'.$data[$i]['Titel'].'</b></a><br />';
echo $data[$i]['Fabrikant'].'<br />';
echo "Prijs normaal: €&nbsp;".$data[$i]['PrijsNormaal'].'<br />';
echo "Prijs aanbieding: €&nbsp;".$data[$i]['PrijsAanbieding'].'<br />';
echo'</td><td>';
$i++;
echo $data[$i]['Product_ID'].'<br />';
echo '<b>'.$data[$i]['Titel'].'</b><br />';
echo $data[$i]['Fabrikant'].'<br />';
echo "Prijs normaal: €&nbsp;".$data[$i]['PrijsNormaal'].'<br />';
echo "Prijs aanbieding: €&nbsp;".$data[$i]['PrijsAanbieding'].'<br />';
echo'</td></tr>';
}
echo'</table>';

probeer het eens met deze query, dat zou het wat makkelijker moeten maken :)
$sql = "SELECT * FROM Product,Pictures WHERE Pictures.Product_ID=Products.Product_ID";
Ok, ik ga ermee aan de slag. Overigens voorzie ik vooral problemen om het plaatje netjes in een kolom ernaast te krijgen.

Enig idee waarom mijn link van de titel naar detail pagina niet werkt?

Super dat je helpt in ieder geval!!
omdat dit niet klopt: $Product_ID = $row["Product_ID"];

om het iets netter te maken:
<?
echo '<table table width="595">';
for($i=0;$i<count($data);$i++){
echo'<tr>';
for($i1=0;$i1<2;$i1++){
$i+=$i1;
echo'<td>';
echo'<table border="1">
<tr>
<td>'.$data[$i]['Product_ID'].'</td>
<td rowspan="5"><img src="'.$data[$i]['Pictures_ID'].$data[$i]['Bestandstype'].'" />
</tr>
<tr>
<td><a href="rubriek_resultaat.php?id='.$data[$i]['Product_ID'].'"><b>'.$data[$i]['Titel'].'</b></a></td>
</tr>
<tr>
<td>'.$data[$i]['Fabrikant'].'</td>
</tr>
<tr>
<td>Prijs normaal: ? '.$data[$i]['PrijsNormaal'].'</td>
</tr>
<tr>
<td>Prijs aanbieding: ? '.$data[$i]['PrijsAanbieding'].'</td>
</tr>
</table>
</td>';
}
echo'</tr>';
}
echo'</table>';
?>

test maar eventjes of het werkt :P
Ok, nadat ik uit de query een "s" had weggehaald die er niet hoorde (gelukkig kan ik jou ook nog betrappen op een foutje LOL), kwam er inderdaad mooi een lijstje uit. Heb er maar een stuk of 6 producten inzitten. Wat viel me op:

1) ik heb nu weer alles onder elkaar ipv 2 productkolommen (het zou moeten zijn plaatje 1, tekst over plaatje 1 ernaast, plaatje 2, tekst over plaatje 2 ernaast.

2) als ik voor een product 2 plaatjes heb dan worden beide plaatjes weergegeven met beiden dezelfde teksten ipv dat de tekst er 1 keer staat en de plaatjes onder elkaar (in de praktijk zal ik waarschijnlijk maar 1 plaatje hebben maar is misschien toch wel netjes om te ondervangen). In mijn eerste ontwerp ging dit nog wel goed met de loop en ook een tekst mocht er geen plaatje zijn).

3) op het eind van de opsomming krijg ik nog een soort lege tabel met
Prijs normaal: (verder leeg)
Prijs aanbieding: (verder leeg)
En daarnaast een plaatje (rood kruis en als je bij properties kijkt verder ook geen "picture" naam.

4) met de huidige query krijg je alleen producten die ook daadwerkelijk een plaatje hebben.

Ik hoop dat we eruit gaan komen :)
probeer hem nu maar, het zou nu moeten werken

enne ik maak zeer regelmatig fouten hoor, het probleem is dat ik het zelf niet kan testen omdat ik de database niet heb (en al had ik de database dan zou ik er te lui voor zijn :P)

1. opgelost (hoop ik tenminste)
2. het lijkt me dat je toch maar 1 plaatje wilt (anders is de layout direct kaput :P
3. kijk eventjes of het nu wel werkt, na mijn wijziging zou het kunnen dat het probleem verholpen is, maar waarschijnlijk moet er nog een ifje bij om te kijken of er data is
4. SELECT * FROM Product,Pictures WHERE Pictures.Product_ID=Products.Product_ID OR Pictures.Product_ID!=Products.Product_ID
Nou, nu komen we echt in de buurt. Enige probleem nog:

Ik krijg nu alle 6 de producten 6x te zien steeds met een ander plaatje. Dus 6x de producten met plaatje1, daaronder 6x met plaatje2 etc.

Ik ga weer even aan de layout werken want elke tabel is weer anders van grootte.

Vind je overigens alles behalve lui :)
ja, de query is een beetje een probleem nu :/

ik zit me af te vragen of dit wel kan met 1 query
misschien dan toch maar een 2e query erbij bouwen
LOL Ik dacht echt dat we er bijna waren. Heb het nu ook mooi in mijn layout, precies zoals ik in gedachten had. Kleine tegenslag dus.

Reageren