Hodnocení článků – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hodnocení článků – PHP – Fórum – Programujte.comHodnocení článků – PHP – Fórum – Programujte.com

 

Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #1
-
0
-

Pěkný den,
prosím o pomoc, mohl by mi někdo (pomoct) napsat PHP script pro hodnocení článků?
Sám to napsat nedokážu a strýček Google mi taky nepomohl.
Předem díky, Petr

Nahlásit jako SPAM
IP: 86.61.234.–
crAzY^
~ Moderátor
+10
Grafoman
28. 12. 2009   #2
-
0
-

no tak nejdřív se musíš rozmyslet jaký styl toho hodnocení... (hvězdičky/nějaký koeficient)

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #3
-
0
-

Noo.. formulář s radio buttonkama 1-5 (jako ve škole).
Vypisovat by to mělo počet hodnocení a průměr..

Nahlásit jako SPAM
IP: 86.61.234.–
crAzY^
~ Moderátor
+10
Grafoman
28. 12. 2009   #4
-
0
-

nevím co je za problém, můžeš ukládat do databáze každé hlasování (ip, číslo), aby si zamezil vícenásobnému hlasování,

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #5
-
0
-

Bohužel nemám tolik zkušeností...

Nahlásit jako SPAM
IP: 86.61.234.–
Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #6
-
0
-

Vím jak by to mělo fungovat mám i část kódu, ale nevím jak třeba IF neexistuje řádek s tímto ID -> vytvoř nový..

Nahlásit jako SPAM
IP: 86.61.234.–
marioff0
Expert
28. 12. 2009   #7
-
0
-

To Petr : pocuj, aj ked je toto sice poradna, a nie "urob mi zadarmo", velmi radi by sme ti pomohly (aspon niektory urcite), trochu viac sa pricin, ukaz nam stranku kde to potrebujes, aku pouzivas db... ukaz aj tu cast kodu.... a urcite sa dopracujeme k tvojej spokojnosti... :smile1:

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
SuperAdmin0
Newbie
28. 12. 2009   #8
-
0
-
Nahlásit jako SPAM
IP: 78.102.55.–
www.netbookportal.cz
Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #9
-
0
-

Dobře :o) , tak znova.
Na svém webu www.montyho.cz bych rád dal možnost ohodnotit články, chci použít MySQL databázi.

možnost a)
-každý článek by měl jeden svůj řádek v DB
-pokud by byl ohodnocen poprvé řádek by se vytvořil, jinak by se přepočítal již zapsaný
-sloupce DB: id_clanku, hodnoceni_pocet, hodnoceni_prumer
-do cookies by se zapsalo jestli uživatel již hodnotil (netuším jak napsat)
-zápis nového hodnocení:



Kontrola jestli už uživatel nehlasoval.

$hodnoceni = $get['hodnoceni_prumer']
$pocet = $get['hodnoceni_pocet']

$hodnoceni_prumer = ($hodnoceni * $pocet + $nove_hodnoceni) / ($pocet + 1)

Zapsat do DB výsledek.
Přičíst v DB k počtu hodnocení jedničku.




možnost b)
-každé hodnocení by mělo svůj řádek v DB
-na řádku by bylo zapsáno: id_clanku, ip_uzivatele, hodnoceni
-ve scriptu pro výpis by se vytáhla data s určenou ID s každým načteným řádkem by se do
$pocet_hodnoceni += 1
a do
$hodnoceni += $get['hodnoceni'] 
nakonec by se $hodnoceni vydělilo $pocet_hodnoceni.
-při zápisu by se zkontrolovaly řádky s danou id_clanku a pokud by nebyl nalezen radek se stejnou IP jako má uživatel pokračovalo by se normálním vytvořením nového řádku DB

formulář:
<form action="" method="GET">

Ohodnotit (jako ve škole):
1 <input type="radio" name="hodnoceni" value="jedna">
2 <input type="radio" name="hodnoceni" value="dve">
3 <input type="radio" name="hodnoceni" value="tri">
4 <input type="radio" name="hodnoceni" value="ctyri">
5 <input type="radio" name="hodnoceni" value="pet">
<button name="ohodnot" value="ohodnot" type="submit" Poslat>Poslat</button>
</form>


Doufám že to bude stačit stačí slovo a doplním.. mockrát děkuji :smile1:


Nahlásit jako SPAM
IP: 86.61.234.–
Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #10
-
0
-

To SuperAdmin : Oooo díky hledal jsem jen na českém internetu =) zkouknu to.

Nahlásit jako SPAM
IP: 86.61.234.–
marioff0
Expert
28. 12. 2009   #11
-
0
-

nejak takto by to mohlo byt:

vytvorit novu tabulku ipecky s jednym stlpcom ipecka - VARCHAR(15)
a pridat do tabulky s clankami nove 2 stlpce pocet_hlasovani INT(10) sucet_hlasovania int(10)

<?php

if (($_GET['hodnoceni']>=1)and($_GET['hodnoceni']<=5)and(isset($_GET['id_clanku']))) {

$id_clanku=intval($_GET['id_clanku']); // resp. lepsie zabezpecenie

$kontrola=mysql_query("SELECT * FROM ipecky WHERE ipecka='".$_SERVER['REMOTE_ADDR']."'");
if (mysql_num_rows($kontrola)==0) {

mysql_query("INSERT INTO ipecky (ipecka) VALUES ('".$_SERVER['REMOTE_ADDR']."')");

mysql_query("UPDATE nazov_tabulky_s_clankami SET pocet_hlasovani=pocet_hlasovani+1, sucet_hlasovania=sucet_hlasovania + $_GET['hodnoceni'] WHERE nazov_stlpca_s_id_clanku='".$id_clanku"'");

} else {
echo "Už si hlasoval !";
}

}

$hodnotenie=mysql_query("SELECT * FROM nazov_tabulky_s_clankami WHERE nazov_stlpca_s_id_clanku='".$premenna_s_ID_clankom_z_db."'");
$hodnotenie_data=mysql_fetch_assoc($hodnotenie);
echo "Hodnotenie: ".rand($hodnotenie_data['sucet_hlasovania'] / $hodnotenie_data['pocet_hlasovani'],0).", Hlasovalo: ".$hodnotenie_data['pocet_hlasovani']."";
?>

<form action="" method="GET">
Ohodnotit (jako ve škole):
1 <input type="radio" name="hodnoceni" value="1">
2 <input type="radio" name="hodnoceni" value="2">
3 <input type="radio" name="hodnoceni" value="3">
4 <input type="radio" name="hodnoceni" value="4">
5 <input type="radio" name="hodnoceni" value="5">
<input type="hidden" name="id_clanku" value="<?php echo $premenna_s_ID_clankom_z_db; ?>" />
<button name="ohodnot" value="ohodnot" type="submit" Poslat>Poslat</button>
</form>


ale neskusal som :)

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #12
-
0
-

A co když uživatel komentoval nějaký článek.. zapíše se jeho IP a pak nebude moct komentovat jiný článek?

Nahlásit jako SPAM
IP: 86.61.234.–
marioff0
Expert
28. 12. 2009   #13
-
0
-

vidis.. to ma nenapadlo v rychlosti... urob si do ipecky este jeden stlpec s id_clanku a do SELECT-u pridaj podmienku AND id_clanku='".$id_clanku."'

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Petr
~ Anonymní uživatel
746 příspěvků
28. 12. 2009   #14
-
0
-

Moc díky chlape :smile1: všechna čest :o)
Přeju hodně uspěchů =)

Nahlásit jako SPAM
IP: 86.61.234.–
marioff0
Expert
28. 12. 2009   #15
-
0
-

nie je zaco, napodobne :)

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Petr
~ Anonymní uživatel
746 příspěvků
29. 12. 2009   #16
-
0
-

Ahoj,

<?php


if (($_GET['hodnoceni']>=1)and($_GET['hodnoceni']<=5)and(isset($_GET['id']))) {

$id_clanku=intval($_GET['id']); // resp. lepsie zabezpecenie

mysqli_connect

('localhost', ' ', ' ', ' ', 3306);

$kontrola=mysql_query("SELECT * FROM hodnoceni_ip WHERE id_clanku='".$id_clanku."' AND ipecka='".$_SERVER['REMOTE_ADDR']."'");


if (mysql_num_rows($kontrola)==0) {


mysql_query("INSERT INTO hodnoceni_ip (ipecka) VALUES ('".$_SERVER['REMOTE_ADDR']."')");



mysql_query("UPDATE hodnoceni SET pocet_hodnoceni=pocet_hodnoceni+1, soucet_hodnoceni=soucet_hodnoceni + $_GET['hodnoceni'] WHERE id_clanku='".$id_clanku"'");



}

else {

echo "Už si hlasoval !";

}



}

$id_clanku=$_GET['id'];

$hodnotenie=mysql_query("SELECT * FROM hodnoceni WHERE id_clanku='".$id_clanku."'");

$hodnotenie_data=mysql_fetch_assoc($hodnotenie);

echo "Hodnotenie: ".rand($hodnotenie_data['soucet_hodnoceni'] / $hodnotenie_data['pocet_hhodnoceni'],0).", Hlasovalo: ".$hodnotenie_data['pocet_hodnoceni']."";

?>
<form action="" method="GET">

Ohodnotit (jako ve škole):

1 <input type="radio" name="hodnoceni" value="1">

2 <input type="radio" name="hodnoceni" value="2">

3 <input type="radio" name="hodnoceni" value="3">

4 <input type="radio" name="hodnoceni" value="4">

5 <input type="radio" name="hodnoceni" value="5">

<input type="hidden" name="id" value="<?php $content=$_GET['id']; echo($content); ?>" />

<button name="ohodnot" value="ohodnot" type="submit" Poslat>Poslat</button>

</form>


Chybka:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/free/tym.cz/y/yxc/root/www/stranka.inc on line 21

Prosím o radu

Nahlásit jako SPAM
IP: 86.61.234.–
polonium0
Návštěvník
29. 12. 2009   #17
-
0
-

id_clanku='".$id_clanku"

chybi ti tam tecka

Nahlásit jako SPAM
IP: 85.132.159.–
Petr
~ Anonymní uživatel
746 příspěvků
29. 12. 2009   #18
-
0
-

Pořád to píše tu samou chybu

Nahlásit jako SPAM
IP: 86.61.234.–
crAzY^
~ Moderátor
+10
Grafoman
29. 12. 2009   #19
-
0
-

zkus to takhle:

mysql_query("UPDATE hodnoceni SET pocet_hodnoceni=pocet_hodnoceni+1, soucet_hodnoceni=(soucet_hodnoceni+$_GET[\'hodnoceni\']) WHERE id_clanku='".$id_clanku"'");

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
marioff0
Expert
29. 12. 2009   #20
-
0
-

alebo

mysql_query("UPDATE hodnoceni SET pocet_hodnoceni=pocet_hodnoceni+1, soucet_hodnoceni='".(soucet_hodnoceni + $_GET['hodnoceni'])."' WHERE id_clanku='".$id_clanku."'");

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
crAzY^
~ Moderátor
+10
Grafoman
29. 12. 2009   #21
-
0
-

To marioff : to je blbost...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Petr
~ Anonymní uživatel
746 příspěvků
29. 12. 2009   #22
-
0
-

To od Marioffa funguje crAzYho ne

Nahlásit jako SPAM
IP: 86.61.234.–
marioff0
Expert
29. 12. 2009   #23
-
0
-

To crAzY^ : a to uz preco??

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
crAzY^
~ Moderátor
+10
Grafoman
29. 12. 2009   #24
-
0
-

no já sem myslel ze soucet_hodnoceni musi byt napsany primo v tom dotazu, sry moc se v tom neorientuju...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Petr
~ Anonymní uživatel
746 příspěvků
3. 1. 2010   #25
-
0
-

Ahoj

$itemid = $_POST["item_id"];

$rating = intval($_POST["rating"]);
if(($rating < 1)||($rating>5)) {
mysqli_query($db,"INSERT INTO ratings(item_id,rating) VALUES ('$itemid',$rating)");
}


Takle vypadá kód pro zápis.. v čem je chyba? Když místo promněnných napíšu hodnoty, tak se to do DB zapíše ale takto to vloží jen prázdné řádky..

Nahlásit jako SPAM
IP: 86.61.234.–
hrach
~ Redaktor
+1
Boss
3. 1. 2010   #26
-
0
-

já se hlavně divím, že to vubec funguje, když máš špatně podmínku. mělo by být if ($rating => 1 && $rating <= 5)

Nahlásit jako SPAM
IP: 90.179.27.–
http://jan.skrasek.com@hrachcz – webdeveloper
Petr
~ Anonymní uživatel
746 příspěvků
3. 1. 2010   #27
-
0
-


Parse error: syntax error, unexpected T_DOUBLE_ARROW in....

Nahlásit jako SPAM
IP: 86.61.234.–
hrach
~ Redaktor
+1
Boss
3. 1. 2010   #28
-
0
-

srr, samozrejme to byt $rating >= 1 && $rating <= 5

Nahlásit jako SPAM
IP: 90.179.27.–
http://jan.skrasek.com@hrachcz – webdeveloper
marioff0
Expert
3. 1. 2010   #29
-
0
-

To Petr : vkladaj premenne do jednoduchych uvodzoviek ' teda '".$premenna."' ... len pre istotu :)

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Petr
~ Anonymní uživatel
746 příspěvků
3. 1. 2010   #30
-
0
-

Díky pánové teď už to funguje.

Nahlásit jako SPAM
IP: 86.61.234.–
Petr
~ Anonymní uživatel
746 příspěvků
5. 1. 2010   #31
-
0
-

Jak prosím zabezpečit proti SQL injection? Fungují jen mysqli příkazy.. díky

<?php


//připojení k db
$db = mysqli_connect(' ', ' ', ' ', ' ');
if (!$db) {
echo "Spojení s DB se nepodařiloilo";
exit();
}



$id_clanku = $_POST["id_clanku"];


//zapsani


$kontrola=mysqli_query($db, "SELECT * FROM hodnoceni WHERE id_clanku='".$id_clanku."' AND ip='".$_SERVER['REMOTE_ADDR']."'");

if (mysqli_num_rows($kontrola)==0) {

$hodnoceni = intval($_POST["hodnoceni"]);

if($hodnoceni >= 1 && $hodnoceni <= 5)
mysqli_query($db,"INSERT INTO hodnoceni(id_clanku,hodnoceni,ip) VALUES ('".$id_clanku."',".$hodnoceni.",'".$_SERVER['REMOTE_ADDR']."')");

}

else {
echo "Už si hlasoval !";
}



$id_clanku=$_GET['id'];
//vypsani
$result = mysqli_query($db,"SELECT id_clanku,AVG(hodnoceni) FROM hodnoceni WHERE id_clanku = '".$id_clanku."' GROUP BY id_clanku");
while($values = mysqli_fetch_array($result)){
$id_clanku = $values[0];
$hodnoceni = number_format($values[1], 2, '.', '');
echo "Hodnocení: $hodnoceni, ";
}
if(!$result)
echo"Ještě nikdo nehodnotil, buďte první!";


//spočítání počtu hodnocení
$pocet_data = 0;
$pocet = mysqli_query($db,"SELECT * FROM hodnoceni WHERE id_clanku='".$id_clanku."'");
while($values = mysqli_fetch_array($pocet)){

$pocet_data += 1;

}

echo" Počet hodnocení: $pocet_data";

?>




<form method="POST" action="">
<b>Ohodnoťtě</b>(5 - nejlepší):
<input type="hidden" name="id_clanku" value="<?php $content=$_GET['id']; echo($content); ?>" />

1 <input type="radio" name="hodnoceni" value="1">

2 <input type="radio" name="hodnoceni" value="2">

3 <input type="radio" name="hodnoceni" value="3">

4 <input type="radio" name="hodnoceni" value="4">

5 <input type="radio" name="hodnoceni" value="5">

<input type="submit" value="Poslat">
</form>

Nahlásit jako SPAM
IP: 86.61.234.–
Zdeny
~ Korektor
0
Grafoman
5. 1. 2010   #32
-
0
-

$kontrola=mysqli_query($db, "SELECT * FROM hodnoceni...

Je zbytečné "vytahovat" všechna data. Nestačil by pouze počet? SELECT COUNT(*) FROM....

To stejné u "spočítání počtu hodnocení"

Nahlásit jako SPAM
IP: 89.103.110.–
www.devtea.cz | zdenekvecera.cz | @ZdenekVecera
Redaktor Programujte.com a Živě.cz
Lordest0
Super člen
5. 1. 2010   #33
-
0
-

Petr napsal:
Jak prosím zabezpečit proti SQL injection? Fungují jen mysqli příkazy.. díky



ak su data vkladane uzivatelmi iba cisla (resp. ich vkladas podla $_GET cez link a podobne), kontroluj ich s is_numeric(); a utocnik nema sancu

To Zdeny :

v tomto pripade mas urcite pravdu, no niekedy je ovela efektivnejsie zistit pocet udajov cez mysql_num_rows();
(on sa pokusil o nieco podobne cez cyklus no je to zbytocne)

Nahlásit jako SPAM
IP: 78.98.33.–
Petr
~ Anonymní uživatel
746 příspěvků
5. 1. 2010   #34
-
0
-

To Zdeny : díky za upozornění

A co když potřebuju zabezpečit text?

Nahlásit jako SPAM
IP: 86.61.234.–
Lordest0
Super člen
5. 1. 2010   #35
-
0
-
Nahlásit jako SPAM
IP: 78.98.33.–
Petr
~ Anonymní uživatel
746 příspěvků
5. 1. 2010   #36
-
0
-

To my vyhazuje chybu že se nemůže připojit k DB.. a to mi dělaj všechny příkazy mysql používám jen mysqli

Nahlásit jako SPAM
IP: 86.61.234.–
Lordest0
Super člen
6. 1. 2010   #37
-
0
-
Nahlásit jako SPAM
IP: 78.98.33.–
Petr
~ Anonymní uživatel
746 příspěvků
6. 1. 2010   #38
-
0
-

Díky moc :smile1:

Nahlásit jako SPAM
IP: 86.61.234.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Hodnocení článků — založil Jimosona

Hodnocení — založil Jan Malý

Hodnocení SŠ - Praha — založil FuzzyWuzzyCZ

Hodnocení e-shopu — založil xanteacz

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý