Autor Zpráva
majja01
Profil
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";
}
nefunguje to např pokud do proměné $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
abc:
a nevíte co dělat když už unikátní kod existuje? nějaká funkce která spustí script odznova?
Kajman
Profil
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);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: