Max aantal rows in Mysql, drop down list filter

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Sebas V

Sebas V

18/01/2012 12:12:29
Quote Anchor link
Hallo,

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? :)
 
PHP hulp

PHP hulp

28/03/2024 16:22:47
 
Marco PHPJunky

Marco PHPJunky

18/01/2012 12:28:29
Quote Anchor link
Je kan gewoon het aantal rows tellen in je database tabel mocht dit aantal gelijk (dan wel groter) zijn dan 20 dan laat je de bij behorende datum niet mee doen voor de ophaal query van de verschillende data's...

dit kan je doen bv d.m.v. een subquery..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
Obelix Idefix

Obelix Idefix

18/01/2012 12:34:26
Quote Anchor link
Je gaat toch niet echt voor elke dag een aparte tabel aan maken?! :s
Kies voor/kijk naar het voorbeeld van Marco.
 
Sebas V

Sebas V

18/01/2012 13:05:51
Quote Anchor link
-- phpMyAdmin SQL Dump
-- 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?
 

18/01/2012 13:52:05
Quote Anchor link
Je kan dmv een COUNT tellen hoeveel records er in een bepaalde tabel zitten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)'];


Klein stukje code, niet getest! Kunnen foutjes inzitten, maar hij doet wel wat jij wilt.
 
- Ariën  -
Beheerder

- Ariën -

18/01/2012 13:55:16
Quote Anchor link
@Rick, lang leve 'AS'

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];

Nog mooier is als je DateTime in MySQL benut.
 
Sebas V

Sebas V

18/01/2012 14:03:25
Quote Anchor link
Dank jullie wel, waar dien ik deze code te plaatsen, binnen de drop down list?
 
- Ariën  -
Beheerder

- Ariën -

18/01/2012 14:05:02
Quote Anchor link
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.
 

18/01/2012 14:05:48
Quote Anchor link
Uhm ja voor de dropdown idd.

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)


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
 
- Ariën  -
Beheerder

- Ariën -

18/01/2012 14:08:39
Quote Anchor link
Ja, MySQL kan prima met DateTime data's en tijden rekenen. Daar heb je PHP haast niet voor nodig.
 
Sebas V

Sebas V

18/01/2012 14:18:49
Quote Anchor link
Bedankt, maar zodra ik de php code toevoeg aan mijn code, loopt heel mn site vast. Wat doe ik hier fout?


<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?
 
- Ariën  -
Beheerder

- Ariën -

18/01/2012 14:22:02
Quote Anchor link
Wat heb je al geprobeerd?
 

18/01/2012 14:24:08
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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>


En hier de link naar jsFiddle: http://jsfiddle.net/tmzf8/

** Heb fiddle geupdate met de PHP code erin **
Gewijzigd op 18/01/2012 14:27:40 door
 
Sebas V

Sebas V

18/01/2012 14:29:31
Quote Anchor link
<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">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
                                    
                                ?>

<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';
 
- Ariën  -
Beheerder

- Ariën -

18/01/2012 14:31:14
Quote Anchor link
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.
 

18/01/2012 14:33:17
Quote Anchor link
Ik had al gezegd de code kon ik niet testen :P
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.


Ja idd, dat ook nog..
Nogmaals, code kon ik niet testen was ruwe code
 
Sebas V

Sebas V

18/01/2012 14:41:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
                                    
                                ?>



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!
 
- Ariën  -
Beheerder

- Ariën -

18/01/2012 14:43:13
Quote Anchor link
Ik mis de quotes om te query heen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php // kleurtjes
$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.
 
Sebas V

Sebas V

18/01/2012 14:51:30
Quote Anchor link
Tot nu toe wel ja, ik snap je punt, vanwege de spaties zeker?

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?
 
- Ariën  -
Beheerder

- Ariën -

18/01/2012 14:54:20
Quote Anchor link
Niet vanwege de spaties, maar hier kan uiteindelijk niet mee gerekend worden.
beter houd je een DD-MM-YYYY formaat aan.
 

18/01/2012 14:56:41
Quote Anchor link
- 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.


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)
PHP script in nieuw venster Selecteer het PHP script
1
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';

?>


Is gewoon om het makkelijk te maken voor jezelf.
Gewijzigd op 18/01/2012 14:59:54 door
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.