iReklama  |  PC Svět  |  vyhledávací centrála  |  Diskuzní fórum  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz - čte si nás 16 čtenářů
 
PC Svět
Hlavní stránka
ASP
Aktuality
Assembler
C,C++
Cracking
Delphi
Diskuze
Grafika
Hardware
Hry a zábava
HTML
Internet
JavaScript
Komunikace
Literatura
Linux
Microsoft Office
Turbo Pascal
Perl
PHP
Software
Tiskové zprávy
Visual Basic
Windows
WWW katalog

Knihovna zdr. kódů

Nabídka skriptů aj.

Homepage autora
Služby
Guestbook
  kniha návštěv pro
  každého
MailForm
  zasílání výsledků
  formulářů na e-mail
Programy
DOS Commander
WinMan
Windows Tools
Informace
O PC Světě
Přehled rubrik
Reklama
Výsledky anket
Přehled novinek


ISSN 1213-6042

šéfredaktor
Petr Šťastný
admin@pcsvet.cz

zástupce šéfredaktora
Pavel Rauš
raus@pcsvet.cz

Stránka je optimalizo-
vána pro prohlížeč
Internet Explorer 5.0
při rozlišení 800x600

 © Petr Šťastný 2002
   All rights reserved

PC Svět
ikonka PC Světa



Linux - zdarma a legálně



TOPlist

Vytisknout   Poslat   Komentáře (2)   Přidat komentář

Hodnocení článku

Máte na stránce spoustu článků? A chcete vědět, jak moc se líbí čtenářům? Tak si v PHP udělejte hodnocení článků. Dnes si ukážeme, jak tento jednoduchý skript vytvořit.

Nejdříve si vytvoříme skript, který nám vytvoří tabulku, do které budeme zapisovat hodnocení:

vytvor.php

<?
MySQL_Connect("SERVER", "JMENO", "HESLO");
MySQL_Select_DB("DB");
MySQL_Query("CREATE TABLE hodnot (ID INT not null , Celek INT not null , Pocet INT not null , PRIMARY KEY (ID));");
MySQL_Close();
?>



Tato tabulka má 3 buňky. První je ID - do této buňky budeme ukládat ID článku (každý článek má jedinečné ID).  Další je Celek. Do té si uložíme součet všech známek a vydělíme jej poslední buňkou, do které ukládáme počet lidí, kteří už hlasovali. Tak dostaneme průměrnou známku. Dále si vytvoříme hlavní skript, který se nám postará o zápis do tabulky:

hodnot.php

<?
require("opendb.php");


if($znamka=='1'):
$pricti='1';
elseif($znamka='2'):
$pricti='2';
elseif($znamka='3'):
$pricti='3';
elseif($znamka='4'):
$pricti='4';
else:
$pricti='5';
endif;


mysql_query("update hodnot set celek=celek+$pricti where id=$ID");
mysql_query("update hodnot set pocet=pocet+1 where id=$ID");
MySQL_Close();
Header("location: $HTTP_REFERER");
?>



Tento skript se nejdříve připojí k databázi (přidáním souboru opendb.php), poté zkontroluje jakou známkou nám čtenář ohodnotil článek a podle toho přiřadí proměnné $pricti hodnotu, jakou máme přičíst do databáze. Potom následuje část, kdy se přičte do buňky Celek hodnota 1-5 (podle toho, jaká byla známka) a nakonec se do buňky Pocet přidá o 1 více, protože hlasovalo o 1 uživatele více. Úplně nakonec se skript vrátí zpět, kde podá výsledek: výslednou známku a počet lidí, kteří už hlasovali.

Nyní nám zbývá jen skript, který vložíme do každé stránky, kterou chceme hodnotit:

<?
$ID='1';
?>
Hodnoťte jako ve škole:<BR> <A HREF="hodnot.php?ID=<? echo "$ID"; ?>&znamka=1">1</A> | 
<A HREF="hodnot.php?ID=<? echo "$ID"; ?>&znamka=2">2</A> | 
<A HREF="hodnot.php?ID=<? echo "$ID"; ?>&znamka=3">3</A> | 
<A HREF="hodnot.php?ID=<? echo "$ID"; ?>&znamka=4">4</A> | 
<A HREF="hodnot.php?ID=<? echo "$ID"; ?>&znamka=5">5</A>
<BR><?
require("opendb.php");
$vysledek = MySQL_Query("SELECT * FROM hodnot WHERE ID=$ID");
$zaznam = MySQL_Fetch_Array($vysledek);
$prvni=$zaznam["Celek"];
$druhe=$zaznam["Pocet"];
@$prumer=$prvni/$druhe;
if(!$prumer):
echo "Tento článek ještě nebyl ohodnocen.";
else:
echo "Výsledná známka: $prumer";
echo "<BR>";
echo "Hlasováno bylo: ";
echo "$druhe". "x";
endif;
?>



Na začátku skriptu musíte přiřadit proměnné $ID přiřadit vždy jiné číslo (podle čísla článku). Takže například 3. článek bude mít
hodnotu proměnné $ID='3'. Následují odkazy na skript hodnot.php?ID=id článku&známka, kterou zadal čtenář. Poté se připojíme
k databázi, vybereme pouze jeden řádek z tabulky, podle hodnoty proměnné $ID. Do proměnné $prvni si přiřadíme celkový součet
známek, jenž byly zadány a do proměnné $druhe přiřadíme počet hlasů. Dále zkusíme spočítat průměr. Pokud to nejde, tzn., že
dělíme nulou, necháme vypsat, že článek ještě nebyl ohodnocen. Pokud to jde, vypíšeme výslednou známku a počet hlasů.

A úplně nakonec skript, kterým se přpojujeme k databázi:

opendb.php

<?
MySQL_Connect("SERVER", "JMENO", "HESLO");
MySQL_Select_DB("DB");
?>



Jo a ještě jsem zapomněl jednu věc. Musíte si vždy, když máte ový článek přidat nové ID do tabulky. To se dělá touto HTML stránkou,
která je obsloužena skriptem obsluha.php:

pridej.html

<HTML>
<HEAD>
<TITLE>Přidání ID článku</TITLE>
</HEAD>
<BODY>
<FORM ACTION="obsluha.php" METHOD="get">
Do políčka napište ID článku, které chcete vložit: <INPUT TYPE="text" NAME="ID"><INPUT TYPE="submit" VALUE="Vložit ID">
</FORM>
</BODY>
</HTML>



A teď ta obsluha:

obsluha.php

<? require("opendb.php");
MySQL_Query("INSERT INTO hodnot VALUES('$ID', '', '');");
MySQL_Close();
?>



Nezapomeňte vždy před hodnocením nového článku spustit stránku pridej.html a vložit ID 1, pak 2,...

Autor: Jakub Honig, hoya@seznam.cz, informace a seznam článků


Komentáře k článku
Vivenasobne hlasovani?, Pavel Matoušek, 25.10.2002 8:37:32
Re: Vivenasobne hlasovani?, Jakub Honig, 25.10.2002 14:04:11

Přidat komentář


Poslední články ze stejné rubriky
Jednoduchá Kniha návštev v PHP bez MySQL
Seznamka v PHP a MySQL (4.)
Seznamka v PHP a MySQL (3.)
Seznamka v PHP a MySQL (2.)
Seznamka v PHP a MySQL (1.)

Diskuze - PHP - celkem 943 příspěvků (zobrazeno max. 15) - zobrazit celou diskuzi
Podkategorie
Databáze [100]
Název Autor Datum
jak z lib. datumu zjistit den v týdnu Luboš 25.10.2002
   žádná odpověď    
Instalace GD do PHP pod windows roman 25.10.2002
   žádná odpověď    
Označování proměnných Kakis 23.10.2002
• Tak to asi nepude Martin 24.10.2002
• Re:To nepujde Kakis 25.10.2002
Problem s formularom vlado 22.10.2002
• Řešení odeslání formuláře. Danny 25.10.2002
Odesilani mailu s cestinou Ondra 22.10.2002
   žádná odpověď    
"odoslanie" premennej Filip K. 20.10.2002
• URL svobin 20.10.2002
• Oprava svobin 20.10.2002
• a tak aby to nevidel Filip K. 20.10.2002
• Re RE promena svobin 20.10.2002
• Describe svobin 20.10.2002
• Tie udaje Filip K. 21.10.2002
Provozovatel:
PES.cz
Poslední články
Hodnocení článku
TEAC W552E 
Intel Celeron 2000MHz
Grafika v C++ (3.)
Nová Nokia 3650
Hodnocení článku
nejlepší <----> nejhorší
    
Stav: 1
Počet: 3
Informace o článku
Datum 25.10.2002
Čtenářů 167
Autor Jakub Honig
Rubrika PHP - příklady
Nový redaktor
  Chcete psát články
  pro PC Svět či se
  stát redaktorem?

Články honorovány!

  Informace zde
EInfo
  Chcete být informováni
  o každém novém článku
  na PC Světě?

Zadejte svůj e-mail:

MSN.ATLAS.CZ
Hladat.sk

hlavní stránka  |  vyhledávací centrála  |  Diskuze  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz

Se svými dotazy či problémy se obracejte na diskuzní fórum, věci týkající se PC Světa směřujte na e-mail pcsvet@pcsvet.cz

Šíření obsahu tohoto serveru nebo jeho části je bez souhlasu redakce zakázáno.
(c) PC Svět 2002 - Všechna práva vyhrazena.