Thread: Advies nodig! Eindproject
-
18-02-2013, 12:04 #1Member
- Registered
- 20/05/10
- Location
- Edegem
- Posts
- 114
- iTrader
- 0
- Mentioned
- 0 Post(s)
Advies nodig! Eindproject
Beste 9livers,
Graag zou ik advies krijgen bij mijn volgende probleem (PHP):
http://imagupload.com/images/1361181244-knipsel.jpg
Bij het uitschrijven van 1 gebruiker (die als standby waarde 0 heeft, dus niet standby is) zou de EERSTVOLGENDE gebruiker met Standby waarde 1 een UPDATE moeten krijgen zodat zijn STANDBY waarde 0 wordt. Daarna wordt de gebruiker verwijdert van de tabel (dat werkt).
DUS
indien een gebruiker die niet standby staat zich uitschrijft moet de 1ste persoon die standby is ingeschreven worden.
---> Hiervoor werk ik met een boolean, standby (0 of 1)
Ik werk met 1 tabel, bestaande uit: id(A.I.), voornaam, naam, standby(0 of 1)
Het uitschrijven gebeurt a.d.h.v. een relatie tussen de ID van mijn tabel gebruikers(id, voornaam, achternaam, ...) en de ID van mijn tabel voor het inschrijvingsvak.
Concreet zit ik met het volgende: Ik weet niet hoe ik het eerstevolgende ID selecteer (eigenlijk het kleinste GROTER dan het ID van de persoon die ik uitschrijf (bv. ik schrijf id 27 uit, dan moet het eerstvolgende id ingeschreven worden. Uit de reeks van (27, 34, 35, 36) zou 34 dan ingeschreven moeten worden.
Ik hoop dat ik het een beetje goed heb kunnen uitleggen. Indien je een compleet ander idee hebt over hoe ik dit kan oplossen mag je dit ook zeker vermelden!
Alvast bedankt voor de hulp.no votes
-
-
18-02-2013, 15:38 #2Member
- Registered
- 22/06/10
- Location
- Muizen (Mechelen)
- Posts
- 286
- iTrader
- 4 (100%)
- Mentioned
- 0 Post(s)
Steek die id nummer is een variabel.
Sorteer uw query op id ASC.
En maak dan een loop met id variabel telkens + 1
Check dan telkens dat nieuwe variabel bestaat, indien niet, dan terug +1no votes
-
25-02-2013, 23:20 #3Approved 9-lifer
- Registered
- 03/12/03
- Location
- Oostende
- Posts
- 2,599
- iTrader
- 78 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 7/10
loopen en dergelijke lijkt mij nogal overkill,
wat als de tabel zo is is:
id | naam
1 | test
120 | test
11220202 | naam 3
dan ga je er wel aan met je loopje
probeer dit eens :
een of andere self join moet ook wel lukken, maar ik vind dergelijke inner queries wel overzichtelijker.Code:update tabel set standby=1 where id = (select MIN(id) from tabel where id > @uwvorigeid )
no votes
-
26-02-2013, 00:03 #4Member
- Registered
- 06/11/11
- Location
- Kortrijk
- Posts
- 108
- iTrader
- 4 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Hetgeen woony zegt, al denk ik (maar kan mis zijn) dat je in php geen geneste queries kunt uitvoeren. Dus dan moet je eerst je id selecteren en dan de update uitvoeren.
no votes
-
26-02-2013, 21:29 #5Member
- Registered
- 17/07/02
- Location
- Sol System
- Posts
- 10,064
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/78
Het al dan niet kunnen uitvoeren van geneste queries is geen beperking die de taal die je gebruikt oplegt, maar wel het RDBMS dat je gebruikt. Het zal dus perfect werken in PHP op voorwaarde dat je DB het aankan.
PSN: dJeezBE - Delicious bookmarks
Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alienoPastafarian by choiceno votes
-
01-03-2013, 08:26 #6Member
- Registered
- 26/09/12
- Location
- Kortrijk
- Posts
- 41
- iTrader
- 10 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Het kan zelfs met een enkelvoudige query.
Probeer eens:
Zo krijg je enkel de eerste entry terug waar het id groter is dan de vorige.Code:SELECT * FROM tabel WHERE id >vorigID ORDER BY id LIMIT 1
Zoals woony al zei, lopen is overkill. Je moet altijd proberen zoveel mogelijk werk laten verrichten door de database. En liefst in zo weinig mogelijk queries. De database is namelijk vele malen sneller dan PHP.no votes
-
01-03-2013, 14:52 #7Approved 9-lifer
- Registered
- 03/12/03
- Location
- Oostende
- Posts
- 2,599
- iTrader
- 78 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 7/10
no votes

