[PHP/MySQL]Tabel verplaatsen na bepaalde tijd

Pagina: 1
Acties:
  • 154 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Neejoh
  • Registratie: Juni 2001
  • Laatst online: 24-04 18:27
Ik ben voor school bezig met een boekensysteem. Een leen systeem. Nu heb ik een table met uitgeleende boeken, en boeken overtijd. Nu wil ik zeg maar maken dat de boeken die langer uitgeleend zijn dan 21 dagen worden weer gegeven in tabel overtijd.


Ik zelf had als idee dat de informatie zeg maar altijd opgevraagd wordt maar alleen wordt weergegeven als > 21. Maar hoe moet ik dit in een MySQL query verwerken?

Mijn table heet "boeken"
en ziet er zo uit:

"Id" = INT 1 (bv 1)
"Time" = Timestamp 14 (bv 20040302140610)
"Name" = Varchar 60 (bv Tweakers in Space)
"Gebruiker" = Varchar 60 (bv Roelof Janssen)

Zo staat alles genoteerd in table boeken.

Nu wil ik hier dus de info uit opvragen wordt netjes weergegeven van Name, Time, Gebruiker.

Weten jullie hoe?

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Neejoh schreef op 03 maart 2004 @ 17:01:
Ik ben voor school bezig met een boekensysteem. Een leen systeem. Nu heb ik een table met uitgeleende boeken, en boeken overtijd. Nu wil ik zeg maar maken dat de boeken die langer uitgeleend zijn dan 21 dagen worden weer gegeven in tabel overtijd.


Ik zelf had als idee dat de informatie zeg maar altijd opgevraagd wordt maar alleen wordt weergegeven als > 21. Maar hoe moet ik dit in een MySQL query verwerken?

Mijn table heet "boeken"
en ziet er zo uit:

"Id" = INT 1 (bv 1)
"Time" = Timestamp 14 (bv 20040302140610)
"Name" = Varchar 60 (bv Tweakers in Space)
"Gebruiker" = Varchar 60 (bv Roelof Janssen)

Zo staat alles genoteerd in table boeken.

Nu wil ik hier dus de info uit opvragen wordt netjes weergegeven van Name, Time, Gebruiker.

Weten jullie hoe?
Redelijk basic SQL vraagje, maar ik ben in een goede bui dus vooruit.

Voor het opvragen van de data:
SQL:
1
2
3
SELECT [name], [time], gebruiker
FROM boeken
WHERE <hier je voorwaarden die moeten gelden voor de records die je wilt hebben>


voor het overhevelen geef ik je alleen de pointer
INSERT SELECT
Die je kunt zoeken in hoofdstuk 6 van de MYSQL manual.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Het hele idee van relationele databases gaat nogal teniet als je boeken in verschillende tabellen op gaat slaan. Je kunt beter gewoon een status-kolom aanmaken en hierin zetten of een boek aanwezig is of uitgeleend. En los een datum van teruggave of uitleendatum.

Hoef je ook niet moeilijk te doen met verplaatsen tussen tabellen.

Nog een klein tipske:

Timestamps zijn niet voor het opslaan van data, maar voor wat het woord zegt: een tijdstempel voor een record. M.a.w. als je de datum nooit via het systeem zult opslaan, maar wil dat er automatisch bij iedere wijziging op de record een tijdstempel wordt opgeslagen. Wil je bruikbare datum/tijd informatie opslaan, gebruik dan DATE, TIME of DATETIME.

Een prima SQL tutorial zoals gewoonlijk ook op w3schools.com:

http://www.w3schools.com/sql/

[ Voor 46% gewijzigd door Bosmonster op 03-03-2004 17:41 ]


Acties:
  • 0 Henk 'm!

  • Neejoh
  • Registratie: Juni 2001
  • Laatst online: 24-04 18:27
Bosmonster schreef op 03 maart 2004 @ 17:29:
Het hele idee van relationele databases gaat nogal teniet als je boeken in verschillende tabellen op gaat slaan. Je kunt beter gewoon een status-kolom aanmaken en hierin zetten of een boek aanwezig is of uitgeleend. En los een datum van teruggave of uitleendatum.

Hoef je ook niet moeilijk te doen met verplaatsen tussen tabellen.

Nog een klein tipske:

Timestamps zijn niet voor het opslaan van data, maar voor wat het woord zegt: een tijdstempel voor een record. M.a.w. als je de datum nooit via het systeem zult opslaan, maar wil dat er automatisch bij iedere wijziging op de record een tijdstempel wordt opgeslagen. Wil je bruikbare datum/tijd informatie opslaan, gebruik dan DATE, TIME of DATETIME.

Een prima SQL tutorial zoals gewoonlijk ook op w3schools.com:

http://www.w3schools.com/sql/
Deze datum wordt ook automatisch gegenereerd. Zodra ik een boek invoer voert hij die timestamp in. En het gedeelde invoeren van welke boeken aanwezig zijn of uitgeleend zijn gaat helaas niet op. Want niet alle boeken staan ingevoerd. Er wordt alleen ingevoerd welke uitgeleend zijn en te laat zijn.

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Bosmonster schreef op 03 maart 2004 @ 17:29:
Het hele idee van relationele databases gaat nogal teniet als je boeken in verschillende tabellen op gaat slaan. Je kunt beter gewoon een status-kolom aanmaken en hierin zetten of een boek aanwezig is of uitgeleend. En los een datum van teruggave of uitleendatum.

Hoef je ook niet moeilijk te doen met verplaatsen tussen tabellen.

Nog een klein tipske:

Timestamps zijn niet voor het opslaan van data, maar voor wat het woord zegt: een tijdstempel voor een record. M.a.w. als je de datum nooit via het systeem zult opslaan, maar wil dat er automatisch bij iedere wijziging op de record een tijdstempel wordt opgeslagen. Wil je bruikbare datum/tijd informatie opslaan, gebruik dan DATE, TIME of DATETIME.

Een prima SQL tutorial zoals gewoonlijk ook op w3schools.com:

http://www.w3schools.com/sql/
TIMESTAMP is ook prima te gebruiken hoor...

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
ViNyL schreef op 03 maart 2004 @ 17:54:
[...]

TIMESTAMP is ook prima te gebruiken hoor...
Voor het opslaan van data :?

Even een leuk voorbeeldje.

stel je slaat de geboortedatum van Jan op in een Timestamp.
(nog even los van het feit dat die datum dan niet voor 1971 mag zijn...)
Even later edit je jan's naam want hij wil liever Jantje genoemd worden.

Als je dan
code:
1
UPDATE personentabel SET naam='Jantje' WHERE naam='Jan'

doet , dan is jan daarna vandaag geboren....
Een timestamp veranderd automagisch naar NOW() als het record geedit wordt en dat veld niet expliciet wordt geset!

Acties:
  • 0 Henk 'm!

  • Neejoh
  • Registratie: Juni 2001
  • Laatst online: 24-04 18:27
Gelukkig hoef ik geen TIMESTAMP's te updaten dus dat gaat ook bij mij niet op.....

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
beetle71 schreef op 03 maart 2004 @ 18:45:
[...]Voor het opslaan van data :?
Even een leuk voorbeeldje.
blabla
In Mysql is dat is alleen het eerste veld met het type timestamp. Dat veld moet je dus last-edit-date o.i.d. noemen. Best een handige functie aangezien er nog geen triggers in MySQL zitten. In de volgende timestamp velden is dit wel een gewoon veld.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Neejoh schreef op 03 maart 2004 @ 19:07:
Gelukkig hoef ik geen TIMESTAMP's te updaten dus dat gaat ook bij mij niet op.....
Het gaat wel voor je op, kijk maar eens goed naar het voorbeeld van beetle. Als je iets, maakt niet uit wat, verandert aan je record, dan wordt automatisch die timestamp aangepast.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

djluc schreef op 03 maart 2004 @ 19:11:
[...]
In Mysql is dat is alleen het eerste veld met het type timestamp. Dat veld moet je dus last-edit-date o.i.d. noemen. Best een handige functie aangezien er nog geen triggers in MySQL zitten. In de volgende timestamp velden is dit wel een gewoon veld.
Inderdaad hartstikke handig als je een nauwkeurige TIMESTAMP (whats in a name) wil hebben van je record.

Timestamps zijn simpelweg niet bedoeld voor opslag van data. Ze werken hierdoor ook nog eens onhandig want een timestamp is altijd een complete stamp tot aan de seconde aan toe. Zelfs als je de display-length aanpast vraagt ie vaak nog een ander formaat dan je display-waarde.

Ja tis bruikbaar voor data, maar compleet onnodig en heeft alleen maar nadelen ten opzichte van de gebruikelijke DATE/TIME/DATETIME velden. Kwestie van the right tool for the job zeg maar.

@TS: Dat niet al de boeken niet in een db staan wil nog niet zeggen dat alles in losse tabellen moet. Dit druist nog steeds in tegen het concept van databases. Een enkele tabel met uitgeleende boeken is genoeg. Een teruggebracht boek gooi je weg en om te kijken welke boeken overtijd zijn kun je met een simpele query opvragen.

[ Voor 16% gewijzigd door Bosmonster op 05-03-2004 13:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou eigenlijk de data niet eens overpompen naar een tweede tabel, maar een view maken die alleen de boeken die overtijd zijn toont.
Pagina: 1