DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Sva početnička pitanja (http://www.devprotalk.com/forumdisplay.php?f=40)
-   -   PHP pomoć (http://www.devprotalk.com/showthread.php?t=8058)

AnonymousCoward 07. 11. 2009. 20:35

MySQL-ov rand() ni najgorem neprijatelju ne bih preporučio. Pogotovo ako ćeš da imaš >1000 tih SMS poruka.

Što se tiče potencijalne SQL injekcije, smor su te klase. Možda je bolje... $var = (int)$_GET['id']; ili
$var = (is_numeric($_GET['id'])) ? $_GET['id'] : $default; ili sl.

Latino Discovery 09. 11. 2009. 12:44

Citat:

Originalno napisao eraser (Napišite 75551)
Pa za to ti treba ili dodatno polje u tabeli koje ce da bude counter za broj glasova ili dodatna tabela npr.tbl_sms_votes koja ce da ima sledeca polja (id, sms_id, votes). Pored prikaza svakog sms-a mogao bi da stavis link ka stranici koja ce da radi update tog sms-a, ulazni parametar ce da bude id sms-a.
Ovo je jedan od nacina, vremenom kada malo 'udjes u stos' videces da sve ovo nije toliko tesko i da za resenje svakog 'problema' postoji vise nacina.

eraser, sviđa mi se više ta prva ideja (deluje jednostavnije). Dakle, hteo bih da korisnik ocenjuje sms ocenama od 1 do 5 i da može da vidi trenutnu ocenu npr. 3,8. Takođe bih hteo kada oceni jedan sms da ga odmah baci na drugi kako bih izbegao to da 15 puta ocenjuje jedno (to ću ja mislim lako sa onim tvojim kodom za generisanje sms-a). Znači ako korisnik oceni neki sms sa četvorkom, php skripta uzima id od tog sms-a koji je ocenio i u taj red dodaje četvorku, odnosno sabira je sa prethodnim zbirom ocena i deli sa brojem glasova huh :1003: Jel postoji neka php skripta ili tip polja u samoj bazi da se to radi automacki? Da ne moram sad da imam polje za broj glasova, polje za ocenu, polje za zbir ocena i polje za rezultat.


@japan
vidim da je korisno to što si mi dao da čitam, međutim ja bih morao mnogo više da čitam jer ne znam ni šta su klase :) U svakom slučaju ću sve to pogledati i posle verovatno imati pitanje koje se tiče bezbednosti samo da se rešim ovih glavnih muka.


@AnonymousCoward
imaću manje od 500 poruka, a predpostavljam da MySQL-ov rand() ne valja jer se dešava da ponovi id ili tako nešto? U svakom slučaju ću za sad ostaviti ovako pa kad budem ono glavno završio, posvetiću se detaljima funkcionalnosti i perfekcije :)


ps. sajt samo što nije gotov :1076:, moram još da odradim taj rejting i odmah ga "puštam u promet" :1034:

bluesman 09. 11. 2009. 12:54

Off Topic: Ovo počinje da liči na PHP manual :)

eraser 09. 11. 2009. 16:18

Ako zelis da imas i srednju ocenu onda moras da imas i polje koje ce da broji ukupan broj glasova pored polja koje ce da pamti zbir ocena. Srednju vrednost mozes da dobijes kao 'calculated value' tj. ukupan zbir ocena/ukupan broj glasova

robi-bobi 09. 11. 2009. 16:49

Off Topic: preporucujem da kupis i neku knjigu za pocetnike. bilo je tema o dobrim knjigama ovde na forumu, potrazi

Latino Discovery 10. 11. 2009. 15:20

Evo, znači celo jutro pokušavam da napravim to ocenjivanje ali mi ne ide nikako. Našao sam i kako bi trebalo da izgleda kod, što ću vam pokazati.
Pokazuje mi slučajno izabrani SMS, trenutni rejting i kada kliknem na ocenu prebaci me na sledeći SMS. Ali ne beleži u bazu zbir ocena niti broj glasova.
Evo kako mi izgleda kod, pa ako može neko da mi kaže gde je greška, šta sam propustio?

PHP kôd:

<?php
//Konekshn
include "db.php";

//ispisuje slučajno odabrani SMS
$rezultat mysql_query("SELECT * FROM fraze ORDER BY RAND() LIMIT 1");
$red mysql_fetch_assoc($rezultat);
echo 
$red[tekst] . "<br><br>";


//Računa trenutni rejting i pokazuje rezultat zaokružen na jednu decimalu
$current $red[total] / $red[votes];
Echo 
"Trenutni rejting: " round($current1) . "<br>";

//Linkovi za glasanje
Echo "Oceni me: ";
Echo 
"<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$red[id].">Vote 1</a> | ";
Echo 
"<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$red[id].">Vote 2</a> | ";
Echo 
"<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$red[id].">Vote 3</a> | ";
Echo 
"<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$red[id].">Vote 4</a> | ";
Echo 
"<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$red[id].">Vote 5</a><p>";

//Ovo treba da dodaje 1 u polje za broj glasova i ocenu u polje za zbir ocena
mysql_query ("UPDATE fraze SET total = total+$voted, votes = votes+1 WHERE id = $id");

?>

baza mi se zove baza, tabela fraze i ima polja id, tekst, total i votes

JovanT 10. 11. 2009. 15:56

Променљива $voted ти нигде није постављена. Требало би да користиш $_GET['voted'].

Надам се и да ти је јасно да ово овако неће радити како ти мислиш. Ова задња линија, која ти ажурира оцене, би требало да се позива само ако је $_GET['mode'] == 'vote' а не при сваком покретању странице.

holodoc 10. 11. 2009. 17:58

Usputna napomena... Preporučljivo je da umesto da na toliko mesta koristiš
PHP kôd:

$_SERVER['PHP_SELF'

dodeliš njenu vrednost jednoj promenjljivoj i iskoristiš je na mestima gde je potrebna. Naravno nakon što se uradi escape-ovanje serverske promenjljive.

PHP kôd:

$script htmlentities($_SESSION['PHP_SELF'], ENT_QUOTES'utf-8');
echo 
"<a href=".$script."?mode=vote&voted=1&id=".$red[id].">Vote 1</a> | "


Latino Discovery 10. 11. 2009. 22:38

Odustajem od svega..
izvalio sam da ne umem da uradim taj rejting, a pritom mi ni onaj random generator ne radi kako treba..
Kad ukucam u adresu http://localhost/proba/index.php?id=3 ne izbaci mi treći sms, već peti ili pedeseti ili prvi..

Mislio sam da je mnogo lakše da se odradi ovo što sam zamislio, ali izgleda da nije tako i smorio sam se ko plovak :(

Hvala svima na odgovorima, ali nema smisla više da zamajavam ni vas a ni sebe.

robi-bobi 11. 11. 2009. 09:50

ode mas' u propas' :D
(nisam hteo da gnjavim ranije)

epa ne moze :)
ljudi se ubise da ti pomazu, a ti sad: nema smisla da vas zamajavam

moj savet je da pocnes od pocetka i da citas ;)
nije problem sto si uzeo nesta da na njemu ucis (sms random + rating)
problem je sto nisi naucio kako se snaci

jedan nacin je da sednes, procitas knjigu, dve i programiras (probas/eksperimentises) usput pomalo
drugi nacin je blizi tvom: pocnes da radis nesta, vidis da ne ide, nadjesh neki clanak o tome (dovde sve isto). e sad, kad uzmes da citas taj clanak, i naidjes na nesta sto ne razumes - a ti opet potrazi info za to sto ne razumes.

koliko vidim, nisi shvatio sta su ti ljudi ovde napisali
u tome je problem
ti bi samo da copy-paste (ne da u tome ima nesta lose, ali je lose ukoliko hoces da programiras )

ukoliko ti programiranje nije interesantno (t.j. hteo si sajt sa sms-ima, a ne da programiras) - onda pogledaj neki gotov CMS koji vec ima te i takve mogucnosti

poz


Vreme je GMT +2. Trenutno vreme je 06:04.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.