06. december 2005 - 14:10
Der er
9 kommentarer og 1 løsning
ID tjekkes i løkke om det er unikt
Jeg genererer et ID således: $random = md5(uniqid ("")); $booking_id = substr("$random", 0, 10); Hvordan laver jeg en løkke, som laver et nyt ID, hvis den ligger i DB? Kender godt SQL tjek: $foresp = mysql_query("SELECT id FROM tabel WHERE kode='$HTTP_GET_VARS[kode]'"); if(mysql_num_rows($foresp)==0) { Så er det fint } else { Så skal der laves et nyt ide!! }
Annonceindlæg fra HP
06. december 2005 - 14:14
#1
Jeg ville mene, at en do-while løkke ville være optimal.
06. december 2005 - 14:16
#2
function checkID($id) { $foresp = mysql_query("SELECT id FROM tabel WHERE kode='$HTTP_GET_VARS[kode]'"); if(mysql_num_rows($foresp)==0) { return $id; } else { $random = md5(uniqid ("")); $booking_id = substr("$random", 0, 10); checkID($booking_id); } } $random = md5(uniqid ("")); $booking_id = substr("$random", 0, 10); echo checkID($booking_id);
06. december 2005 - 14:16
#3
kan være der er lidt typo's, men det burde virke
06. december 2005 - 18:59
#4
Dvs. at når jeg skal gemme et id, så er det checkID($booking_id) ?
06. december 2005 - 19:13
#5
Kan jeg ikke få til at virke.. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C... Altså SQL tjek skal nok mere være sådan her: $foresp = mysql_query("SELECT kode FROM tabel WHERE kode='$booking_id'");
06. december 2005 - 19:19
#6
$foresp = mysql_query("SELECT kode FROM tabel WHERE kode='$id'");
06. december 2005 - 19:21
#7
Jeg holder nu med kourinsu - brug en do-while: do { random = md5(uniqid("")); $booking_id = substr("$random", 0, 10); $sql = "SELECT count(*) AS antal FROM dinTabel WHERE booking_id='" . $booking_id . "'"; $query = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_assoc($query); } while ($row["antal"] > 0);
06. december 2005 - 20:03
#8
Jeg ved ikke hvordan jeg skal teste om det virker, men det virker i hvert fald hurtigere :) Ligger du et svar Nielle? Og tak :)
06. december 2005 - 20:11
#9
Du kan jo f.eks. teste det ved at temporært rette: $booking_id = substr("$random", 0, 10); - til: $booking_id = substr("$random", 0, 2); Så burde den begynde at få alvorlige vanskeligheder når alle 2-tegns kombier er ved at være brugt op. ... eller du kan jo også bare tage mit ord for det ;^)
06. december 2005 - 23:13
#10
Jeg tror på dig, ellers kan jeg jo spørge igen :) Mange tak for hjælpen, også til dig ttopholm!
Vi tilbyder markedets bedste kurser inden for webudvikling