Vinnaren i pepparkakshustävlingen!
2010-09-02, 17:55
  #1
Medlem
Tjena,

Jag har en databas där jag lagrar nummer.
Har ett startnummer och sedan ska användaren få välja hur många nummer han/hon vill ha, i en ruta.
I nuläget har jag löst det med en for-loop som tar fram sista numret och lägger på så många som användaren har valt. Men. Det kommer vara så att vissa nummer kommer att tas bort. Och säg att alla nummer från 0-100 är upptagna då kommer loopen välja 101 som nästa, men om 98 är borttaget så vill jag att det ska kunna användas. Går detta att lösa?

Tack på förhand.
Citera
2010-09-02, 18:08
  #2
Medlem
kh31d4rs avatar
LIMIT, eller motsvarande borde funka beroende på vad du har för DBMS?
Citera
2010-09-02, 18:09
  #3
Medlem
Ingrid-s avatar
Gör en loop som kollar igenom om dina nr är upptagna och när den hittar något ledigt så fyller den i och avslutar processen ?

Men vad för databas har du?
Citera
2010-09-02, 18:10
  #4
Medlem
Lite hack lösning :P
Kod:
SELECT LEAST(BoxID,BoxID) as leastID FROM
Boxes
WHERE inUse 
!= 

Annars fungerar nog denna perfekt:
Kod:
SELECT FROM
Boxes
WHERE inUse 
!= 1
ORDER BY BoxID ASC 
Citera
2010-09-02, 18:40
  #5
Medlem
Mysql använder jag. Hur skulle en sån loop se ut?
Citera
2010-09-02, 18:51
  #6
Medlem
Citat:
Ursprungligen postat av q1
Mysql använder jag. Hur skulle en sån loop se ut?
Den metoden jag skickade är väldigt mycket bättre imo, inga jävla loopar :P
Citera
2010-09-02, 19:07
  #7
Moderator
Protons avatar
PHP -> Databaser /Mod
Citera
2010-09-03, 00:17
  #8
Medlem
kh31d4rs avatar
nu läste jag fel när jag svarade första gången, men får man fråga varför du vill återanvända IDn? (antar jag att det är)
Citera
2010-09-03, 08:10
  #9
Medlem
Mys-Hitlers avatar
* Sätt auto_increment-räknaren till 0
* Infoga vad-det-nu-är-du-infogar
* Kolla vilket id det fick
Citera
2010-09-03, 13:51
  #10
Medlem
Tricksat med detta otal gånger - framförallt när det gäller att fylla på/i fakturaserier o.dyl. där det kan ha blivit avbrott. En straightforward query som går oändligt mycket snabbare än en loop och ger dig det lägsta oanvända numret är:

Kod:
SELECT MIN(N.Number + 1) AS [NextNumber]
FROM NumberTable N
LEFT JOIN NumberTable NN ON NN.Number = N.Number + 1
WHERE NN.Number IS NULL
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback