Vraagje over sql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

OMEGA_ReD

OMEGA_ReD

23/03/2007 23:13:00
Quote Anchor link
Mijn registratie database:
ID - Datum - Naw - enz.


Nu kan het zijn dat er op een datum meerdere registraties worden toegevoegd bijvoorbeeld:
1 - 10-09-07 - Jan Janssen - enz.
2 - 20-12-06 - Fred Hermsen - enz.
3 - 10-09-07 - Piet Peeters - enz.

Is het mogelijk om dmv een sql query om het volgende overzicht te krijgen:

Dag 20-12-06:
Registratie 1: Fred Hermsen - enz.

Dag 10-09-07:
Registratie 1: 10-09-07 - Jan Janssen - enz.
Registratie 2: 10-09-07 - Piet Peeters - enz.

Hoe kan ik dit het makkelijkste oplossen, kan ik de datbase sorten op datum en daaronder weer sorten op ID terwijl de datum sort in stand blijft en vervolgens een output geven?

Of is dit niet mogelijk en moet ik het met php oplossen?

Graag advies, alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door OMEGA_ReD
 
PHP hulp

PHP hulp

20/11/2024 12:33:29
 
Joren de Wit

Joren de Wit

23/03/2007 23:18:00
Quote Anchor link
Je kunt met een database uitstekend sorteren op datum, mits je gebruik maakt van het juiste datatype. Dus een DATE voor een datum en een DATETIME voor een combinatie van een datum en een tijd. En dat doe jij niet.

Kortom, dat zul je als eerste moeten veranderen. En vervolgens krijg je dan een query als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
    id,
    naam
FROM
    tabel
ORDER BY
    datum DESC,
    id ASC
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Jan Koehoorn

Jan Koehoorn

23/03/2007 23:31:00
Quote Anchor link
Gebruik die query van Blanche, en doe iets als dit in de while loop waarin je fetcht:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $dag
= '';
    while (fetch fetch fetch) {
        if ($dag != $row['dag']) {
            echo '<p>' . $row['dag'] . '</p>';
            $dag = $row['dag'];
        }

        // echo hier je registraties
    }
?>

Je moet het veld 'dag' dan wel toevoegen aan het voorbeeld van Blanche.
 
OMEGA_ReD

OMEGA_ReD

23/03/2007 23:35:00
Quote Anchor link
die datum moet ingevuld worden door de gebruiker, die word in een date datatype weggeschreven. de tijd van de dag is verder niet interessant.

de datum is niet de datum dat word geregistreerd als de data word geschreven in de database. Maar een door de gebruiker in te vullen datum waarop bv het geregistreerde gesprek plaats gevonden heeft.

dus als het goed is kan ik met je voorbeeldje de gewenste output genereren.

Bedankt voor je hulp en snelle reactie!

Ik laat nog weten of het gelukt is!
 
Frank -

Frank -

23/03/2007 23:44:00
Quote Anchor link
Vergeet niet om met de functie checkdate() te controleren of de datum wel een geldige datum is. Vervolgens zet jij de boel in de juiste volgorde (yyyy-mm-dd) en schrijf je de boel weg in de database.
 
OMEGA_ReD

OMEGA_ReD

23/03/2007 23:49:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM data1 ORDER BY `Datum` ASC, `RitNummer` ASC


Omdat ik alles uit mijn database wil laten laten zien in het overzicht heb ik SELECT * er van gemaakt en ook heb ik de datum op ASC gezet omdat de oudste boven moet staan.

Ik heb het even in de "draai sql" in phpmyadmin gedraait en het resulteerde in het gewenste overzicht!

Even een php scriptje er omheen bouwen om het mooi vorm te geven en het is klaar!

Bedankt!!
 
OMEGA_ReD

OMEGA_ReD

23/03/2007 23:52:00
Quote Anchor link
Frank schreef op 23.03.2007 23:44:
Vergeet niet om met de functie checkdate() te controleren of de datum wel een geldige datum is. Vervolgens zet jij de boel in de juiste volgorde (yyyy-mm-dd) en schrijf je de boel weg in de database.


De datum's worden gecontrolleerd bij de invoer dus die zouden als het goed is altijd geldig moeten zijn.
 
Frank -

Frank -

24/03/2007 00:06:00
Quote Anchor link
En wat versta jij onder 'de invoer' ? Dat zal in elk geval op de server, bv. met php, moeten worden gecontroleerd. Vandaar dat ik dat hier nog even roep.

MySQL ziet een worteltaart nog aan voor een geldige datum...
 
OMEGA_ReD

OMEGA_ReD

24/03/2007 00:13:00
Quote Anchor link
hmm je hebt gelijk ik zag net bij de invoer dat het niet op inhoud gecontrolleerd word.

De overige velden worden gecontrolleerd door javascript.
De datum is wel required maar word niet op inhoud gecontrolleerd.

Ik heb wel een php script wat de datum van DD-MM-YYYY naar YYYY-MM-DD zodat de gebruiker niet steeds de datums achterstevoren moet invoeren. Maar deze controlleerd de inhoud volgens mij niet zo dat hij met een melding komt.

Dit word vervolgens ook weer steeds gedaan bij de database outputs en bij eventuele bewerkingn via formulieren.

thx
Gewijzigd op 01/01/1970 01:00:00 door OMEGA_ReD
 
OMEGA_ReD

OMEGA_ReD

24/03/2007 16:22:00
Quote Anchor link
Ik heb even een stukje php gemaakt maar ik krijg het niet werkend.

Database:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
mysql_connect($host,$username,$password);
@
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM $datatable1 ORDER BY Datum ASC, RitNummer ASC";
$result=mysql_query($query);

$num=mysql_num_rows($result);
mysql_close();
?>


Result printen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
while($row = mysql_fetch_array($result)) {

echo 'RitNummer: '.$row['ritnummer'].' Datum: '.$row['datum'].'<br>';

}

?>
Gewijzigd op 01/01/1970 01:00:00 door OMEGA_ReD
 
Jan Koehoorn

Jan Koehoorn

24/03/2007 16:30:00
Quote Anchor link
Ik zou niet mysql_close gebruiken voordat je gaat fetchen ;-)
 
OMEGA_ReD

OMEGA_ReD

24/03/2007 16:35:00
Quote Anchor link
Ik had de code verkeerd overgenomen:
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
<?
include("../db.inc.php");
$start=$_GET['start'];
$end=$_GET['end'];


mysql_connect($host,$username,$password);
@
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM $datatable1 ORDER BY Datum ASC, RitNummer ASC LIMIT $start,$end";
$result=mysql_query($query);

$num=mysql_num_rows($result);


while($row = mysql_fetch_array($result)) {
echo "while";
echo 'RitNummer: '.$row['ritnummer'].' Datum: '.$row['datum'].'<br>';

}


mysql_close();
?>


De echo die in de while staat word niet vertoont. Dus houd dat in dat de while niet loopt.
Ik krijg verder ook geen error's of echo's.
Gewijzigd op 01/01/1970 01:00:00 door OMEGA_ReD
 
OMEGA_ReD

OMEGA_ReD

25/03/2007 15:37:00
Quote Anchor link
iemand een idee?
 



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.