Autor Zpráva
Jukik
Profil *
Jak se dá nejlíp zjistit zda v databázi je udaj nebo ne a jestli ano tak se vytvoří jiný? Jde mi to že se mi nahodně generuje 12 místní kód a chci to ošetřit aby se to neopakovalo. Jak se ptát databázy jestli to číslo neboli těch 12 znaků tam je nebo není pokud ano tak by se to opakovalo třeba 20krát než by se našlo to který tam není?
Matess
Profil *
V DB ulož název sloupce jako unikátní a v PHP při vkládání dat ověřuj zda se ti nezobrazuje mysql_errno() s hodnotou 1062.
Př.: (http://php.vrana.cz/vyuziti-unikatnich-klicu-v-databazi.php)
// elegantní kód, předpokládá existenci unikátního klíče nad sloupcem login
mysql_query("INSERT INTO uzivatele (login) VALUES ('" . mysql_real_escape_string($_GET["login"]) . "')");
if (mysql_errno() == 1062) {
    echo "Uživatel již existuje.\n";
}

Jukik
Profil *
Jsem to asi špatně vysvetlil. Já myslel že pokud to 12 místní kód bude v DB tak se vytvoří nový náhodný a to se taky ověří a takhle se to bude ověřovat dokud se nevytvoří číslo které tam ješte není.
panther
Profil
Jukik:
Jsem to asi špatně vysvetlil.
nevysvětlil a dostal jsi správnou odpověď.

Pokud je sloupec unikátní (což potřebuješ), vrátí při stejném výsledku dotaz mysql_errno() == 1062. Pokud tuto chybu vyhodí, vygeneruj nový a proveď zápis do DB znovu.
Jukik
Profil *
Právě já to mám tak že když uživatel vyplní formulář a klikne vytvořit tak až potom se vytvoří to nahodný čislo a uloží do DB a tedka s tajtim si nevím rady jak to udělat.
king26
Profil
zřejmě nejlíp použít rekurzivní fci, něco jako toto:
<?php
function GetRandomString() {
    $string=generovani nahodneho stringu;
    mysql_query(Insert dat s unikatnim sloupcem nad kodem);
    if(mysql_errno()==1062) GetRandomString();
}
GetRandomString();
?>

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: