Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Gallup (graafinen)

Sivun loppuun

Arska [04.03.2003 21:47:47]

#

Paranneltu versio snakarin tekemästä galluppi jutusta, koska sen lähdekoodiin ei ole vieläkään kukaan tehnyt korjausta, että saisi siinä näkymään ne palkit ja juuri sen toiminnon käyttöön saattamisessa on ollut osalla ongelmia.

Muuten galluppi on ollut toimiva ja kätevä... kiitos siitä snakarille. ;)

Ensinnäkin sinun tarvitsee tehdä 1x1 kokoinen kuva, johon viitataan koodissa. Tässä tapauksessa tee vaikka tiedosto nimeltä "piste.gif"

Tämän avulla saat gallupin, joka muistuttaa tämän ohjelmointiputkan galluppia.

<?php
########### g a l l u p ##########
########### by: snakari ##########
##### http://snakari.cjb.net #####
##################################
#     säilytä tekijän nimi!      #
##################################
# tee tiedosto "kysymykset.txt"  #
# ja anna sille oikat 777        #
##################################
#  tiedosto missä kysymykset on  #
$tiedosto="kysymykset.txt";
##################################
#   tee tiedoston sisällöksi:    #
#   kysymys                      #
#   vastaus 1|0                  #
#   vastaus 2|0                  #
#   ...                          #
##################################

$f=@file($tiedosto);

if (!$vastaus)
{
  if ($HTTP_COOKIE_VARS["gallup_vastaus"]!==trim($f[0]))
  {
   # tulostetaan kysymykset
   echo '<b>'. trim($f[0]) .'</b><br>';
   for($rivi=1; $rivi<count($f); $rivi++)
   {
       $pilko=explode("|", trim($f[$rivi]));
       echo '<a href="'. $PHP_SELF .'?vastaus='. $rivi .'">'. $pilko[0] .'</a><br>';
   }
  }
  else
  {
    # tulostetaan vastaukset
    echo '<b>'. trim($f[0]) .'</b><br>';
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      $yht=$yht+$pilko[1];
    }
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      echo $pilko[0] .' ('. @intval($pilko[1]/$yht*100) .'%) <br>
<img src="piste1.gif" width="'. @intval($pilko[1]/$yht*100+1) .'" height="7" border="0"> <br>
';

    }
    echo 'Vastauksia yhteensä: '. $yht;
  }
}
if ($vastaus && $HTTP_COOKIE_VARS["gallup_vastaus"]!==trim($f[0]))
{
  if ($vastaus>count($f) or $vastaus<1)
  {
    # jos vastaus on muunneltu
    echo 'eipäs onnistunut!';
  }
  else
  {
      # lisätään 1 vastaukseen
      $lis=explode("|", trim($f[$vastaus]));
      if ($lis[1]) { $lis[1]++; }
      else { $lis[1]=1; }
      $f[$vastaus]=$lis[0] ."|". $lis[1] ."\n";
      $filu=fopen($tiedosto,"w");
      foreach ($f as $rivi)
      {
      fwrite($filu, $rivi);
      }
      fclose ($filu);
      setcookie("gallup_vastaus",trim($f[0]),time()+ 60 * 60 * 24 ); #Eväste voimassa vuorokauden
      header ("Location: ". $PHP_SELF);
  }
}
?>

Kysymysten lähdekoodi ja esimerkki

Vaihtoehtoja voi olla rajattomasti, mutta kysymyksiä vain yksi. (tallenna tiedosto "kysymykset.txt" tiedostoksi)

Käytkö ohjelmointiputkan sivuilla?
Kyllä
En

Kirjoita kysymys tähän
Vaihtoehto1
Vaihtoehto2
Vaihtoehto3

Kirjoita taas kysymys tähän
Vaihtoehto X
Vaihtoehto Y

Arska [04.03.2003 22:03:39]

#

Toivottavasti tämä pieni parannus helpottaisi ja auttaisi saamaan paremman sekä näyttävämmän gallupin.

arcatan [05.03.2003 17:10:44]

#

Tuota CHMOD 777 voisi muuttaa esim 664 :ksi. Ja olisit voinut nyt sitten tehdä graafisesta galluppista vaikkapa GD-libin avulla toimivan jolloin siitä vasta "graafinen" tulisikin ;)

Tumpi [05.03.2003 18:50:59]

#

Turha tehdä 1x1 kuvaa, tulee vaan lisää latausaikaa...

Arska [05.03.2003 20:11:50]

#

Tumppi >> Hyvä huomio ;)

Parempi vaihtoehto, jos ei halua väsätä sitä kuvaa itse:
Sen kuvan voi tietty vaikka ottaa täältä ohjelmointiputkan gallupista tallentamalla sen. Sehän kävi sillain kun äänestää, ni painaa oikeaa hiiren korvaa sellaisen palkin päällä ja sit valitsee "Tallenna kuva nimellä..." ja sen kuvan nimen pitäisikin olla "piste.gif" (807 tavua). Sitä voikin sitten muutella mieleisekseen mm. väriä vaihtamalla.

Arska [05.03.2003 20:27:12]

#

Sori... nimi oli väärin.

Siis:

Tumpi >> Hyvä huomio ;)

Parempi vaihtoehto, jos ei halua väsätä sitä kuvaa itse:
Sen kuvan voi tietty vaikka ottaa täältä ohjelmointiputkan gallupista tallentamalla sen. Sehän kävi sillain kun äänestää, ni painaa oikeaa hiiren korvaa sellaisen palkin päällä ja sit valitsee "Tallenna kuva nimellä..." ja sen kuvan nimen pitäisikin olla "piste.gif" (807 tavua). Sitä voikin sitten muutella mieleisekseen mm. väriä vaihtamalla.

snakari [05.03.2003 20:50:13]

#

sielä sen gallupin kommenteissa kyllä pitäisi olla se graafinen juttukin. ja muutenkin.. ei olis tarvinu välttämättä tehä uutta vinkkiä, se korjaushan on 1 rivi suunnilleen

Tumpi [05.03.2003 21:10:54]

#

Arska, meinaan et turha ladata mitään kuvaa, laittaa vaan img-tagin ilman scr:tä, ja kuvan väri sitten sen taustakuvaksi... ymmärrät varmaan.

Arska [06.03.2003 00:18:06]

#

Tumpi:
Niin joo... tuo onkin parempi tapa toteuttaa se palkki juttu, kun ei tarvitse kuvatiedostoa luoda.

Snakari:
Niinhän siellä oli se graafinen juttu, mutta hieman epäselvästi, kun sitä ei ollut laitettu lähdekoodi muotoon, ainoastaan kommenttina. Sen takia heitin sen tänne uudeksi vinkiksi vaikkakin tekijänoikat siihen lähdekoodiin kuuluvatkin edelleen sulle. Samoin huomasin, et siihen tarvittiin <br> tagi yhteen kohtaan, että se näyttää ne palkit oikein, koska Mv oli sitä ongelmaa kommentoinut.

Arska [06.03.2003 00:20:28]

#

Siitä edellisestä kommentista jäi pois br tagi kohta, ku oli väärin. Siis, siihen lähdekoodiin on lisätty yks br tagi, et se pilkkoo ne palkit omille riveille.

Tumpi [09.03.2003 18:40:18]

#

Tossa on toi

Vaihtoehto1
Vaihtoehto2
Vaihtoehto3

niin eikös snakarin originaalissa se ollu

Vaihtoehto1|0
Vaihtoehto2|0
Vaihtoehto3|0
?

Arska [10.03.2003 13:01:29]

#

Saahan sen noinkin, mutta ainakin itelläni se lisää noi nollat ja äänestysten lukumäärät sinne perään automaattisesti, kun laitoin vain näin:

Vaihtoehto1
Vaihtoehto2
Vaihtoehto3

Kun äänestin ekaa vaihtehtoa, niin tekstitiedostoon oli kirjoitettu näin:

Vaihtoehto1|1
Vaihtoehto2|0
Vaihtoehto3|0

Mutta en väitä, etteikö tuo olisi hyvä tapa tehdä noin, se toimii molemmilla tavoilla.

empty- [02.05.2003 14:59:00]

#

mulla on vähän ongelmia, näissä kahdessa rivissä on jotain vikaa??? mitä:

setcookie("gallup_vastaus",trim($f[0]),time()+9999999);
header ("Location: ". $PHP_SELF);

auttakaa php nyypiä

OzKu1 [28.05.2003 16:33:34]

#

siis millä nimellä se kuva piti tallentaa?

Arska [19.07.2003 17:27:24]

#

piste.gif, mutta sitä voi muutta kooodissa tästä kohtaa:

'<img src="piste1.gif" width="'. @intval($pilko[1]/$yht*100+1) .'" height="7" border="0"> <br>'

Tuo on puolessa väliä sitä koodirimpsua.

Arska [19.07.2003 17:57:16]

#

Hieman muutin tuohon koodiin evästeen aikaa, jolloin eväste on voimassa vuorokauden äänestyksestä koska se vanha arvo "+99999" oli aika pitkä aika evästeen voimassaoloajaksi.

empty-:lle, joka kyseli evästeen voimassaoloajasta:

Helpoiten ajan voi laskea näin:

time()+ sekunnit * minuutit * tunnit * vuorokaudet, eli noita soveltamalla on mahdollisuus määrittää evästeen voimassaolo aika.
Esim. Evästeen saisi näin pysymään vuoden voimassa:
time()+ 60 * 60 * 24 * 365 .

Mutta jos vielä jotain jäi epäselväksi, katso tämä hyvä opas: https://www.ohjelmointiputka.net/oppaat_nayta.php?tunnus=phpj7

Mutta jos joku tuossa vinkissäni pissii ni korjatkaa muut, mutta toivon että olen ymmärtänyt asian oikein. :D

Kesän jatkoja vaan kaikille!! :)

djMiksu [06.12.2003 11:16:31]

#

Ehkä ton kuvan vois korvata tablella...
Tyyliin näin:

'<TABLE bgcolor="#FF6633" height="10" width="'. @intval($pilko[1]/$yht*100+1) .'"><TR><TD> </TD></TR></TABLE>'

tepa [22.01.2004 20:12:14]

#

Tietääkö joku miten sais ton gallupin toimimaan samalla lailla kuin näillä sivuilla eli avaamaan äänestettäessä uudelleen saman sivun, jolle gallup on upotettu, kun mulla se avaa äänestystuloksen tyhjälle sivulle.

aER0 [13.04.2004 15:22:45]

#

Miksiköhän tää ei toimi omalla abyss servulla mutta mbnetissä toimii?

aER0 [13.04.2004 15:34:15]

#

sellasenaan ei tee mitään vaikka klikkailen ja sitku pistin includella ni tulee "Warning: Cannot modify header information - headers already sent by (output started at..." jne

aER0 [13.04.2004 15:34:58]

#

<flood> joka on " setcookie("gallup_vastaus",trim($f[0]),time()+ 60 * 60 * 24 ); #Eväste voimassa vuorokauden
header ("Location: ". $PHP_SELF); "

</flood>

MiikkaV [31.05.2004 09:05:33]

#

Mäkin ihmettelen sitä ku joissain servereissä tä toimii ja toisis taas ei.

Andias [11.07.2004 18:04:29]

#

Eikö oo olemassa HTML kielistä Galluppia että vaikka tulos sivu olis PHPlla koodattu mutta muuten HTML kielellä?

Juice [15.07.2004 19:54:26]

#

No voithan sinä kyhätä sellaisen, eli vaikka joku linkki vie sivulle poll.php?click=1
ja toinen poll.php?click=2
ja sitten jotenkin tallentaa ne ja esittää ne. Harjoitustehtäväksi jää sinulle. Ei ole tullut minulle vastaan.

makeuu [30.10.2004 20:44:34]

#

Miks vain vuorokauden :o ?

SysRq868 [07.11.2004 12:41:09]

#

Andias: www.bravenet.com

MysteriO [02.01.2005 11:44:01]

#

tää on hyvä! kerranki helppo käyttöne galluppi :p

Tumpi [09.01.2005 20:25:00]

#

Itseäni lainaten:

lainaus:

Arska, meinaan et turha ladata mitään kuvaa, laittaa vaan img-tagin ilman scr:tä, ja kuvan väri sitten sen taustakuvaksi... ymmärrät varmaan.

Tyhmä idea.

plikk [29.01.2005 11:36:02]

#

Mikä on vikana? Tulee tälläinen teksti kun vastaa kysymykseen:

Warning: Cannot modify header information - headers already sent by (output started at **********:10) in *********** on line 136

Warning: Cannot modify header information - headers already sent by (output started at ********) in ****** on line 137

SysRq868 [14.02.2005 15:57:06]

#

Sul on jotain läppää ennen sitä gallupin koodia.

Eli ei näin:

<html>
jou jou
-- galluppi --

vaan näin:

-- galluppi --
<html>
jou jou

Grof [08.03.2005 23:43:34]

#

Saiskohan tuon evästeen voimaan vaikka viikoksi? Miten?

SysRq868 [02.05.2005 15:47:53]

#

Saa. Vaihtamalla rivin

setcookie("gallup_vastaus",trim($f[0]),time()+ 60 * 60 * 24 );

riviin:

setcookie("gallup_vastaus",trim($f[0]),time()+ 60 * 60 * 24 * 7 );

Matrack [08.08.2005 02:11:24]

#

Miten tuon gallupin sijaintia voi muuttaa?
Kun en saa toimimaan muuten kuin laittamalla aivan sivun alkuun, kuten SysRq868 neuvoo.

Eihän sillä tee mitään jos sitä pitää pitää siellä sivun ylälaidassa :/

zankari [13.08.2005 18:54:15]

#

Voiskos joku kertoa aloittelijalle, miten noi "777 oikat" laitetaan?

sieni [22.11.2005 12:47:37]

#

Warning: Cannot modify header information - headers already sent by ******

mitäs tämä meinaa?

prakka [11.08.2006 19:25:29]

#

Kuinkas tämän saa toimimaan dynaamisessa sivupohjassa?

Codeprofile [09.12.2006 17:40:37]

#

lainaus:

Voiskos joku kertoa aloittelijalle, miten noi "777 oikat" laitetaan?

laita ne oikat FTP-ohjelmalla. FileZilla on ainakin hyvä.

melod [26.05.2008 00:20:30]

#

Tää ei toimi? :S ei näytä niitä tuloksia :OMG http://melooni.servut.us/lanikellari/gallup.php

Terzis [06.10.2009 23:39:28]

#

Kiitos toimivasta koodista. Muutin koodia siten, että se antaa virheilmoituksen jos yrittää laittaa vastauksen arvoksi enemmin kuin 3, koska muuten tiedostoa pystyi näköjään kasvattamaan kuinka isoksi tahansa... ja laitoin keksin pysymään viikon voimassa. www.ohjelmistot.net --> kuukauden kysymys.

Tomppa32 [13.06.2010 16:41:44]

#

Tuolta löytyy oma muokkaukseni koodista: http://koti.mbnet.fi/tompz/index.php?l=source/gallup


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta