Hulp gevraagd bij SELECT query
Bestellingen via onze website kunnen op een bepaalde dag en tijdsblok worden afgehaald.
Dit is geregeld met twee drop down menu's; afhaaldag en tijdsblok. De tijdsblokken kunnen per dag anders zijn, afhankelijk van het aantal klanten die de voorkeur opgeven voor één en hetzelfde tijdsblok. Per blok mogen er 10 personen zijn ingeschreven. Daarna mag het tijdsblok bij de betreffende dag niet meer worden opgehaald, maar nog wel bij de andere dagen.
Met behulp van javascript vul ik het drop down menu van de tijdsblokken:
function setOptions(chosen) {
var selbox = document.myform.zone_id;
selbox.options.length = 0;
if (chosen == " ") {
selbox.options[selbox.options.length] = new Option('Kies eerst een dag a.u.b.',' ');
}
// Vrijdag 28 december
if (chosen == "1") {
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$select_blok = "SELECT afhaalblokid, afhaalblok FROM afhaalblok ORDER BY afhaalblokid ASC";
$result = mysql_query($select_blok);
while($row = mysql_fetch_array($result))
{
echo "selbox.options[selbox.options.length] = new Option('".$row['afhaalblok']."','".$row['afhaalblokid']."');";
}
?>
$select_blok = "SELECT afhaalblokid, afhaalblok FROM afhaalblok ORDER BY afhaalblokid ASC";
$result = mysql_query($select_blok);
while($row = mysql_fetch_array($result))
{
echo "selbox.options[selbox.options.length] = new Option('".$row['afhaalblok']."','".$row['afhaalblokid']."');";
}
?>
}
// Zaterdag 29 december
if (chosen == "2") {
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$select_blok = "SELECT afhaalblokid, afhaalblok FROM afhaalblok WHERE afhaalblokid BETWEEN 6 AND 21 ORDER BY afhaalblokid ASC";
$result = mysql_query($select_blok);
while($row = mysql_fetch_array($result))
{
echo "selbox.options[selbox.options.length] = new Option('".$row['afhaalblok']."','".$row['afhaalblokid']."');";
}
?>
$select_blok = "SELECT afhaalblokid, afhaalblok FROM afhaalblok WHERE afhaalblokid BETWEEN 6 AND 21 ORDER BY afhaalblokid ASC";
$result = mysql_query($select_blok);
while($row = mysql_fetch_array($result))
{
echo "selbox.options[selbox.options.length] = new Option('".$row['afhaalblok']."','".$row['afhaalblokid']."');";
}
?>
}
// Maandag 31 december
if (chosen == "3") {
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$select_blok = "SELECT afhaalblokid, afhaalblok FROM afhaalblok WHERE afhaalblokid BETWEEN 6 AND 14 ORDER BY afhaalblokid ASC";
$result = mysql_query($select_blok);
while($row = mysql_fetch_array($result))
{
echo "selbox.options[selbox.options.length] = new Option('".$row['afhaalblok']."','".$row['afhaalblokid']."');";
}
?>
$select_blok = "SELECT afhaalblokid, afhaalblok FROM afhaalblok WHERE afhaalblokid BETWEEN 6 AND 14 ORDER BY afhaalblokid ASC";
$result = mysql_query($select_blok);
while($row = mysql_fetch_array($result))
{
echo "selbox.options[selbox.options.length] = new Option('".$row['afhaalblok']."','".$row['afhaalblokid']."');";
}
?>
}
}
Ik heb een bestellingentabel waar de de afhaaldag en het afhaalblok in afzonderlijke velden worden opgeslagen met een id (aparte tabel voor de dagen en nog een tabel voor de tijdsblokken).
Nu heb ik drie queries gebruikt om de tijdsblokken op te halen voor de drie dagen waarop een bestelling afgehaald kan worden. Als één combinatie van afhaaldagid en afhaalblokid 10 keer voorkomt wil ik dat betreffende blok niet ophalen uit de tabel zodat dit blok niet meer zichtbaar is op de website. Ik weet even niet hoe ik dit aan moet pakken. Kan iemand mij hier bij helpen?
Gewijzigd op 14/11/2012 13:44:14 door Marco ----
Misschien denk ik te simpel, maar ik dacht aan if($result>10) zoiets is volgens mij ook in de query te doen
je kan een count in je query verwerken
Als ik er naast zit zie ik graag een voorbeeld.
http://www.tizag.com/mysqlTutorial/mysqlcount.php
Zo kun je ook een count(*) doen, vervolgens een if($aantal > 10) en dat zou het moeten zijn.
Zo kun je ook een count(*) doen, vervolgens een if($aantal > 10) en dat zou het moeten zijn.
Ik snap hoe een count werkt. Het gaat hier echter om twee waarden (id's) en daar de combinatie van.
afhaaldagid kunnen er drie zijn, de blokken kunnen er ongeveer 30 zijn en daarmee 90 combinaties.
Dan moet ik dus weten welke combinatie ik dan heb en hoe ik dan voorkom dat die waarde wordt opgehaald.
Denk namelijk dat het wel in een query te vangen is.
Groet,
Erwin van Hoof
SiteOn
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
SELECT afhaalblok.afhaalblokid, afhaalblok.afhaalblok,
(SELECT COUNT(bestellingen.userid)
FROM bestellingen
WHERE bestellingen.afhaalblokid = afhaalblok.afhaalblokid
) AS 'afhaalblokLimiet'
FROM afhaalblok
WHERE where afhaalblokid BETWEEN 6 AND 14 && afhaalbloklimiet =< 10
ORDER BY afhaalblok.afhaalblokid ASC
?>
SELECT afhaalblok.afhaalblokid, afhaalblok.afhaalblok,
(SELECT COUNT(bestellingen.userid)
FROM bestellingen
WHERE bestellingen.afhaalblokid = afhaalblok.afhaalblokid
) AS 'afhaalblokLimiet'
FROM afhaalblok
WHERE where afhaalblokid BETWEEN 6 AND 14 && afhaalbloklimiet =< 10
ORDER BY afhaalblok.afhaalblokid ASC
?>
nog een aantal dingen.
- je tabellen dezelde naam geven als je kolom is niet bijzonder handig, als leidraard werk met enkel en meervoud.
- je doet drie keer bijna het zelfde in je query voor alle drie de dagen => function()?