Door
Antony Riksen
op 17-03-2012 14:35
gewijzigd op 17-03-2012 14:37
1.567 views
Goede dag,
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:
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.
@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 ?
# 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.
@dem.
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...
# 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)){