Sorteren op naam
ik heb op het moment het volgende script:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$query = mysql_query("SELECT COUNT(id) as aantal FROM categorie WHERE afbeelding=''");
$row = mysql_fetch_assoc($query);
if($row['aantal']){
echo '- <a>Er zijn '.$row['aantal'].' categorieën zonder afbeelding.</a>';
$query = mysql_query("SELECT * FROM categorie WHERE afbeelding=''");
echo '<div>';
while($row = mysql_fetch_assoc($query)){
if($row['sub']){
$query2 = mysql_query("SELECT * FROM categorie WHERE id='".secure_in($row['sub'])."'");
$row2 = mysql_fetch_assoc($query2);
if($row2['sub']){
$query3 = mysql_query("SELECT * FROM categorie WHERE id='".secure_in($row2['sub'])."'");
$row3 = mysql_fetch_assoc($query3);
echo $row3['naam'].' => '.$row2['naam'].' => '.$row['naam'].'<br />';
} else {
echo $row2['naam'].' => '.$row['naam'].'<br />';
}
} else {
echo $row['naam'].'<br />';
}
}
echo '</div>';
}
?>
$query = mysql_query("SELECT COUNT(id) as aantal FROM categorie WHERE afbeelding=''");
$row = mysql_fetch_assoc($query);
if($row['aantal']){
echo '- <a>Er zijn '.$row['aantal'].' categorieën zonder afbeelding.</a>';
$query = mysql_query("SELECT * FROM categorie WHERE afbeelding=''");
echo '<div>';
while($row = mysql_fetch_assoc($query)){
if($row['sub']){
$query2 = mysql_query("SELECT * FROM categorie WHERE id='".secure_in($row['sub'])."'");
$row2 = mysql_fetch_assoc($query2);
if($row2['sub']){
$query3 = mysql_query("SELECT * FROM categorie WHERE id='".secure_in($row2['sub'])."'");
$row3 = mysql_fetch_assoc($query3);
echo $row3['naam'].' => '.$row2['naam'].' => '.$row['naam'].'<br />';
} else {
echo $row2['naam'].' => '.$row['naam'].'<br />';
}
} else {
echo $row['naam'].'<br />';
}
}
echo '</div>';
}
?>
Wat er uiteindelijk op het scherm komt te staan is niet gesorteerd. Nu kan ik dit alles in een array zetten, sort functie gebruiken en vervolgens weer in een loop echo'en. Volgens mij kan dit simpeler. Is dit alles bijv. in één mysql query te stoppen? Wat is de beste oplossing? Eventuele andere aan- of opmerkingen?
Alvast bedankt!
Mvg, Roy
Gewijzigd op 22/09/2010 20:09:51 door Roy -
in je SELECT query kan je een ORDER BY veld1,veld2....veldx meegeven en daarmee de data meteen sorteren.
Ben ondertussen wat tutorials aan het lezen hierover. Als ik het goed heb moet ik "left join" hier gebruiken?
Ligt eraan hoe je datamodel eruit ziet.
Er komen uiteindelijk 3 verschillende echo's uit!? Dan heb ik toch ook 3 query's nodig?
Hoeft niet per se.
Gebruik even een inner join, dan is dit probleem zo opgelost.
http://crisp.tweakblogs.net/blog/317/formatting-a-multi-level-menu-using-only-one-query.html
In dit voorbeeld wordt er gesorteerd op parentid en naam. Volgens mij is dit wat je wil.
En alle categorieen worden met 1 query opgehaald.
Gewijzigd op 29/09/2010 21:27:50 door Martijn B
Ik ga weer wat rond puzzelen.