categorieen en items
De bedoeling
Ik wil graag een soort album maken met verschillende mappen.
Wat heb je
Ik heb 2 tabellen.
tabel: album_cat
ID | cat | tekst
1 | auto | Alle info over autos.
2 | motor | Alle info over motors.
3 | man | Alles voor echte mannen.
4 | vrouw | Alles voor echte vrouwen.
===========================================
tabel: album
ID | naam | omschrijving | cat
1 | Opel corsa | Een snelle corsa | auto
2 | Opel Astra | Een leuke auto.. | auto
3 | Werkschoenen | Werkschoenen met stalen neus | man
4 | Dames pumps | Mooie schoenen met hoge hak | vrouw
Ik heb een pagina list.php aangemaakt en de code is:
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 '<ul>';
$sql = 'SELECT * FROM album_cat';
$res = mysql_query($sql,$link);
$sql2 = 'SELECT * FROM album';
$res2 = mysql_query($sql2,$link);
if ($res && mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo '<li>'.$row['tekst'].'</li><br />';
// loop maken.
if ($res2 && mysql_num_rows($res2) >= 1)
{
echo '<ul>';
while ($row2 = mysql_fetch_array($res2))
{
if($row2['cat'] == $row['cat']){
echo '<li>'.$row2['naam'];
}
}
echo '</ul>';
// einde loop
} else {
echo 'Error.. leeg';
}
}
}
$sql = 'SELECT * FROM album_cat';
$res = mysql_query($sql,$link);
$sql2 = 'SELECT * FROM album';
$res2 = mysql_query($sql2,$link);
if ($res && mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo '<li>'.$row['tekst'].'</li><br />';
// loop maken.
if ($res2 && mysql_num_rows($res2) >= 1)
{
echo '<ul>';
while ($row2 = mysql_fetch_array($res2))
{
if($row2['cat'] == $row['cat']){
echo '<li>'.$row2['naam'];
}
}
echo '</ul>';
// einde loop
} else {
echo 'Error.. leeg';
}
}
}
Maar ik krijg als output:
* Alle info over autos
- Opel Corsa
- Opel Astra
* Alle info over motors
* Alles voor echte mannen
* Alles voor echte vrouwen
((Link: voorbeeld ))
probleem
Hij laad van de eerste whilelus dus netjes de 'producten' maar
niet meer van categorie 2,3 etc...
Ik zou graag willen weten wat ik verkeerd doen.
De bedoeling is overigens dat ik later met een CMS
die categorien kan aanmaken,wijzigen en verwijderen daarom heb ik
ze in een apart tabel gezet.
groeten, Antony
Gewijzigd op 17/03/2012 14:37:20 door Antony Riksen
Gebruik
Code (php)
1
SELECT c.id AS cat_id, c.cat, c.tekst, a.id AS album_id, a.naam, a.omschrijving FROM album_cat AS c, album AS a WHERE c.cat = a.cat SORT BY a.cat ASC
Nu krijg je alle informatie, alfabetisch gesorteerd op de categorie naam.
Gewijzigd op 17/03/2012 15:02:24 door Victor -
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
<!--
@import('php/connect.php');
,-="""=.
.' `.
( `.
`. `..
,' .'
`. '.
`-. `-.
) `=-.
.' `=-.
.` .`-.
_ ( \ `-.
,' `. `. /`. \
/ `. \ | `. `.
,' `. ) / \ \
/ .'`. `. ) | `. \
,' .' `. `./ \ `. \
,' .' `. \ \ \
,' .' `. \ `. \
,' .' `. ) ) (__.
,' ( `. ) `."""'
_.-' __) `. .
`""'"" `"""""""
//--><ul><li>info over auto`s</li><br /><ul><li>Opel Corsa<li>Opel Astra</ul>
<li>info over Motor`s</li><br /><ul></ul><li>Alles voor mannen</li><br /><ul></ul><li>Alles voor vrouwen</li><br /><ul></ul>
@import('php/connect.php');
,-="""=.
.' `.
( `.
`. `..
,' .'
`. '.
`-. `-.
) `=-.
.' `=-.
.` .`-.
_ ( \ `-.
,' `. `. /`. \
/ `. \ | `. `.
,' `. ) / \ \
/ .'`. `. ) | `. \
,' .' `. `./ \ `. \
,' .' `. \ \ \
,' .' `. \ `. \
,' .' `. ) ) (__.
,' ( `. ) `."""'
_.-' __) `. .
`""'"" `"""""""
//--><ul><li>info over auto`s</li><br /><ul><li>Opel Corsa<li>Opel Astra</ul>
<li>info over Motor`s</li><br /><ul></ul><li>Alles voor mannen</li><br /><ul></ul><li>Alles voor vrouwen</li><br /><ul></ul>
@dem
Hij showd alleen het eerste categorie terwijl de rest ook een value heeft...
@victor
SELECT c.id AS cat_id, c.cat, c.tekst, a.id AS album_id, a.naam, a.omschrijving FROM album_cat AS c, album AS a WHERE c.cat = a.cat SORT BY a.cat ASC
c.id , c.cat etc. ?! waar trek je dit vandaan?
en hoe kan ik dat dan netjes echo-en ?
groeten, Antony
Roep alleen de velden op die je nodig hebt.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
# We zetten dit volledig bovenaan
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
include 'config.php';
$sql1 = "SELECT ID, cat, tekst
FROM album_cat
";
# Check of query is gelukt
if (($result_sql1 = mysql_query($sql1)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql1,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_sql1) == 0)
{
echo 'Er zijn geen album categorieën';
}
else
{
// Categorieën zijn succesvol opgeroepen, nu doen we hetzelfde maar nu de albums zelf:
$sql2 = "SELECT ID, naam, omschrijving, cat
FROM album
";
# Check of query is gelukt
if (($result_sql2 = mysql_query($sql2)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql2,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_sql2) == 0)
{
echo 'Er zijn nog geen albums';
}
else
{
while ($row1 = mysql_fetch_array($result_sql1))
{
echo '<li>'.$row1['tekst'].'</li><br />';
echo '<ul>';
while ($row2 = mysql_fetch_array($result_sql2))
{
if($row2['cat'] == $row1['cat']){ // Klopt dit wel? Weet niet zeker
echo '<li>';
echo $row2['naam'];
}
}
}
}
}
?>
# We zetten dit volledig bovenaan
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
include 'config.php';
$sql1 = "SELECT ID, cat, tekst
FROM album_cat
";
# Check of query is gelukt
if (($result_sql1 = mysql_query($sql1)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql1,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_sql1) == 0)
{
echo 'Er zijn geen album categorieën';
}
else
{
// Categorieën zijn succesvol opgeroepen, nu doen we hetzelfde maar nu de albums zelf:
$sql2 = "SELECT ID, naam, omschrijving, cat
FROM album
";
# Check of query is gelukt
if (($result_sql2 = mysql_query($sql2)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql2,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_sql2) == 0)
{
echo 'Er zijn nog geen albums';
}
else
{
while ($row1 = mysql_fetch_array($result_sql1))
{
echo '<li>'.$row1['tekst'].'</li><br />';
echo '<ul>';
while ($row2 = mysql_fetch_array($result_sql2))
{
if($row2['cat'] == $row1['cat']){ // Klopt dit wel? Weet niet zeker
echo '<li>';
echo $row2['naam'];
}
}
}
}
}
?>
Ik heb wat geprobeerd, had niets te doen.
Ik heb het nog niet getest.
Zeg even wat het geeft.
1 op 1:
Linkje
ik ga het nu even lezen en kijken of ik het snap :)
thanks alvast.
// edit
Hij doet precies het zelfde als mijn code...
alleen ik sluit de list af en in jouw code niet.
waardoor de opmaak anders is.
En ik vond mijn code sneller te lezen...
Het probleem blijft:
Hij 'leest' de eerste categorie perfect uit,
en dan alleen nogmaar de categorieen en die de inhoud ervan...
groeten,
Gewijzigd op 17/03/2012 15:47:12 door Antony Riksen
Dan kan ik zien waar het probleem zit.
ik heb wat eraan gewerkt:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
# We zetten dit volledig bovenaan
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
include 'config.php'; // database connectie
$sql_get_cat = "SELECT id, cat, tekst
FROM album_cat
";
if (($result_get_cat = mysql_query($sql_get_cat)) === false)
{
echo showSQLError($sql_get_cat,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_get_cat) == 0)
{
echo 'Er zijn geen cattegorieën.';
}
else
{
while($row_cat = mysql_fetch_assoc($result_get_cat)){
echo '<li>'.$row_cat['tekst'].'</li><br />';
$sql2 = 'SELECT id, naam, omschrijving, cat FROM album';
$res2 = mysql_query($sql2);
if ($res2 && mysql_num_rows($res2) >= 1)
{
echo '<ul>';
while($row_album = mysql_fetch_assoc($res2))
{
if($row_album['cat'] == $row_album['cat']){
echo '<li>'.$row_album['naam'];
}
}
echo '</ul>';
}
else {
echo 'Error.. leeg';
}
}
}
?>
# We zetten dit volledig bovenaan
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
include 'config.php'; // database connectie
$sql_get_cat = "SELECT id, cat, tekst
FROM album_cat
";
if (($result_get_cat = mysql_query($sql_get_cat)) === false)
{
echo showSQLError($sql_get_cat,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_get_cat) == 0)
{
echo 'Er zijn geen cattegorieën.';
}
else
{
while($row_cat = mysql_fetch_assoc($result_get_cat)){
echo '<li>'.$row_cat['tekst'].'</li><br />';
$sql2 = 'SELECT id, naam, omschrijving, cat FROM album';
$res2 = mysql_query($sql2);
if ($res2 && mysql_num_rows($res2) >= 1)
{
echo '<ul>';
while($row_album = mysql_fetch_assoc($res2))
{
if($row_album['cat'] == $row_album['cat']){
echo '<li>'.$row_album['naam'];
}
}
echo '</ul>';
}
else {
echo 'Error.. leeg';
}
}
}
?>
Dit werkt bij mij. Hopelijk is het dit dat je wilt?
Als je nog verder hulp nodig hebt? Ik zoek iets waar ik me bezig kan in houden.
Ben maar 15 jaar oud, misschien kunnen we samen iets maken?
Daar kan ik wat mee,
Maar waar deed ik het nu verkeerd vraag je je dan af he :D
Ach ja leeftijd who cares !
Hartelijk dank.
groeten, Antony
Misschien zit daar de fout? Jij gebruikt mysql_fetch_array
Misschien moet je het eens testen en laten weten.
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
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
<?php
$items = Array();
$sql = "SELECT c.id AS cat_id, c.cat, c.tekst AS cat_tekst, a.id AS album_id, a.naam AS album_naam, a.omschrijving AS album_omschrijving FROM album_cat AS c, album AS a WHERE c.cat = a.cat SORT BY a.cat ASC";
$result = mysql_query($sql, $link);
while($row = mysql_fetch_assoc($result)) {
$items[$row['cat']][]['cat_id'] = $row['cat_id'];
$items[$row['cat']][]['cat_tekst'] = $row['cat_tekst'];
$items[$row['cat']][]['album_id'] = $row['album_id'];
$items[$row['cat']][]['album_naam'] = $row['album_naam'];
$items[$row['cat']][]['album_omschrijving'] = $row['album_omschrijving'];
}
echo '<ul>';
foreach($items as $cat => $item) {
echo '<li>';
echo $cat;
echo '<ul>';
foreach($item as $dit) {
echo '<li>'. $dit['naam'] .'</li>';
}
echo '</ul>';
echo '</li>';
}
$items = Array();
$sql = "SELECT c.id AS cat_id, c.cat, c.tekst AS cat_tekst, a.id AS album_id, a.naam AS album_naam, a.omschrijving AS album_omschrijving FROM album_cat AS c, album AS a WHERE c.cat = a.cat SORT BY a.cat ASC";
$result = mysql_query($sql, $link);
while($row = mysql_fetch_assoc($result)) {
$items[$row['cat']][]['cat_id'] = $row['cat_id'];
$items[$row['cat']][]['cat_tekst'] = $row['cat_tekst'];
$items[$row['cat']][]['album_id'] = $row['album_id'];
$items[$row['cat']][]['album_naam'] = $row['album_naam'];
$items[$row['cat']][]['album_omschrijving'] = $row['album_omschrijving'];
}
echo '<ul>';
foreach($items as $cat => $item) {
echo '<li>';
echo $cat;
echo '<ul>';
foreach($item as $dit) {
echo '<li>'. $dit['naam'] .'</li>';
}
echo '</ul>';
echo '</li>';
}