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
$resultaat = mysql_query($sql) or die(mysql_error());
while ($rij = mysql_fetch_array($Resultaat)) {

de ene keer resultaat met een hoofdletter en de andere keer niet, daar zit de fout :P
Ik schaam me diep, soms zie je het echt niet meer. Misschien ook nog wat tips om tot die 2 kolommen met producten te komen?
Inmiddels code weer aangepast zodat er naar de "detailspagina" wordt gelinkt wanneer mensen op de titel klikken. Blijft nog het probleem om 2 kolommen met producten naast elkaar te krijgen ipv alles nu onder elkaar.

<?
$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) >= 1)
{
echo "<table border =1>";

while ($rij = mysql_fetch_array($resultaat)) {
$Product_ID = $rij["Product_ID"];
echo "<tr>";
echo "<a href=\"rubriek_resultaat.php?Product_ID=$Product_ID\"><td>".$rij["Titel"]."</a></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\"><br><br>";
}
}else {
echo "Geen afbeelding";
}
echo "</td></tr>";
}
echo "</table>";
}
mysql_close();
?>
Ik denk dat je om dat te bereiken met een teller moet gaan werken die telt hoeveel rijen er geselecteerd zijn. Vervolgens laat je de helft in de ene kolom plaatsen en de andere helft in de andere kolom.

In SQL kan dat met de SELECT COUNT query zonder teller gerealiseerd worden. Je slaat dan het resultaat van de count op in een variabele, en je deels deze door 2. Dat sla je op in variabele2.

Vervolgens moet je in de ene kolom een selectie maken waarbij het ID kleiner of gelijk is aan het ID van het "middelste" artikel en in de andere kolom waar het ID groter is dan het ID van het "middelste" artikel in de database.

Wat je ook als selectie criterium zou kunnen laten gelden is alle oneven nummers links en alle even nummers rechts. Maar je ontkomt er dus niet aan om de selectie op te splitsen in twee delen en dan het ene deel in de ene kolom te zetten en het andere deel in de andere kolom.

Dit zou je een eind op weg moeten helpen om tot een correcte query te komen.
mijn oplossing is alles in arrays stoppen en daarna met een for loop uitlezen
mijn oplossing is alles in arrays stoppen en daarna met een for loop uitlezen


Zou je dat iets meer kunnen uitleggen? Ben net begonnen, ken ook de beginselen van genoemde termen maar een klein voorbeeldje zou kunnen helpen.

Bij voorbaat dank. Ook naar de manier met "count" zal ik eens kijken.
<?
while($row = mysql_fetch_assoc($result)){
$data[]=$row;
}
echo '<table>';
for($i=0;$i<count($data);$i++){
echo'<tr><td>';
print_r($data[$i++]);
echo'</td><td>';
print_r($data[$i]);
echo'</td></tr>';
}
echo'</table>';
?>
dubbelpost (wat is het forum langzaam?)
Bedankt, ga morgen het één en ander proberen en meld hier wel mijn voortgang.
Rick> ik ben ermee aan de slag geweest maar heb er uiteindelijk niet veel van kunnen maken. Vanalles geprobeerd met $data[]=$row maar niet het gewenste resultaat. Ik durf het bijna niet te vragen maar zou je nog iets meer toelichting kunnen geven?

Reageren