Autor Zpráva
Tomkinss
Profil
Zdravím,

Potreboval by som poradiť. Mám generátor, ktorý generuje čísla a písmena o dĺžke 3 znakov:
$moznosti= array("1","2","3","4","5","6","7","8","9","0","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); 
$mista="3"; 
$heslo=""; 
for ($i=0 ;$i<=$mista-1 ;$i++) 
{ 
$nahoda=rand(0, count($moznosti)-1); 
$tag.=$moznosti[$nahoda]; 
}


Potrebujem aby mi tento proses zopakovalo, ak v DB nájde rovnaké vygenerované znaky.
Existuje v PHP niečo ako v Pascali:
REPEAT
     príkaz;
 UNTIL ($tag != $tag[vypisany_z_db]);


Myslím že môžem použiť v PHP While, alebo to dat do funkcie a tu volať viac krát keď sa bude zhodovať z DB výpis.
Ako by to bolo podla Vás najlepšie ?
Jozin
Profil
Zdravím,

to co hledáš je do-while. Zároveň se mi to zdá jako nejlepší možnost. Nebude tam zbytečná funkce.
__construct
Profil
Tomkinss:
Nestačí toto?
do {
   //prikaz
} while ($tag != $tag[vypisany_z_db]])
<mimo-téma>
Kratší zápis:
$moznosti = array_merge(range(0,9),range('a','z'));
</mimo-téma>
okolojdouci
Profil *
Proč $mista="3"; ? Chceš s tím pracovat jako s číslem nebo textem?

function rndnumber() {
  $chars = "0123456789";
  $length = 6;
  $existuje = 1;

  while ($existuje>0) {
    $ret = "";
    while (strlen($ret) < $length) {
      $ret .= $chars[mt_rand(0,strlen($chars))];
    }
    $existuje = mysql_result(mysql_query("SELECT COUNT(*) FROM tbl WHERE neco = '".$ret."'"), 0);
  }

  return $ret;
}
Tomkinss
Profil
__construct:
$moznosti = array_merge(range(0,9),range('a','z'));


Nevygeneruje to aj znaky s diakritikou ? (š,č,ť,...)
__construct
Profil
Tomkinss:
Nie nevygeneruje – výsledné pole si môžeš prezrieť:
<pre><?php var_export(array_merge(range(0,9),range('a','z')));
Tomkinss
Profil
okolojdouci:
Budem s tým pracovať ako text. Ked sa mi v DB zaplnia všetky kombinácie 3, nastavím 4, ... :) Tvoj zápis je zaujimavý, skúsim s neho niečo vytiahnuť.

Ďakujem všetkým za rady.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0