Max aantal rows in Mysql, drop down list filter
ik heb bezig een registratieformulier aan het bouwen. Deze is inmiddels gekoppeld met PHP aan een Mysql database.
De uitdaging zit hem echter bij het selecteren van de drop down list. Hierbij is mijn doel om de content naar de desbetreffende table te sturen in Mysql.
Dus bij het kiezen van bijvoorbeeld "14 februari" in het registratieformulier, dan gaan de overige informatie in het formulier (naam, bedrijfsnaam, email) naar de 14 februari table in de database.
Uiteindelijk moet elke table een limiet van 20 entries hebben. Op 1 of andere manier moet deze datum dan niet meer beschikbaar zijn in de drop down list.
Iemand tips, scripts? :)
dit kan je doen bv d.m.v. een subquery..
Code (php)
1
select iets from tabel_naam where datum not IN (select count(datum) as D from tabel_naam where D >= 20)
ps. dit is even heeeeeel snel uit me hoofd gezecht dus niet getest...
het is om een idee te krijgen hoe je het kan doen...
edit:
Ik ben heel benieuwd naar hoe jou database eruit ziet want ik neem aan dat je niet voor elke dag een nieuwe tabel gaat aanmaken...
Dit kan je dan beter doen door 1 tabel te maken met de datums erin en dan binnen die tabel bv. d.m.v. een COUNT() functie de aantal datums tellen..
Maar je database normaliseren is denk ik geen overbodige luxe...
Gewijzigd op 18/01/2012 12:41:57 door Marco PHPJunky
Kies voor/kijk naar het voorbeeld van Marco.
-- version 2.11.10.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generatie Tijd: 18 Jan 2012 om 13:05
-- Server versie: 4.1.22
-- PHP Versie: 5.2.17
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Database: `contactform`
--
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel `contact`
--
CREATE TABLE IF NOT EXISTS `contact` (
`pk_contact` int(10) unsigned NOT NULL auto_increment,
`name` varchar(120) NOT NULL default '',
`email` varchar(120) NOT NULL default '',
`bedrijfsnaam` varchar(120) NOT NULL default '',
`datum` varchar(120) NOT NULL default '',
`added_date` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`pk_contact`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
--
-- Gegevens worden uitgevoerd voor tabel `contact`
--
Dit is mijn database op het moment
Toevoeging op 18/01/2012 13:07:05:
De gekozen datum wordt gefetched bij de kolum "datum". Hiermee moet ik dus COUNT functie gebruiken?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
// Haal alle data waar de datum 2012-01-18 is uit de DB en tel deze records dmv de COUNT
$qQuery = SELECT * FROM contact, COUNT(datum) WHERE datum = '20120118';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['COUNT(datum)'];
$qQuery = SELECT * FROM contact, COUNT(datum) WHERE datum = '20120118';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['COUNT(datum)'];
Klein stukje code, niet getest! Kunnen foutjes inzitten, maar hij doet wel wat jij wilt.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
// Haal alle data waar de datum 2012-01-18 is uit de DB en tel deze records dmv de COUNT
$qQuery = SELECT * FROM contact, COUNT(datum) AS datum_count WHERE datum = '20120118';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['datum_count'];
$qQuery = SELECT * FROM contact, COUNT(datum) AS datum_count WHERE datum = '20120118';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['datum_count'];
Nog mooier is als je DateTime in MySQL benut.
Dank jullie wel, waar dien ik deze code te plaatsen, binnen de drop down list?
Op de plek waar jij wilt dat je de boel gaat tellen. Bovenaan de site bijvoorbeeld, of op de plek waar jouw drop-down staat.
Je gaat eerst kijken of het al vol is.
Daarna ga je de dropdown parsen en naar de client sturen.
Dus..
[check voor limit 20 records]
[parse dropdown]
Makkie toch :D
Toevoeging op 18/01/2012 14:07:45:
- Aar - op 18/01/2012 13:55:16:
@Rick, lang leve 'AS'
-- ff ingekort (A)
-- ff ingekort (A)
Maar is idd ook een mooie optie, nooit aan gedacht eigenlijk :P
Maar dateTime? Kzal ook ff php.net raadplegen en mysql over dateTime.
Heb zelf altijd gezeik met datums als er een vergelijking of iets moet worden gedaan.
Wie weet biedt jij mij hier de oplossing :P
Ja, MySQL kan prima met DateTime data's en tijden rekenen. Daar heb je PHP haast niet voor nodig.
<div id="formulierruimte">
<form id="ContactForm" action="">
<p>
<label>Naam</label>
<input id="name" name="name" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Bedrijfsnaam</label>
<input id="bedrijfsnaam" name="bedrijfsnaam" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>E-mail</label>
<input id="email" name="email" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Datum</label>
<select name="datum" id="datum" class="inplaceError">
<option value="">Selecteer uw voorkeursdatum..</option>
<option value="Vrijdagmiddag27Januari">Vrijdagmiddag27Januari</option>
<option value="Vrijdagmiddag03Februari">Vrijdagmiddag03Februari</option>
<option value="Vrijdagmiddag10Februari">Vrijdagmiddag10Februari</option>
<option value="Vrijdagmiddag17Februari">Vrijdagmiddag17Februari</option>
<option value="Vrijdagmiddag24Februari">Vrijdagmiddag24Februari</option>
</select>
<span class="error" style="display:none;"></span>
<input id="send" type="button" value="Verstuur"/>
<span id="loader" class="loader" style="display:none;"></span>
</p>
<p>
<span id="success_message" class="success"></span>
</p>
<input id="newcontact" name="newcontact" type="hidden" value="1"></input>
</form>
</div>
Toevoeging op 18/01/2012 14:19:51:
Waar raden jullie aan de code toe te voegen, zodat duidelijk wordt hoeveel mensen zich per datum in de drop down list hebben aangemeld?
Wat heb je al geprobeerd?
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<div id="formulierruimte">
<form id="ContactForm" action="">
<p>
<label>Naam</label>
<input id="name" name="name" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Bedrijfsnaam</label>
<input id="bedrijfsnaam" name="bedrijfsnaam" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>E-mail</label>
<input id="email" name="email" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Datum</label>
<select name="datum" id="datum" class="inplaceError">
<?php
// Hier je check voor de 20 records
?>
<option value="">Selecteer uw voorkeursdatum..</option>
<option value="Vrijdagmiddag27Januari">Vrijdagmiddag27Januari</option>
<option value="Vrijdagmiddag03Februari">Vrijdagmiddag03Februari</option>
<option value="Vrijdagmiddag10Februari">Vrijdagmiddag10Februari</option>
<option value="Vrijdagmiddag17Februari">Vrijdagmiddag17Februari</option>
<option value="Vrijdagmiddag24Februari">Vrijdagmiddag24Februari</option>
</select>
<span class="error" style="display:none;"></span>
<input id="send" type="button" value="Verstuur"/>
<span id="loader" class="loader" style="display:none;"></span>
</p>
<p>
<span id="success_message" class="success"></span>
</p>
<input id="newcontact" name="newcontact" type="hidden" value="1"></input>
</form>
</div>
<form id="ContactForm" action="">
<p>
<label>Naam</label>
<input id="name" name="name" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Bedrijfsnaam</label>
<input id="bedrijfsnaam" name="bedrijfsnaam" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>E-mail</label>
<input id="email" name="email" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Datum</label>
<select name="datum" id="datum" class="inplaceError">
<?php
// Hier je check voor de 20 records
?>
<option value="">Selecteer uw voorkeursdatum..</option>
<option value="Vrijdagmiddag27Januari">Vrijdagmiddag27Januari</option>
<option value="Vrijdagmiddag03Februari">Vrijdagmiddag03Februari</option>
<option value="Vrijdagmiddag10Februari">Vrijdagmiddag10Februari</option>
<option value="Vrijdagmiddag17Februari">Vrijdagmiddag17Februari</option>
<option value="Vrijdagmiddag24Februari">Vrijdagmiddag24Februari</option>
</select>
<span class="error" style="display:none;"></span>
<input id="send" type="button" value="Verstuur"/>
<span id="loader" class="loader" style="display:none;"></span>
</p>
<p>
<span id="success_message" class="success"></span>
</p>
<input id="newcontact" name="newcontact" type="hidden" value="1"></input>
</form>
</div>
En hier de link naar jsFiddle: http://jsfiddle.net/tmzf8/
** Heb fiddle geupdate met de PHP code erin **
<p>
<label>Naam</label>
<input id="name" name="name" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Bedrijfsnaam</label>
<input id="bedrijfsnaam" name="bedrijfsnaam" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>E-mail</label>
<input id="email" name="email" class="inplaceError" maxlength="120" type="text" autocomplete="off"/>
<span class="error" style="display:none;"></span>
</p>
<p>
<label>Datum</label>
<select name="datum" id="datum" class="inplaceError">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// Hier je check voor de 20 records
// Haal alle data waar de datum 2012-01-18 is uit de DB en tel deze records dmv de COUNT
$qQuery = SELECT * FROM contact, COUNT(datum) AS datum_count WHERE datum = 'Vrijdagmiddag 10 Februari';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['datum_count'];
?>
// Hier je check voor de 20 records
// Haal alle data waar de datum 2012-01-18 is uit de DB en tel deze records dmv de COUNT
$qQuery = SELECT * FROM contact, COUNT(datum) AS datum_count WHERE datum = 'Vrijdagmiddag 10 Februari';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['datum_count'];
?>
<option value="">Selecteer uw voorkeursdatum..</option>
<option value="Vrijdagmiddag 27 Januari">Vrijdagmiddag 27 Januari</option>
<option value="Vrijdagmiddag 03 Februari">Vrijdagmiddag 03 Februari</option>
<option value="Vrijdagmiddag 10 Februari">Vrijdagmiddag 10 Februari</option>
<option value="Vrijdagmiddag 17 Februari">Vrijdagmiddag 17 Februari</option>
<option value="Vrijdagmiddag 24 Februari">Vrijdagmiddag 24 Februari</option>
</select>
<span class="error" style="display:none;"></span>
<input id="send" type="button" value="Verstuur"/>
<span id="loader" class="loader" style="display:none;"></span>
</p>
<p>
<span id="success_message" class="success"></span>
</p>
<input id="newcontact" name="newcontact" type="hidden" value="1"></input>
</form>
Toevoeging op 18/01/2012 14:30:45:
Parse error: syntax error, unexpected T_STRING in C:\domains\iamthesource.nl\wwwroot\fakro\index.php on line 43
Dit is regel 43: $qQuery = SELECT * FROM contact, COUNT(datum) AS datum_count WHERE datum = 'Vrijdagmiddag 10 Februari';
Op lijn 4 van je PHP-code mis ik de quotes om de query heen.
maar een "fout" van mij..
Het moet deze query zijn;
$qQuery = SELECT *, COUNT(datum) AS datum_count FROM contact WHERE datum = 'Vrijdagmiddag 10 Februari';
Hopelijk werkt dit wel, je moet namelijk je kolommen selecteren en daarna de count..
Niet de kolommen, tabel en dan de count (A) hihi
Sorry :*
Toevoeging op 18/01/2012 14:34:18:
- Aar - op 18/01/2012 14:31:14:
Dat gaat niet echt werken, binnen je select, kijk je HTML code maar.
Op lijn 4 van je PHP-code mis ik de quotes om de query heen.
Op lijn 4 van je PHP-code mis ik de quotes om de query heen.
Ja idd, dat ook nog..
Nogmaals, code kon ik niet testen was ruwe code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// Hier je check voor de 20 records
// Haal alle data waar de datum 2012-01-18 is uit de DB en tel deze records dmv de COUNT
$qQuery = SELECT * COUNT(datum) AS datum_count FROM contact WHERE datum = 'Vrijdagmiddag 10 Februari';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['datum_count'];
?>
// Hier je check voor de 20 records
// Haal alle data waar de datum 2012-01-18 is uit de DB en tel deze records dmv de COUNT
$qQuery = SELECT * COUNT(datum) AS datum_count FROM contact WHERE datum = 'Vrijdagmiddag 10 Februari';
$mQuery = mysql_query($qQuery);
$fQuery = mysql_fetch_array($mQuery);
// Echo het aantal records in de tabel
echo $fQuery['datum_count'];
?>
ik heb de "," weg gehaald en krijg nu deze error:
Parse error: syntax error, unexpected T_AS in C:\domains\iamthesource.nl\wwwroot\fakro\index.php on line 43
Line 43 is dezelfde regel nog steeds, thanks voor jullie snelle reacties!
Code (php)
1
2
3
2
3
<?php // kleurtjes
$qQuery = "SELECT * COUNT(datum) AS datum_count FROM contact WHERE datum = 'Vrijdagmiddag 10 Februari'";
?>
$qQuery = "SELECT * COUNT(datum) AS datum_count FROM contact WHERE datum = 'Vrijdagmiddag 10 Februari'";
?>
Ik hoop niet dat je in je database werkelijk 'Vrijdagmiddag 10 Februari' hebt staan.
Hij kopiert de waarde van de dropdown:
<option value="Vrijdagmiddag 10 Februari">Vrijdagmiddag 10 Februari</option>
Als ik de value verander, naar bijvoorbeeld "<option value="20120210">, dan kopiert hij nog steeds "Vrijdagmiddag 10 Februari" (wat dus tussen de option tags staat).
Voor de looks van de drop down wil ik wel "Vrijdagmiddag 10 Februari" behouden echter, what to do?
beter houd je een DD-MM-YYYY formaat aan.
- Aar - op 18/01/2012 14:54:20:
Niet vanwege de spaties, maar hier kan uiteindelijk niet mee gerekend worden.
beter houd je een DD-MM-YYYY formaat aan.
beter houd je een DD-MM-YYYY formaat aan.
Of andersom, YYYY-MM-DD.. Amerikaanse manier. Is ook makkelijk in Windows, deze word van netjes op volgorde weergegeven. Dit is omdat de 11 eerder komt dan 01 bijvoorbeeld.
--- EDIT ---
De PHP code die ik heb getypt heeft ook nog een bepaalde gedachte erachter.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$sVar = 'de kleine "s" duidt een string aan';
$iVar = 'de kleine "i" duidt een integer aan';
$aVar = 'de kleine "a" duidt een array aan';
$qVar = 'de kleine "q" duidt een query aan';
$mVar = 'de kleine "m" duidt een mysql_query opdracht aan';
$fVar = 'de kleine "f" duidt een mysql_fetch_array opdracht aan';
$cVar = 'de kleine "c" duidt een mysql_num_rows opdracht aan';
?>
$sVar = 'de kleine "s" duidt een string aan';
$iVar = 'de kleine "i" duidt een integer aan';
$aVar = 'de kleine "a" duidt een array aan';
$qVar = 'de kleine "q" duidt een query aan';
$mVar = 'de kleine "m" duidt een mysql_query opdracht aan';
$fVar = 'de kleine "f" duidt een mysql_fetch_array opdracht aan';
$cVar = 'de kleine "c" duidt een mysql_num_rows opdracht aan';
?>
Is gewoon om het makkelijk te maken voor jezelf.