Autor | Zpráva | ||
---|---|---|---|
majja01 Profil |
#1 · Zasláno: 4. 2. 2014, 18:24:47
Ahoj testuju zda existuje někde unikátní id:
$u_id = uniqid('',true); $sql = mysql_query("SELECT uniqID FROM komenty"); while($ii=mysql_fetch_array($sql)): $u_id_db=explode(" ",$ii["uniqID"]); endwhile; foreach($u_id_db as $u_id_db) { if(!$u_id_db == $u_id){ echo "ano"; }else { echo "ne"; } $u_id dám nějaké slovo které v databázi existuje tak to furt ukazuje ano
Nevíte co mám kde špatně... ? |
||
abc Profil |
majja01:
To, co máš, tak všechno zahoď. Zbytečně procházíš všechny komenty (co když jich budou tisíce?). Otestovat to lze nějak takto: $uid = uniqid(); $result = mysql_query("SELECT COUNT(*) FROM komenty WHERE uniqid = '$uid'"); $pocet = mysql_result($result, 0, 0); if($pocet > 0){ //existuje } else { //neexistuje } |
||
majja01 Profil |
#3 · Zasláno: 4. 2. 2014, 20:51:19
abc:
a nevíte co dělat když už unikátní kod existuje? nějaká funkce která spustí script odznova? |
||
Kajman Profil |
#4 · Zasláno: 4. 2. 2014, 20:55:46
majja01:
„nějaká funkce která spustí script odznova?“ Použijte např. pro potřebnou část skriptu do while cyklus http://cz2.php.net/manual/en/control-structures.do.while.php |
||
juriad Profil |
for ($pokus = 0;; $pokus++) { $uid = uniqid(); $result = mysql_query("SELECT COUNT(*) FROM komenty WHERE uniqid = '$uid'"); $pocet = mysql_result($result, 0, 0); if ($pocet == 0) { # neexistuje - koncime break; } else if ($pokus > 5000) { die('ukrutnou smrti :-)'); } # zkusime znovu } |
||
abc Profil |
Celé se to hodí do smyčky
$nalezeno = FALSE; do { $uid = uniqid(); $result = mysql_query("SELECT COUNT(*) FROM komenty WHERE uniqid = '$uid'"); $pocet = mysql_result($result, 0, 0); if ($pocet > 0) { $nalezeno = TRUE; }else{ $nalezeno = FALSE; } } while ($nalezeno === TRUE); |
||
Časová prodleva: 10 let
|
0