Autor Zpráva
funkcionář
Profil *
Ahoj, mám tento kód, který by měl ve výsledku ukázat náhodnou kartu, která se nebude opakovat, ale mám problém v tom, že někdy mi vyhodí prázdné místo
require 'mysql.php';
function NahodnaKarta() {
 if(!mysql_query("SELECT * FROM partie")) {
  mysql_query("CREATE TABLE partie (cislo INT,pouzita VARCHAR(10) UNIQUE)");
  mysql_query("INSERT INTO partie (cislo,pouzita) VALUES(1,0)");
 }
 $barva = array(1=>"srdce","listy","piky","kara");
 $cislice = array(2=>2,3,4,5,6,7,8,9,10,"j","q","k","a");
 $partieNeserazena = mysql_query("SELECT * FROM partie WHERE cislo=1");
 $nahodnaBarva = $barva[rand(1,4)];
 $nahodnaCislice = $cislice[rand(2,14)];
 $bylaPouzita=false;
 while($partie = mysql_fetch_array($partieNeserazena)) {
  if(ereg($nahodnaBarva."-".$nahodnaCislice,$partie['pouzita'])) {
   $bylaPouzita=true;
  }
 }
 if($bylaPouzita) {
  NahodnaKarta();
 }
 else {
  mysql_query("INSERT INTO partie (cislo,pouzita) VALUES (1,'[1]".$nahodnaBarva.'-'.$nahodnaCislice."')");
  return "<img src=\"karty/".$nahodnaBarva."-".$nahodnaCislice.".png\">";
 }
 if(mysql_num_rows($partieNeserazena)==53) {
  return "Všechny karty již byly použity.";
 }
}

echo NahodnaKarta()."<br>";

bude tam určitě problém s if($bylaPouzita) {NahodnaKarta();} ale nevím jak dokázat, aby se tato funkce pořád opakovala do doby, než by to našlo ještě nepoužitou kartu. Poradíte někdo prosím? Předem děkuji za odpověď.
funkcionář
Profil *
Tak díky za "pomoc", nakonec jsem to vyřešil sám. Kdyby to někdo chtěl použít tak to mám takto:
require 'mysql.php';
function NahodnaKarta() {
 if(!mysql_query("SELECT * FROM partie")) {
  mysql_query("CREATE TABLE partie (cislo INT,pouzita VARCHAR(11) UNIQUE)");
  mysql_query("INSERT INTO partie (cislo,pouzita) VALUES(1,0)");
 }
 $barva = array(1=>"srdce","listy","piky","kara");
 $cislice = array(2=>2,3,4,5,6,7,8,9,10,"j","q","k","a");
 $partieNeserazena = mysql_query("SELECT * FROM partie WHERE cislo=1");
 $nahodnaBarva = $barva[rand(1,4)];
 $nahodnaCislice = $cislice[rand(2,14)];
 $bylaPouzita=false;
 if(mysql_num_rows($partieNeserazena)==53) {
  return "Všechny karty již byly použity.";
 }
 else {
  while($partie = mysql_fetch_array($partieNeserazena)) {
   if(ereg($nahodnaBarva."-".$nahodnaCislice,$partie['pouzita'])) {
    $bylaPouzita=true;
   }
  }
  if($bylaPouzita) {
   return NahodnaKarta();
  }
  else {
   mysql_query("INSERT INTO partie (cislo,pouzita) VALUES (1,'[1]".$nahodnaBarva.'-'.$nahodnaCislice."')");
   return "<img src=\"karty/".$nahodnaBarva."-".$nahodnaCislice.".png\">";
  }  
 }
}

echo NahodnaKarta()."<br>";

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: