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
Toivottavasti tämä pieni parannus helpottaisi ja auttaisi saamaan paremman sekä näyttävämmän gallupin.
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 ;)
Turha tehdä 1x1 kuvaa, tulee vaan lisää latausaikaa...
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.
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.
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
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.
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.
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.
Tossa on toi
Vaihtoehto1
Vaihtoehto2
Vaihtoehto3
niin eikös snakarin originaalissa se ollu
Vaihtoehto1|0
Vaihtoehto2|0
Vaihtoehto3|0
?
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.
mulla on vähän ongelmia, näissä kahdessa rivissä on jotain vikaa??? mitä:
header ("Location: ". $PHP_SELF);
auttakaa php nyypiä
siis millä nimellä se kuva piti tallentaa?
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.
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.
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!! :)
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>'
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.
Miksiköhän tää ei toimi omalla abyss servulla mutta mbnetissä toimii?
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
<flood> joka on " setcookie("gallup_vastaus",trim($f[0]),time()+ 60 * 60 * 24 ); #Eväste voimassa vuorokauden
header ("Location: ". $PHP_SELF); "
</flood>
Mäkin ihmettelen sitä ku joissain servereissä tä toimii ja toisis taas ei.
Eikö oo olemassa HTML kielistä Galluppia että vaikka tulos sivu olis PHPlla koodattu mutta muuten HTML kielellä?
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.
Miks vain vuorokauden :o ?
Andias: www.bravenet.com
tää on hyvä! kerranki helppo käyttöne galluppi :p
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.
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
Sul on jotain läppää ennen sitä gallupin koodia.
Eli ei näin:
<html> jou jou -- galluppi --
vaan näin:
-- galluppi -- <html> jou jou
Saiskohan tuon evästeen voimaan vaikka viikoksi? Miten?
Saa. Vaihtamalla rivin
riviin:
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 :/
Voiskos joku kertoa aloittelijalle, miten noi "777 oikat" laitetaan?
Warning: Cannot modify header information - headers already sent by ******
mitäs tämä meinaa?
Kuinkas tämän saa toimimaan dynaamisessa sivupohjassa?
lainaus:
Voiskos joku kertoa aloittelijalle, miten noi "777 oikat" laitetaan?
laita ne oikat FTP-ohjelmalla. FileZilla on ainakin hyvä.
Tää ei toimi? :S ei näytä niitä tuloksia :OMG http://melooni.servut.us/lanikellari/gallup.php
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.
Tuolta löytyy oma muokkaukseni koodista: http://koti.mbnet.fi/tompz/index.php?l=source/
Aihe on jo aika vanha, joten et voi enää vastata siihen.