gevens uit database tonen in een andere gevens opsomming
Ik heb een tabel gemaakt met opsomming uit een database tabel:
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
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
<?php
if ($max > 0) {
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$teller = 0;
$naast_elkaar = 4;
echo '<table cellpadding="3" cellspacing="6" border="0" align="center" > ';
$sql = "SELECT * FROM gamma WHERE keuze = '$selectie'";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
$artnr = $row['artnr'];
$naam = $row['naam'];
$afbeelding = $row['afbeelding'];
echo ($teller % $naast_elkaar) == 0 ? '<tr valign="top"><td></td>' : '';
echo '<td>';
echo '<table border="2" align="center" cellspacing="0"><tr ><td colspan="2" align="center">'.$naam.'</td></tr><tr><td colspan="2" ><form name="detail" method="post" action="door.php"><input type=image src="afbeelding/'.$afbeelding.'" width="172" name="submit" /></td></tr></form><tr></table>';
echo '</td>';
$teller++;
echo ($teller % $naast_elkaar) == 0 ? '</tr>' : '';
}
echo ($teller % $naast_elkaar) != 0 ? '</tr>' : '';
echo '</table>';}
?>
if ($max > 0) {
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$teller = 0;
$naast_elkaar = 4;
echo '<table cellpadding="3" cellspacing="6" border="0" align="center" > ';
$sql = "SELECT * FROM gamma WHERE keuze = '$selectie'";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
$artnr = $row['artnr'];
$naam = $row['naam'];
$afbeelding = $row['afbeelding'];
echo ($teller % $naast_elkaar) == 0 ? '<tr valign="top"><td></td>' : '';
echo '<td>';
echo '<table border="2" align="center" cellspacing="0"><tr ><td colspan="2" align="center">'.$naam.'</td></tr><tr><td colspan="2" ><form name="detail" method="post" action="door.php"><input type=image src="afbeelding/'.$afbeelding.'" width="172" name="submit" /></td></tr></form><tr></table>';
echo '</td>';
$teller++;
echo ($teller % $naast_elkaar) == 0 ? '</tr>' : '';
}
echo ($teller % $naast_elkaar) != 0 ? '</tr>' : '';
echo '</table>';}
?>
Maar nu zou ik eigenlijk per element(row database) kijken in een andere database tabel om zo per element (row database) nog ander gevens te tonen
dus een opsomming in een opsomming, ik heb al vanalles geprobeert en gezocht maar vindt het niet.
Is dit mogelijk (de eerste gegevens moeten wel blijven staan in rijen van 4)
Je verhaal begrijp ik niet, maar als je wilt koppelen aan een andere db zou ik kijken naar JOIN in je query.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql = "
SELECT g.artnr, g.naam, a.nogiets
FROM gamma AS g
LEFT JOIN andere_tabel AS a
ON a.art_nr = g.artnr
WHERE g.keuze = '".$selectie."'
ORDER BY g.art_nr DESC
";
?>
$sql = "
SELECT g.artnr, g.naam, a.nogiets
FROM gamma AS g
LEFT JOIN andere_tabel AS a
ON a.art_nr = g.artnr
WHERE g.keuze = '".$selectie."'
ORDER BY g.art_nr DESC
";
?>
Gewijzigd op 03/11/2012 11:22:38 door Eddy E
zal eens uit leggen hé, ik moet uit het eerste tabel naam en afbeelding selecteren via het artnr en moet dan kijken naar de andere tabel of er verschillende kleuren zijn ook via het artnr om zo onder de naam de kleuren weer te geven. en dan tonen (ook de gene tonen waar er maar 1 van kleur is )
Het kan zijn dat je nu 4 rijen krijgt met hetzelfde artikel nummer. Dat is met een CONCAT_GROUP op te lossen (dan wordt het weer 1 rij) of je loop iets moeilijker maken.
Wil je alleen de namen van de kleuren tonen?
Geef even van beide tabellen de kolommen (dus de namen + relaties).
Je afbeelding staat neem ik aan in gamma.afbeelding? Dat kort ik af met g.afbeelding (zie het gamma AS g).
Ik had al verwacht dat het artikelnummer hetzelfde zou zijn: daarom join ik op ON a.art_nr = g.artnr.
Hoe je tabel andere_tabel er uit ziet, weet ik niet. Zelfs de naam niet.
Ter vollediging, dit is een aggegrate functie dus 'moet' (in dit geval) samen met een GROUP BY.
2de tabel: Keuze [artnr] [kleur] +nog andere die ik hier niet gebruik
maar in de tweede tabel heb ik dus verschillende met hetzelfde artnr maar andere kleur dusen deze vershillende kleuren moeten bij de naam komen uit de 1ste tabel.
dus wil ik van ieder artikel de naam tonen de afbeeldingen de verschillende kleuren
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
gamma.artnr,
gamma.naam,
gamma.afbeelding,
GROUP_CONCAT(keuze.kleur ORDER BY keuze.kleur) AS kleuren
FROM
gamma
INNER JOIN
keuze
ON
gamma.artnr = keuze.artnr
WHERE
gamma.keuze = 'iets'
GROUP BY
gamma.artnr
gamma.artnr,
gamma.naam,
gamma.afbeelding,
GROUP_CONCAT(keuze.kleur ORDER BY keuze.kleur) AS kleuren
FROM
gamma
INNER JOIN
keuze
ON
gamma.artnr = keuze.artnr
WHERE
gamma.keuze = 'iets'
GROUP BY
gamma.artnr
Als het mogelijk is dat een artnr wel in de gamma tabel staat, maar niet in de keuze moet je een LEFT JOIN gebruiken ipv INNER JOIN
In de 'kolom' kleuren krijg je dan bv blauw,groen,rood als waarde en dit kan je dan (eventueel) met explode(',', $row['kleuren']) omzetten naar een array.
Gewijzigd op 03/11/2012 14:50:14 door Ger van Steenderen
in de tabel keuze zit er bij iedere kleur een afbeelding dus moet ik ook gewoon typen:
GROUP_CONCAT(keuze.afbeelding ORDER BY keuze.afbeelding) AS afbeeldingen
maar ben ik dan zeker dat de de eerste array van kleuren uit dezelfde row komt dan het eerste array van afbeeldingen of moet ik de ORDER BY ook op keuze.kleur zetten,(bij afbeeldingen)
Toevoeging op 04/11/2012 00:09:50:
momenteel heb ik dit maar heb nog:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$sql = "SELECT
gamma.naam,
gamma.afbeelding,
GROUP_CONCAT(keuze.kleur ORDER BY keuze.kleur) AS kleuren,
GROUP_CONCAT(keuze.afbeelding2 ORDER BY keuze.afbeelding2) AS afbeeldingen
FROM
gamma
INNER JOIN
keuze
ON
gamma.artnr = keuze.artnr
WHERE
gamma.keuze = '$selectie'
GROUP BY
gamma.artnr ";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){}
?>
$sql = "SELECT
gamma.naam,
gamma.afbeelding,
GROUP_CONCAT(keuze.kleur ORDER BY keuze.kleur) AS kleuren,
GROUP_CONCAT(keuze.afbeelding2 ORDER BY keuze.afbeelding2) AS afbeeldingen
FROM
gamma
INNER JOIN
keuze
ON
gamma.artnr = keuze.artnr
WHERE
gamma.keuze = '$selectie'
GROUP BY
gamma.artnr ";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){}
?>
Nu zit ik nog met probleem want ik krijg altijd een foutmelding:
Warning: mysql_fetch_array() expects parameter 1 to be resource,
Iemand die weet waar mijn fout zit