Links tonen per provincie
Beste PHP-hulpers,
Graag wil ik een site maken met een aantal links per provincie. In de database geef ik bij de link met een getal (1=Groningen,12=Limburg enz.) aan welke provincie.
Met de volgende code maak ik twaalf provincies in PHP:
Hoe kan ik nu met het uitvoeren van één MySQL-query hier 5 links per provincie tonen?
Graag wil ik een site maken met een aantal links per provincie. In de database geef ik bij de link met een getal (1=Groningen,12=Limburg enz.) aan welke provincie.
Met de volgende code maak ik twaalf provincies in PHP:
Code (php)
1
2
3
4
5
2
3
4
5
$arr = array('Groningen','Friesland','Drenthe','Overijssel','Flevoland','Gelderland','Utrecht','Noord-Holland','Zuid-Holland','Zeeland','Noord-Brabant','Limburg');
foreach ($arr as &$value)
{
echo $value;
}
foreach ($arr as &$value)
{
echo $value;
}
Hoe kan ik nu met het uitvoeren van één MySQL-query hier 5 links per provincie tonen?
Gewijzigd op 16/11/2010 14:12:57 door Gerben J
Gesponsorde koppelingen:
iets van $query = "SELECT links FROM provincies WHERE provincie="jou provincie" limit = 0, 5; als ik jou goed begrijp?
Denk dat ik het begrijp, je wil van 12 provincies 5 links laten zien.
Dus je hebt een DB met daarin per provincie een x aantal links en dan random links laten zien.
Misschien handig om je db structuur te laten zien.
Dus je hebt een DB met daarin per provincie een x aantal links en dan random links laten zien.
Misschien handig om je db structuur te laten zien.
Dank voor jullie snelle reactie. Hieonder de db-structuur. Inderdaad Jasper, graag wil ik per provincie 5 links laten zien.
Ik zou natuurlijk 12 keer een MySQL-query kunnen uitvoeren, maar dat lijkt me niet netjes en niet snel.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
CREATE TABLE IF NOT EXISTS `links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL,
`url` varchar(200) NOT NULL,
`province` int(11) NOT NULL,
`visible` int(1) NOT NULL DEFAULT '1',
`tip` int(1) NOT NULL DEFAULT '0',
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=101 ;
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL,
`url` varchar(200) NOT NULL,
`province` int(11) NOT NULL,
`visible` int(1) NOT NULL DEFAULT '1',
`tip` int(1) NOT NULL DEFAULT '0',
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=101 ;
Ik zou natuurlijk 12 keer een MySQL-query kunnen uitvoeren, maar dat lijkt me niet netjes en niet snel.
Gewijzigd op 16/11/2010 14:27:27 door Gerben J
Je zou in dit geval de benodigde data moeten halen uit de DB, dus name, url, province, tip.
En vervolgens met php er maar per provincie 5 laten zien.
En vervolgens met php er maar per provincie 5 laten zien.
de nieuwste 5, of echt random?
Het was de bedoeling random, maar als dat niet kan mag het ook op alfabet of de nieuwste vijf.
Volgens mij zo:
nieuwste:
moet je een date functie bij je mysql toevoegen
$query = "SELECT links FROM provincies WHERE provincie="jou provincie" ORDER by date limit = 0, 5;
alfabet:
$query = "SELECT links FROM provincies WHERE provincie="jou provincie" ORDER by name limit = 0, 5;
random weet ik zo niet zal even zoeken,
nieuwste:
moet je een date functie bij je mysql toevoegen
$query = "SELECT links FROM provincies WHERE provincie="jou provincie" ORDER by date limit = 0, 5;
alfabet:
$query = "SELECT links FROM provincies WHERE provincie="jou provincie" ORDER by name limit = 0, 5;
random weet ik zo niet zal even zoeken,
$random_row = mysql_fetch_row(mysql_query("select * from YOUR_TABLE order by rand() limit 1"));
-edit-
gerhard, de eerste die jij noemt kan niet, er is geen date veld. Dat zal je met het id moeten doen en dan het hoogste id is als laatste toegevoegd.
-edit-
gerhard, de eerste die jij noemt kan niet, er is geen date veld. Dat zal je met het id moeten doen en dan het hoogste id is als laatste toegevoegd.
Gewijzigd op 16/11/2010 14:55:02 door jasper van Oeffel
haha jasper weer wat eerder, ik had ook net iets gevonden:
$sql = "SELECT * FROM tabelnaam ORDER BY RAND() LIMIT 0,1";
$res = mysql_query($sql);
// kijk of er wel iets gevonden is
if (mysql_num_rows($res) >= 1)
echo mysql_result($res, 0);
moet je denk ik nog even die limits op 5 zetten
$sql = "SELECT * FROM tabelnaam ORDER BY RAND() LIMIT 0,1";
$res = mysql_query($sql);
// kijk of er wel iets gevonden is
if (mysql_num_rows($res) >= 1)
echo mysql_result($res, 0);
moet je denk ik nog even die limits op 5 zetten
Gewijzigd op 16/11/2010 14:56:39 door gerhard l
enigste is dat je dan 5 compleet willekeurige links krijgt en hij wil er volgens mij 5 per provincie.
Gewijzigd op 16/11/2010 15:06:55 door jasper van Oeffel
Inderdaad Jasper, maar dat zal wel niet in één query kunnen. Helaas.
Gerben J op 16/11/2010 21:05:33:
Inderdaad Jasper, maar dat zal wel niet in één query kunnen. Helaas.
Inderdaad, dit kan niet simpel in één query.
En waarom zal dat volgens de heren niet kunnen?
Noppes Homeland op 16/11/2010 21:18:26:
En waarom zal dat volgens de heren niet kunnen?
Ga jij het maar eens proberen. En anders moet je je kop houden, jij onderbouwd je stellingen haast nooit.
Of je moet groeperen (en dan vieze trucjes uithalen die niet werken).
Of je moet joinen (wat niet meer simpel is).
Of je moet subqueries gebruiken (ook niet simpel).
Dus het kan niet simpel in één query. Of het überhaupt kan? Geen idee.
Als je geen idee hebt of het kan, dan kan je beter achterwege laten om er ook maar 1 woord aan vuil te maken.
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
Noppes Homeland op 16/11/2010 21:34:47:
Als je geen idee hebt of het kan, dan kan je beter achterwege laten om er ook maar 1 woord aan vuil te maken.
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
Waarom help je dan niet mee, als je zo zeker ervan bent dat het kan.
Volgens mij ben je gewoon een arrogante klootzak die rel wilt schoppen.
Gewijzigd op 16/11/2010 22:57:38 door Karl Karl
Noppes Homeland op 16/11/2010 21:34:47:
Als je geen idee hebt of het kan, dan kan je beter achterwege laten om er ook maar 1 woord aan vuil te maken.
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
Wat is de oplossing dan, Noppes?
Gerben J op 17/11/2010 11:48:19:
Wat is de oplossing dan, Noppes?
Noppes Homeland op 16/11/2010 21:34:47:
Als je geen idee hebt of het kan, dan kan je beter achterwege laten om er ook maar 1 woord aan vuil te maken.
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
De oplossing behoort te zitten in het pakket van "Basis kennis SQL"
Wat is de oplossing dan, Noppes?
zou ik ook graag willen weten ;s
moet je er niet gewoon nog aan vast plakken?
Gewijzigd op 17/11/2010 11:55:37 door Teun Hesseling
Dan krijg je de links van één provincie. Maar ik wil graag 5 links per provincie.



