Autor Zpráva
Tomkinss
Profil
Zdravím,
Chcel by som sa poradiť, či je tento zápis správny a či bude fungovať tak ako má.
Script by mal vygenerovať 3 znaky z rozsahu, potom ich porovnať z DB a ak sa v DB už rovnaký zhluk znakov nachádza proces zopakovať.

do {
$moznosti = array_merge(range(0,9),range('a','z'));
$mista="3";
for ($i=0 ;$i<=$mista-1 ;$i++) 
	{ 
$nahoda=rand(0, count($moznosti)-1); 
$tag.=$moznosti[$nahoda]; 
	}
$tag_vypis = mysql_query("SELECT * FROM links WHERE tag='$tag'");
$tagov = mysql_num_rows($tag_vypis);
} while ($tagov == 0)


Za každu pripomienku vopred ďakujem.
YoSarin
Profil
1) pokud proměnná místa má být integer, proč je deklarována jako string? (rozdíl nula nula prd, bude na int přetypována, ale zbytečně)
2) Jestliže chceš ten nový klíč vkládat do db, tak pokud na sloupeček tag nastavíš 'UNIQUE INDEX' (což bys měl mít i tak), tak se vyhneš jednomu zbytečnému dotazu do db:
do {
  $moznosti = array_merge(range(0, 9), range('a', 'z'));
  $mista = 3;
  for ($i=0 ;$i<=$mista-1 ;$i++) { 
    $nahoda=rand(0, count($moznosti) - 1); 
    $tag.=$moznosti[$nahoda]; 
  }
  $sql = "INSERT INTO links(tag, ...) VALUES('$tag', ...)";
} while (!mysql_query($sql));


Sice trochu od věci, ale - proč pro tuto potřebu nepoužijete primární klíč a auto_increment? Je opravdu potřeba aby každý záznam měl kromě unikátního id také unikátní tříznaké cosi?
Tomkinss
Profil
YoSarin:
Ďakujem za tvoju odpoveď. Spravil som to tak ako si napísal. Ušetril som jeden dotaz a snaď to funguje. (Ak nie bude prúser) :).
Aj keď má tabulka aj ID s auto_increment použiť ho nemôžem. Potrebujem si vedieť presne nastaviť počet znakov + potrebujem mať aj čísla aj písmena.

Ešte raz vďaka.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0