21. februar 2003 - 16:49Der er
15 kommentarer og 1 løsning
SQL betingelser
Hej Eksperter
Dobbeltbooking må ikke kunne laves!
Har en databasetabel med 4 kolonner. id = primær, start, slut, projektleder.
Hvis jeg har en post i databasen hvor start datoen er: 030103 (måned, dag og år) og slutdatoen er: 040103 - her i mellem må man ikke kunne booke den projektleder, da denne jo er optaget i et andet projekt.
Altså, start må ikke være > den eksisterende 030103 og < 040103 - hvis I forstår.
Hvordan kan jeg skrive denne SQL sætning færdig?
mysql_query("INSERT INTO tjek (start, slut, projektleder) VALUES ('$start', '$slut', '$projektleder') WHERE ???")
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
twm's løsning burde også kunne lade sig gøre, da den jo tester på om der i forvejen finde en record, som har en projektperiode, der overlapper den periode du prøver at indsætte.
Okay - har prøvet med den løsning, kan ikke få det til at fungere, men hvis twm kan skrive hele MySQL sætningen - både med SELECT og INSERT, ville jeg blive meget glad.
Først så tager du SELECT forespøgslen Derefter kontrollerer du om recordsettet er tomt. Hvis det er tomt er der ingen bookning på det aktuelle tidspunkt, og du kan udføre din INSERT (Ex): $con = mysql_connect("10.0.0.1", "username","password") or die("Could not connect: " . mysql_error()); mysql_select_db("DinDB", $con) or die(mysql_errno() . ": " . mysql_error() . "<br>"); $sql = "SELECT projektleder FROM tjek WHERE projektleder='$projektleder' and ((start<=$start and slut>=$start) or (start<=$slut and slut>=$slut))"; $result = mysql_query($sql, $con); $rowCount = mysql_num_rows($result); if($rowcount==0) mysql_query("INSERT INTO tjek (start, slut, projektleder) VALUES ('$start', '$slut', '$projektleder')") else // Gør et eller andet hvis der er en bookning i forvejen
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.