| 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: 12 let
|
|||
0