update

Programovacie jazyky, rady, poradňa...
_johny_
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 apr 2007, 17:46

update

Príspevok od používateľa _johny_ »

chcel by som spravit tipovacku, len neviem ako mam riesit pridavanie bodov uzivatelom. Dal by sa spravit nejaky hromadny UPDATE ktory zmeni udaje stlpca BODY kazdemu IDuzivatelovi ked spustim skript, a nie len jednemu ID? alebo nejake lepsie riesenie dik
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Môžeš použiť niečo takéto:

Kód: Vybrať všetko

UPDATE tabulka SET body=body+1000 WHERE otazka=5 AND tip=1
_johny_
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 apr 2007, 17:46

Príspevok od používateľa _johny_ »

dakujem
_johny_
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 apr 2007, 17:46

Príspevok od používateľa _johny_ »

a este ako spravit, aby pri vysledku 1 platilo aj 1X a odoslalo za 1X 2 body?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Mohol by si podrobnejšie rozpísať, ako má fungovať to bodovanie (za čo sa dostávajú body, aký počet bodov...)?
_johny_
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 apr 2007, 17:46

Príspevok od používateľa _johny_ »

uhadnutie vysledku (1) + uhadnutie presneho skore - 5 bodov
uhadnutie vysledku (X) + uhadnutie presneho skore - 5 bodov
uhadnutie vysledku (2) + uhadnutie presneho skore - 5 bodov

uhadnutie vysledku (1) - 3 body
uhadnutie vysledku (X) - 3 body
uhadnutie vysledku (2) - 3 body

uhadnutie vysledku (1X) - 2 body
uhadnutie vysledku (X2) - 2 body


body ukladam do tabulky zatial takto nejak:

Kód: Vybrať všetko



$result = mysql_query("UPDATE tipovacka SET body=body+2 WHERE tip_skore1=skore1" ); 

$result = mysql_query("UPDATE tipovacka SET body=body+2 WHERE tip_skore2=skore2" ); 

$result = mysql_query("UPDATE tipovacka SET body=body+3 WHERE realtip1=tip1"); 


$result = mysql_query("UPDATE tipovacka SET body=body+3 WHERE realtip2=tip2"); 

kde realtip je skutocny vysledok a tip je tip

skore skutocne skore a tip_skore tipnute skore
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Odporúčal by som urobiť takéto tabuľky (môžu obsahovať aj viac informácií):
zapasy
id
meno
datum
body1
body2

tipujuci
id
meno
body

tipy
id
id_tipujuci
id_zapas
tip
vysledok

Do tej tabuľky zápasy sa ukladajú zápasy, aby sa v prípade potreby mohli body pre súťažiacich vygenerovať znovu.

Funkcia na pridávanie bodov by mohla vyzerať približne takto:

Kód: Vybrať všetko

function pridat_body($match_id, $score1, $score2)
{
	global	$link;

	if ($score1 == $score2) {
		$res = 0;
		$res2 = "(tipy.tip=3 OR tipy.tip=4)";
	} else {
		if ($score1 > $score2) {
			$res = 1;
			$res2 = "(tipy.tip=3)";
		} else {
			$res = 2;
			$res2 = "(tipy.tip=4)";
		}
	}
	$score = $score1 . ":" . $score2;

	$query = "UPDATE tipy, tipujuci SET body=body+5 WHERE tipy.id_tipujuci=tipujuci.id AND tipy.vysledok='$score' AND tipy.tip='$res'";
	$result = mysql_query($query, $link) or die(mysql_error());

	echo "<br>\n";

	$query = "UPDATE tipy, tipujuci SET body=body+3 WHERE tipy.id_tipujuci=tipujuci.id AND tipy.vysledok<>'$score' AND tipy.tip='$res'";
	$result = mysql_query($query, $link) or die(mysql_error());

	echo "<br>\n";

	$query = "UPDATE tipy, tipujuci SET body=body+2 WHERE tipy.id_tipujuci=tipujuci.id AND $res2";
	$result = mysql_query($query, $link) or die(mysql_error());
}
(celé by sa to ešte dalo vyladiť k tvojim presným potrebám)
_johny_
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 apr 2007, 17:46

Príspevok od používateľa _johny_ »

dik, spravil som si tie tabulky vlozil som do nich nejake hodnoty na skusku, ale UPDATE nevykona, co tam este pridat pls


Kód: Vybrať všetko


<?
 $host = "localhost";
 $user = "root";
 $pass = "";
$dbase = 'tip';


function pridat_body($match_id, $score1, $score2)
{
   global   $link;

   if ($score1 == $score2) {
      $res = 0;
      $res2 = "(tipy.tip=3 OR tipy.tip=4)";
   } else {
      if ($score1 > $score2) {
         $res = 1;
         $res2 = "(tipy.tip=3)";
      } else {
         $res = 2;
         $res2 = "(tipy.tip=4)";
      }
   }
   $score = $score1 . ":" . $score2;


   $query = "UPDATE tipy, tipujuci SET body=body+5 WHERE tipy.id_tipujuci=tipujuci.id AND tipy.vysledok='$score' AND tipy.tip='$res'";
   $result = mysql_query($query, $link) or die(mysql_error());

   echo "<br>\n";

   $query = "UPDATE tipy, tipujuci SET body=body+3 WHERE tipy.id_tipujuci=tipujuci.id AND tipy.vysledok<>'$score' AND tipy.tip='$res'";
   $result = mysql_query($query, $link) or die(mysql_error());

   echo "<br>\n";

   $query = "UPDATE tipy, tipujuci SET body=body+2 WHERE tipy.id_tipujuci=tipujuci.id AND $res2";
   $result = mysql_query($query, $link) or die(mysql_error());
}







if ($result==1):
echo "<H1>Tipovačka je upravená.</H1>"

;
else:
echo "<H1>Tipovačku sa nepodarilo upraviť.</H1>"
;

endif;

?>

chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

V tabuľke tipy je v stĺpci id_tipujuci odkaz do tabuľky tipujuci. id_zapas je zase odkaz do tabuľky zapasy. Stĺpec tip obsahuje 0, 1, 2, 3, 4 (pre X, 1, 2, 1X, 2X). vysledok obsahuje reťazec so skóre (možno by sa to mohlo dať do dvoch stĺpcov).
Čiže keď tam chceš pridať nejaké tipy, pridáš tam pre každého tipujúceho riadok. Nastavíš id_tipujuci na id toho človeka (jeho id sa dozvieš v tabuľke tipujuci); id_zapas nastavíš na id zápasu; ďalej nastavíš tip a vysledok.
Samozrejme, nastavovať to ručne je "mierne" otravné, takže by bolo vhodné vytvoriť na to všetko skripty, ktoré by sa o potrebné veci postarali.

Priložil som php a sql súbor. Ten sql naimportuj do db. Slúži to na testovanie (či skôr ukážku funkčnosti). Pridal som tam funkciu show. Je tam na to, aby si videl, či sa tie údaje menia (potom ju môžeš vymazať).

// chrono: ten rar súbor som zmenil (aspoň dúfam :) )Upravil som v ňom pripájanie na databázu (dal som tam tie tvoje údaje)
Prílohy
tip.rar
(1.32 KiB) 75 stiahnutí
_johny_
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 apr 2007, 17:46

Príspevok od používateľa _johny_ »

diky moc kamo , uz sa pekne updatuju body, idem teraz na futbal hned jak dojdem pohram sa s tym...este raz dik
Napísať odpoveď