Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Anketa u php-u sa MySQL

[es] :: PHP :: Anketa u php-u sa MySQL

Strane: 1 2

[ Pregleda: 8057 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

spezia

Član broj: 134818
Poruke: 355
*.beobug.com.



+6 Profil

icon Anketa u php-u sa MySQL08.10.2007. u 17:05 - pre 199 meseci

Imam logicki problem pa ako moze jedan savet.Hteo bih da napravim anketu sa mysql gde bi bila i arhiva anketa..
Sto se tice ankete:
Pravim dve tabele u bazi
1)
Anketa
id,name(pitanje ankete),value1,value2,...value10( 10 opcija za glasanje)..
2)
Result
id,counter1,counter2,...,counter10(cuva vrednost-brojac za svaku opciju glasanja)
Poenta je sledeca:
Kada izaberem opiju DA (value2,recimo),treba da iz baze pomocu id u counter2 doda +1,u ostala polja +0;
Imam silne probleme,pa me zanima da li se ovo resenje isplati ,da li vredi da cimam na ovaj nacin.
Da li ima neko bolji predlog za resenje ovog problema?
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
89.146.186.*

Sajt: www.mkscripts.net


Profil

icon Re: Anketa u php-u sa MySQL08.10.2007. u 22:41 - pre 199 meseci
Dvije tabele
- pitanja (id | pitanje)
- odgovori (id | pitanjeId | odgovor | votes)

U tabelu pitanja dodas pitanje, zapamtis id, u tabelu odgovori dodajes ponuđene odgovore i onaj id upisujes u kolonu pitanjeId (nisi ogranicen na broj ponuđenih odgovora). Sql za povecanje broja bi bio "UPDATE odgovori SET votes=votes+1 WHERE id=$idOdgovora LIMIT 1".

Tako bi ja uradio, e sad jel to najbolji nacin ne znam.

May the force be with you...
 
Odgovor na temu

vilyu
Web Developer
Beograd, Srbija

Član broj: 1188
Poruke: 444



+2 Profil

icon Re: Anketa u php-u sa MySQL09.10.2007. u 08:04 - pre 199 meseci
Ako je potreba i Arhiva anketa, ja bih dodao i tabelu anketa, potencijalno sa datumima vazenja (od, do).

Predlozenu tabelu pitanja bih prosirio ID-jem ankete na koje se pitanje odnosi.
Pera električar 0637129710, BG, preporučujem.
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Anketa u php-u sa MySQL09.10.2007. u 08:20 - pre 199 meseci
Imaš u top temi "Treba mi skripta" linkove ka kolekcijama takvih već urađenih skripti,
pregledaj, isprobaj pa vidi kako su to oni uradili.

Negde sam pročitao: dobri programeri pišu kvalitetan kod, najbolji ne pišu, koriste skripte ovih prvih.
Znači pokupi njihova rešenja.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

spezia

Član broj: 134818
Poruke: 355
*.beobug.com.



+6 Profil

icon Re: Anketa u php-u sa MySQL09.10.2007. u 18:50 - pre 199 meseci
A da pokusamo sa mojom idejom malo ..
Znaci imam dve tabele ..
Jedna ima pitanje i value1,value2,value10(vrednost za svaku opciju ankete).Druga tabela ima id,counter1,counter2,..counter10(koji pamti vrednost za svaku VALUE-brojac koliko je neko glasao za opciju).Kada hocu da glasam ja prosledjujem vrednost $choise(u formi sa radio buton to je 1,2,3,4..)
Code:


<?php

if(isset($_POST))
{
  $choise=$_POST['value'];
  if (empty($choise))
  {
    echo "Niste glasali !";
    exit;
  }
    $anketa_id=$_POST['id'];
}
$base="test";
  $table_count="resultat";
  $link=mysql_connect('localhost','root','a');
  if(!(mysql_select_db($base)))
     {
     echo "Baza nije selektovana.<BR>";
     }
     $var="SELECT * FROM $table_count ";
     if(!($result2=mysql_query($var)))
     {
     echo"Nije selektovana tabela $table_count";
     }
     while($counts=mysql_fetch_row($result2))
    {
     if($counts[0]==$anketa_id) //$counts[0] je ID druge tabele koji izjednacava ID sa prvom tabelom
     {
      $counter1=$counts[1];//ucitava vrednost iz tabele za polje value1 kako bi kasnije povecala za 1 ako je glasano za prvu opciju
      $counter2=$counts[2];
      $counter3=$counts[3];
      $counter4=$counts[4];
      $counter5=$counts[5];
      $counter6=$counts[6];
      $counter7=$counts[7];
      $counter8=$counts[8];
      $counter9=$counts[9];
      $counter10=$counts[10];
      }
     }
     echo "Broj iz baze $counter1,$counter2,$counter3..";//PROBNI KOD KOJI RADI POKAZUJE VREDNOST IZ TABELE
  switch($choise)
  {
    case "1":
    $counter1++;
    break;
      case "2":
      $counter2++;
      break;
        case "3":
        $counter3++;
        break;
          case "4":
          $counter4++;
          break;
            case "5":
            $counter5++;
            break;
              case "6":
              $counter6++;
              break;
                case "7":
                $counter7++;
                break;
                  case "8":
                  $counter8++;
                  break;
                    case "9":
                    $counter9++;
                    break;
                      case"10":
                      $counter10++;
                      break;
    }
    echo "Ovo su vrednosti u polja 1-2-3-4:->>1:$counter1 <br>2:$counter2<BR>3:$counter3<BR>4:$counter4<BR>";//PROBNI KOD ->RADI                  
    // UPIS PODATAKA U BAZU     
    $link=mysql_connect('localhost','root','a');
  if(!(mysql_select_db($base)))
     {
     echo "Baza nije selektovana.<BR>";
     };
  $query="INSERT INTO $table_count (counter1,counter2,counter3,counter4,counter5,counter6,counter7,counter8,counter9,counter10) VALUES ('$counter1','$counter2','$counter3','$counter4','$counter5','$counter6','$counter7','$counter8','$counter9','$counter10')WHERE id='$anketa_id' ";
  $result=mysql_query($query);
 if(!($result))
  {
   echo "Nije unet zapis u bazu,greska u kodu";
   }
   
?>


GRESKA NE UPISUJE PODATKE U BAZU( Javlja: "Nije unet zapis u bazu,greska u kodu")->To je za sada jedini problem,jer ako ne upise podatak u bazu i brojaci+1 nece raditi..
Kada obrisem uslov WHERE iz zadnjeg upita gde treba da upisuje samo u RED GDE JE ISTA VREDNOST ID,on upisuje u bazu,ali svaki unos,poseban id..
Ali sam primetio da rade brojaci->dobijem 1 u value1,sledeci broj u value4(ostala polja 0,zavisno koju opciju glasam)..
Meni treba da vrednosti glasanja pamti u isti red id-a koji ce biti isti sa id-om sa pitanjem ankete.

Edit by DakiPro: Nemoj dopustiti da ispadnes nekulturan zato sto pises velikim slovima.



[Ovu poruku je menjao dakipro dana 09.10.2007. u 22:07 GMT+1]
 
Odgovor na temu

dr ZiDoo
Banja Luka

Član broj: 189
Poruke: 1728
87.250.121.*

Jabber: ZiDoo@elitesecurity.org
ICQ: 299539598
Sajt: zidoo.geek.rs.ba


Profil

icon Re: Anketa u php-u sa MySQL09.10.2007. u 22:25 - pre 199 meseci
Code:

..) WHERE

odmakni jedna space
tu nema kašike....
 
Odgovor na temu

vilyu
Web Developer
Beograd, Srbija

Član broj: 1188
Poruke: 444



+2 Profil

icon Re: Anketa u php-u sa MySQL10.10.2007. u 07:18 - pre 199 meseci
A sta ces da uradis sutra kada ti bude trebalo da u jednoj anketi imas 11 odgovora? Prosirices tabelu jos jednom kolonom i malo prepraviti kod? A onda ti preksutra bas zatreba i dvanaesti odgovor. Ako vec pravis svoj kod, moj ti je dobronamerni predlog da prihvatis organizaciju tabela kako smo je m_k i ja prikazali.
Pera električar 0637129710, BG, preporučujem.
 
Odgovor na temu

spezia

Član broj: 134818
Poruke: 355
*.beobug.com.



+6 Profil

icon Re: Anketa u php-u sa MySQL10.10.2007. u 07:29 - pre 199 meseci
NECE !!!
Po ovim PROBNIM kodovima,lepo se vidi
da se prosledjuje ID (recimo 1),i $CHOISE (RECIMO 1,2,3,..zavisno koja je opcija glasana),Isto sa SELECT pokazuje uspesno polja iz baze,
i counter kada glasamo dodaje +1..Jedino NE UPISUJE U BAZU.Stvarno ne vidim zasto??
@vilyu
MA ok..ali posto sam se vec mucio,cisto da vidim i ovu ideju..Posle cu raditi i vasu.



[Ovu poruku je menjao spezia dana 10.10.2007. u 09:03 GMT+1]
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Anketa u php-u sa MySQL11.10.2007. u 08:01 - pre 199 meseci
Mogao bi uz poruku o grešci dopisati i
Code:
echo mysql_errors();

Takođe bi bilo korisno i da ehuješ sam $query da vidiš kako je prosleđen.

BTW, nešto se ne sećam da je u okviru INSERT instrukcije uopšte dozvoljeno koristiti WHERE, čak i besmisleno.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

Phikret
Fikret Pašović
freelancer
Novi Pazar - Beograd

Član broj: 192541
Poruke: 71
212.178.224.*

Sajt: www.mojestudije.info


+2 Profil

icon Re: Anketa u php-u sa MySQL09.11.2010. u 14:13 - pre 162 meseci
Zdravo. Pravim skriptu za glasanje pomoću php-a i mysql-a. Na slici možete da vidite model baze odnosno tabela koje su potrebne za ovo.

U tabeli answer cuvam odgovore koji se vezuju za konkretnu anketu
U tabeli vote čuvam glasove posetilaca koji se vezuju za konkretni answer
U tabeli poll čuvam ankete


Videćete da sam na slici na tabeli vote crvenim slovima ispisao koji su odgovori u pitanju da bi bilo preglednije. Dakle zanima me sledeće:

Zašto mi mysql vraća rezultat 1 za odgovor 'nastava' iako ga nema među glasovima, odnosno niko nije glasao za taj odgovor?

Pogledajte malo kako izgleda upit, meni je delovalo ovako najprirodnije. Uradio sam outer join kako bi mi vratio vrednosti iz tabele answer iako nije bilo glasova, ali dobijam 1 u tom slučaju iako očekujem da dobijem 0. Ovo je upit:

Code:
select distinct text, 
count(*) as broj from vote right outer join answer on 

(answer.id = vote.id_answer) where answer.id_poll = '1' group by text order 

by answer.id




http://www.mojestudije.info
Svako ima pravo da se kreće i da bude kreten


Prikačeni fajlovi
 
Odgovor na temu

peca89bg
Beograd

Član broj: 202034
Poruke: 354
95.180.27.*



+6 Profil

icon Re: Anketa u php-u sa MySQL09.11.2010. u 21:37 - pre 162 meseci
pogledaj ovo resenje... ovo sam ja pravio na seminarkom... prilicno je jednostavno... evo ti link: http://hotfile.com/dl/81531481/6c2e3a1/anketa.rar.html
 
Odgovor na temu

Phikret
Fikret Pašović
freelancer
Novi Pazar - Beograd

Član broj: 192541
Poruke: 71
82.117.198.*

Sajt: www.mojestudije.info


+2 Profil

icon Re: Anketa u php-u sa MySQL09.11.2010. u 21:55 - pre 162 meseci
Peco pogledaću tvoje rešenje. Ja sam već završio nekih 90% posla, samo mi je ovo pravilo problem, a mislim da sam našao u čemu je kvaka. To ću da probam kasnije. Izgleda da umesto što brojim count(*) treba da brojim count(id)...
http://www.mojestudije.info
Svako ima pravo da se kreće i da bude kreten


 
Odgovor na temu

peca89bg
Beograd

Član broj: 202034
Poruke: 354
95.180.27.*



+6 Profil

icon Re: Anketa u php-u sa MySQL09.11.2010. u 22:16 - pre 162 meseci
pa vidi ova anketa ti radi tako sto imas opcije, Odličan je! Nije loš. Može i bolje. Ne svidja mi se. i ista ta polja su u bazi... kad se klikne na nesto od ponudjenog u bazi se to uveca za 1 a kad se klikne na fajl rez.php ispise ti rezultate u %. Bas jednostavna anketa koja vrsi posao.. Sad tu moze jos recimo da se uradi da zabranis korisniku da glasa u odredjenim vemenskim intervalima, recimo samo jednom na 12h tako sto ces da proveras po IP-u ali ima malo vise posla... ako ti ne treba nista preterano i nabudzeno ovo ti je sasvim ok resenje barem po meni... nisam bas gledao detaljno tvoj kod ali onako sam ga preleteo i mislim da si suvise zakomplikovao stvari (bez uvrede) :)
 
Odgovor na temu

notnowjohn

Član broj: 272597
Poruke: 20
*.dynamic.isp.telekom.rs.



Profil

icon Re: Anketa u php-u sa MySQL10.11.2010. u 07:32 - pre 162 meseci
Nije mi jasno zasto sessionid u bazi? Ako tako ogranicavas koliko puta moze da glasa tj. da li je glasao, nista neces postici sto nebi sa jednostvnim setovanjem kolacica jer se sessionid na client side cuva bas u kolacicu koji kada se obrise php dodeljuje novi.
Ako nemas registrovanje korisnika jedino preko kolacica mozes ograniciti glasanje ali u to se ne mozes uzdati mnogo.
 
Odgovor na temu

Phikret
Fikret Pašović
freelancer
Novi Pazar - Beograd

Član broj: 192541
Poruke: 71
82.117.198.*

Sajt: www.mojestudije.info


+2 Profil

icon Re: Anketa u php-u sa MySQL10.11.2010. u 09:16 - pre 162 meseci
@notnowjohn

E baš sam ovo i hteo da pitam kasnije. Znači taj sessionId u bazi se ni tretira u opšte. To mi je bila prethodna zamisao, međutim, korisnik (radi se o neregistrovanim korisnicima), može da pokrene novu sesiju i da glasa ponovo. Trenutno ograničenje se izvodi na osnovu IP adrese, odnosno ne dozvoljava se korisniku čija se ip adresa već nalazi u bazi da glasa na istoj anketi u narednih 7 dana! Sada, ima manjkavosti i ovaj pristup. Prvo, korisnik može preko nekih proxy-ja da dolazi i da glasa, zatim, može da se desi da ta IP adresa (vrlo mala verovatnoća, ali postoji), u narednih nedelju dana bude dodeljena nekom drugom korisniku koji zaista nije glasao, a ja mu ne dozvolim glasanje. Opet, ta IP adresa može da pripada grupi korisnika u mreži (meni, mom prvom cimeru i mom drugom cimeru i možda komšijama sa srpata niže koji mi mažnjavaju Wireless :)). Znači, ako je bilo ko od nas glasao, ostali su uskraćeni.

Pitanje 1: Kako se ovo rešava u drugim sistemima (joomla, wordpress) i da li postoji neki standard koji treba da se prati ili se pokazao kao najbolji.

Pitanje 2: Vezano za kukije, korisnik vrlo lako može da izbriše kuki, što znači da će moći opet da glasa?
http://www.mojestudije.info
Svako ima pravo da se kreće i da bude kreten


 
Odgovor na temu

notnowjohn

Član broj: 272597
Poruke: 20
*.dynamic.isp.telekom.rs.



Profil

icon Re: Anketa u php-u sa MySQL11.11.2010. u 07:58 - pre 162 meseci
U sutini i sam si odgovorio u neku ruku. :)
IP adresa nije sigurna iz razloga koje si naveo. Kolacici se lako mogu obrisati ili izmeniti. ID sesije isto se nalazi u kolacicu. Ostaje ti da uvedes registrovanje i logovanje kako bi podatak o glasanju sigurno bio vezan za tu osobu (osim ako nema vise naloga, ali to je nesto drugo) i bio upisan u bazi. To je najbolje i najpouzdanije resenje.
Postoji i varijanta sa flash objektom, ali sa tim nisam nesto petljao, poznato mi je samo teorijski, tako da ce ti to verovatno neko drugi da pojasni. Mogu reci samo da se zasniva na tome sto php i flash nedele istu sesiju, pa se kroz neki baner na stranici moze sacuvati podatak koji nece biti obrisan brisanjem js kolacica. Tako nekako valjda.. :)

[Ovu poruku je menjao notnowjohn dana 11.11.2010. u 12:56 GMT+1]
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.mbb.telenor.rs.



+303 Profil

icon Re: Anketa u php-u sa MySQL11.11.2010. u 10:18 - pre 162 meseci
Citat:
notnowjohn: To je najbolje i najpouzdanije resenje.
Najpouzdanije jeste, ali da li je najbolje? Iz korisnickog ugla gledano, nema sanse da se registrujem negde samo zbog ankete. Ako je sajt vec sa registracijom onda ok, a ako nije onda je bolje raditi sa kolacicima. Pa neka glasaju koliko im volja, ako ih ne mrzi da svaki cas brisu kolacice...
 
Odgovor na temu

peca89bg
Beograd

Član broj: 202034
Poruke: 354
95.180.24.*



+6 Profil

icon Re: Anketa u php-u sa MySQL11.11.2010. u 10:55 - pre 162 meseci
pa ako sam sajt zahteva registraciju korisnika zasto bi onda radili poreko ip-a ili kukija? zasto ne recimo preko korisnickog imena ili emaila koji je jedinstven u bazi? prethodno namestimo da samo ulogovani korisnici mogu da glasaju.. moja ideja je da kad korisnik glasa da se u bazu upise vreme i posle ako hoce ponovo da glasa oduzmes sadasnje vreme od onoga kad je glasao i proveris ako je > (npr. 12 sati, 7 dana, itd...) onda moze a else ne moze....
 
Odgovor na temu

notnowjohn

Član broj: 272597
Poruke: 20
*.dynamic.isp.telekom.rs.



Profil

icon Re: Anketa u php-u sa MySQL11.11.2010. u 10:57 - pre 162 meseci
@Milos911

Mislim da smo govorili iz ugla developera. Dakle sa aspekta ogranicenja glasanja, a ne komfora korisnika pri glasanju i jednostavnosti istog. Da bi se nesto dobilo, mora nesto da se zrtvuje (ma sta to bilo) ili da se zadovoljis sa trenutnim stanjem. :)

E da, imas i varijantu sa open id, koja je jako jednostavna.

@peca89bg
To bi bilo kao da imas tenk a napadas sa perorezom. :)
 
Odgovor na temu

Phikret
Fikret Pašović
freelancer
Novi Pazar - Beograd

Član broj: 192541
Poruke: 71
82.117.198.*

Sajt: www.mojestudije.info


+2 Profil

icon Re: Anketa u php-u sa MySQL11.11.2010. u 11:46 - pre 162 meseci
Moje rešenje se svodi na to da u bazi čuvam ip adresu onoga ko je glasao. Ako je opet došao da glasa sa iste ip adrese onda u mysql-u oduzimam vreme poslednjeg glasa sa te adrese i sadašnjeg vremena i ako je prošlo 7 dana od tada, onda mu dozvolim opet da glasa, u suprotnom ne.

Nema registracije korisnika na sajtu i anketa nije nikakva posebna studija :), već jednostavno pitanje vezano za nešto što me interesuje kao feedback od korisnika. Nıje mnogo ni strašno ako neko bude uskraćen da glasa ili neko glasa više puta.

Jedino me još interesovali da li neko već zna kako je to rešeno u joomli, wordpressu, bb-ovima...

I, da onaj problem sa upitom koji sam izneo sam rešio tako što umesto count(*) brojim count(id) glasova zabeleženih u bazi.
Code:
select distinct text, 
count([b]id[/b]) as broj from vote right outer join answer on 

(answer.id = vote.id_answer) where answer.id_poll = '1' group by text order 

by answer.id


http://www.mojestudije.info
Svako ima pravo da se kreće i da bude kreten


 
Odgovor na temu

[es] :: PHP :: Anketa u php-u sa MySQL

Strane: 1 2

[ Pregleda: 8057 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.