Resultaten weergeven
EDIT: Error opgelost, link naar details gelukt. Alleen nog oplossing voor 2 kolommen met producten gezocht!!
Maar eerst terug naar wat ik nu heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?
$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();
?>
$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
Gewijzigd op 20/04/2004 10:53:00 door Guido
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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?
$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();
?>
$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();
?>
Gewijzigd op 20/04/2004 10:45:00 door Guido
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
Quote:
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.
Gewijzigd op 20/04/2004 17:20:00 door Rick
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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
$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>';
$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>';
$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: € ".$data[$i]['PrijsNormaal'].'<br />';
echo "Prijs aanbieding: € ".$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: € ".$data[$i]['PrijsNormaal'].'<br />';
echo "Prijs aanbieding: € ".$data[$i]['PrijsAanbieding'].'<br />';
echo'</td></tr>';
}
echo'</table>';
$sql = "SELECT * FROM Product,Pictures WHERE Pictures.Product_ID=Products.Product_ID";
Enig idee waarom mijn link van de titel naar detail pagina niet werkt?
Super dat je helpt in ieder geval!!
om het iets netter te maken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?
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>';
?>
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
Gewijzigd op 22/04/2004 16:19:00 door Rick
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 :)
Gewijzigd op 22/04/2004 14:50:00 door Guido
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
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 :)
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.