Autor Zpráva
Freeway
Profil *
Čau, snažím se udělat na webu tipovací soutěž, uživatel zadá tip na výsledek zápasu, po skončení zápasu zadám výsledek a ono by to mělo vyhodnotit jestli uživatel tipl správného vítěze(popř. remízu) a přidá mu bod do tabulky (v tomto skriptu hodnotím zatím správnost odhadnutého vítěze, potom to zdokonalým že za správný výsledek dostane uživatel více bodů), ale když zadám výsledek, tak se nic nestane, mohl by se na to prosim někdo kouknout a říct kde mam chybu ? Díky

$tip = mysql_query("SELECT id, jmeno, body, tipD, tipH FROM tip_tabulka", $spojeni);
$vysledek = mysql_query("SELECT id, vysD, vysH FROM tip_zapasy",$spojeni);
while($zaznam = mysql_fetch_array($vysledek) &&
$zaznam2 = mysql_fetch_array($tip) ):
if($zaznam['vysD']==$zaznam['vysH'])
{$vys = 0;}    
if($zaznam['vysD']>$zaznam['vysH'])
{$vys = 1;}
if($zaznam['vysD']<$zaznam['vysH'])
{$vys = 2;}
if($zaznam2['tipD']<$zaznam2['tipH'])
{$tip = 2;}
if($zaznam2['tipD']>$zaznam2['tipH'])
{$tip = 1;}
if($zaznam2['tipD']==$zaznam2['tipH'])
{$tip = 0;}
if($vys==$tip)
{mysql_query("UPDATE tip_tabulka SET body = body+1, tipD='', tipH='' WHERE id = '$zaznam2[id]'"); }
endwhile;
LaMMa
Profil *
cyklus mas naprd namiesto && to rozdel do dvoch vnorenych cyklov, pretoze takto ti to neprebehne vsetky tipy.
skus:
while($zaznam = mysql_fetch_array($vysledek)) { 
   while($zaznam2 = mysql_fetch_array($tip)) {
   ... 
   }
}   

endwhile na koniec nedavaj... a co je vysD, vysH, tipH a tipD? Kde mas nejake prepojenie, ktory tip bol na ktory zapas? alebo tam bude vzdy len 1 zapas? A ked ho zmenis, zmazes tipy?
Freeway
Profil *
vysD je počet gólů domácího týmu
vysH je počet gólů hostujícího týmu
tipD je tip na počet gólů domácího týmu
tipH je tip na počet gólů hostujícího týmu

Chtěl bych tam mít víc zápasů, tudíž by tam potom tedy bylo vysD1, vysH1, vysD2, vysH2 atd ... a tipD1, tipH1, tipD2, tipH2 atd ..
=> to číslo by se řídilo podle ID zápasu ...

Chtěl bych smazat tipy po tom co zadám výsledky pomocí formuláře, kterej mam hotovej

A to propojení bys udělal jakym způsobem ? Díky za rady ;)


napsal jsem to špatně bylo by tam v tom případě tedy jenom tipD1, tipH1, tipD2, tipH2 atd .... (indexy podle ID zápasu v té tabulce "tip_zapasy")
LaMMa
Profil *
pridaj si do tip_tabulka -> id_zapasu. Takto budes mat pri vsetkych tipoch zapas, ku ktoremu patria a nemusis ich mazat. Potom by som tu tvoju funkciu ale prepisal nejak takto:

/*
budes to volat hned ako zadas vysledok zapasu...takto vyberies prave jeden zapas, viac ti netreba a hned updatnes tipy.
$id je id zapasu, ktory prave upravujes - ked zadavas vysledok.. samozrejme to osetri aspon $id = mysql_real_escape_string($id)...
*/
$vysledek = mysql_query("SELECT id, vysD, vysH FROM tip_zapasy WHERE id = '$id' LIMIT 1",$spojeni);

 //ak bol select uspesny
if ($vysledek) {
   $tip = mysql_query("SELECT id, jmeno, body, tipD, tipH FROM tip_tabulka WHERE id_zapasu = '$id'", $spojeni);

   $zaznam= mysql_fetch_array ($vysledek);

   while($zaznam2 = mysql_fetch_array($tip)) {
     if($zaznam['vysD']==$zaznam['vysH'])
        {$vys = 0;}    
     if($zaznam['vysD']>$zaznam['vysH'])
       {$vys = 1;}
     if($zaznam['vysD']<$zaznam['vysH'])
       {$vys = 2;}
     if($zaznam2['tipD']<$zaznam2['tipH'])
       {$tip = 2;}
     if($zaznam2['tipD']>$zaznam2['tipH'])
       {$tip = 1;}
     if($zaznam2['tipD']==$zaznam2['tipH'])
      {$tip = 0;}
     if($vys==$tip)
     /*
     ked updatujes tabulku tip_tabulka namiesto  body = body+1 daj body = cislo, cize body ktore dostane za dobry tip. Pretoze ak nahodou budes viac krat menit vysledok jedneho zapasu, pri povodnom zapise by body by narastli nad limit ;). tipD, tipH sem vobec nedavaj, bo si prepises tipy
     */
      { mysql_query("UPDATE tip_tabulka SET body = 2 WHERE id = '$zaznam2['id']'"); }
   }
}

netestoval som, ale malo by fungovat a relativne rychlo(aj ked priestor na zlepsenie este je;)). Samozrejme v DB si nastav na id a id_zapasu indexy.


jo a co je 'jmeno' v tip_tabulke?
Freeway
Profil *
'jmeno' je jméno tipujícího, v tomhle vyhodnocování to nehraje žádnou roli ...
ale myslíš že když zadam výsledek zápasu tak nemam vymazat všechny tipy ? Potom by třeba mohlo nastat že tipující hráč nálsedující kolo tipovací soutěže vynechá a jeho tipy tam zůstanou z minulého kola a vyhodnocovali by se taky ...
LaMMa
Profil
Nemaz to, nejaku historiu by bolo dobre tam mat. Ked ju aj nevyuzijes hned, mozno casom... Keby si ju zmazal, ako by potom ludia vedeli ako tipovali(teda za predpokladu, ze si to budu mat kde pozriet;))?

"Potom by třeba mohlo nastat že tipující hráč nálsedující kolo tipovací soutěže vynechá a jeho tipy tam zůstanou z minulého kola a vyhodnocovali by se taky "
Pretoze kazdy tip ma id_zapasu, ktory ho jednoznacne priradi k danemu zapasu sa toho nemusis bat. Pri vyhodnocovani budes vyberat len tipy s danym zapasom... viz ten select z tip_tabulky co som ti napisal

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: