Data selecteren uit database
Ik vroeg mij af...
Als ik een database zou hebben met landen (id - land - landnr - iets anders) en ik wil dat mijn script een loop maakt met 1 type land (b.v. gewoon nederland). Hoe vraag je dat dan aan?
Ik ben beginnend in php en was hiermee aan het spelen, maar kom er helaas niet uit.
Zijn er simpele oplossingen hiervoor?
Gr,
Aya
Topic titel aangepast. Kies in het vervolg zelf een duidelijke titel.[/modedit]
Gewijzigd op 21/09/2010 21:28:09 door Joren de Wit
Wat heb je al? Zonder code is het voor ons moeilijk te beoordelen wat er gebeuren moet. Wat bedoel je met een loop? Wat wil je voor elkaar krijgen?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sql = "SELECT * FROM landen WHERE land='nederland'";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
echo 'id: '.$row['id'].', land: nederland, landnr'.$row['landnr'];
}
?>
$sql = "SELECT * FROM landen WHERE land='nederland'";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
echo 'id: '.$row['id'].', land: nederland, landnr'.$row['landnr'];
}
?>
niet getest, maar zo moet je het aanpakken
Zo simpel.....
Iedereen moet beginnen, ik was nog veel erger dan jij.
Zie eens op www.phptuts.nl.
Nederland
België
Duitsland
Frankrijk
Engeland
Hoe zou ik dat moeten doen?
De WHERE verwijderen.
Dan zet hij toch alles neer... als je 10 keer NL er in zou hebben, zet hij het toch 10 keer neer?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sql = "SELECT DISTINCT land FROM landen";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
echo 'id: '.$row['id'].', land: nederland, landnr'.$row['landnr'];
}
?>
$sql = "SELECT DISTINCT land FROM landen";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
echo 'id: '.$row['id'].', land: nederland, landnr'.$row['landnr'];
}
?>
Aya Azumi op 21/09/2010 19:31:10:
als je 10 keer NL er in zou hebben, zet hij het toch 10 keer neer?
Dan denk ik eerder aan een fout datamodel.
Aya Azumi op 21/09/2010 19:31:10:
als je 10 keer NL er in zou hebben, zet hij het toch 10 keer neer?
Zoals SanThe al zegt: dat kan niet kloppen. Je bent nu data dubbel aan het opslaan en dat betekent in 9 van de 10 gevallen dat je datamodel niet klopt. Doorloop het proces van normaliseren om zo tot een correct datamodel te komen.
De query met DISTINCT die gegeven wordt, zal wel werken maar is waarschijnlijk niet meer dan een lapmiddel. Los liever de echte fout (je incorrecte datamodel) op ;-)
Het is even een oefen/leer scriptje voor mij. Als je b.v met iets andes zou doen, zegmaar muziek, heb je verschillende genres;
rock, pop, classic, ect.
dan staat het waarschijnlijk er ook meerdere keren in.
En als je een lijst wil laten zien van de genres moet dat kunnen. Het werkte idd met distinct... thanks....
Bedankt voor de hulp!
Aya Azumi op 22/09/2010 08:29:55:
rock, pop, classic, ect.
dan staat het waarschijnlijk er ook meerdere keren in.
dan staat het waarschijnlijk er ook meerdere keren in.
Nee, ook dan normaliseren.
Hoe zou je dat dan doen moeten?
Klik op de link van Blanche.
Aya Azumi op 22/09/2010 08:43:48:
Hoe zou je dat dan doen moeten?
Het wordt direct duidelijk als je die normaliseren tutorial leest. Maar in dit geval zou je dan een aparte tabel krijgen om de genres in op te slaan:
genres
-----
id
genre
songs
-----
id
title
genre_id
Vervolgens kom je op het punt dat een song meerdere genres kan hebben, in dat geval introduceer je een koppeltabel. Maar daarover kun je alles lezen in de genoemde tutorial.