2008. augusztus 13.

Szavazás háttértitkai

Sokat gondolkoztam azon, hogy lehetne megvalósítani a szavazást. Első ötletem az volt, hogy majd mindenki szépen kommentbe megírja, hogy melyik tetszett neki. Ezt hamar elvetettem. Második az, hogy egy ingyenes szavazós cuccon regisztrálok és azt szúrom be. De gondoltam egy nagyot, és csináltam egy saját szavazós oldalt a honlapomon.
Nagy fába vágtam a fejszém, mert fogalmam se volt, hogy hogy illik ilyet csinálni. Delphiben lazán leprogramoztam volna ezt a szavazást, de php-ben egy kicsit fejtörést okozott. Először keresgéltem ingyenes szavazó scripteket, de azok nem voltak olyanok amilyet én szerettem volna. Aztán megtudtam a nagy keresgélés közepedte, hogy "form"-okkal meg lehet oldani.
Csináltam is egy checkboxos formot is, a form actionének beállítottam a szavazas.php-t ami majd feldolgozza a form eredményeit. Meg is írtam a szavazas.php-t de nem igazán működött. A fájlba nem írta bele, hogy mire szavaztam. 9 óra killódás után megkérdeztem az egyik villamosmérnök.jelölt kollégámat, hogy mit ronthattam el, mert elvileg működnie kellene.
Erre ő kiegészítette a hibás részt egy szóval.


if(isset(sz1_1)) $votes[1]++;
<-- ez volt a hibás

if(isset($_REQUEST['sz1_1'])) $votes[1]++; <-- csak ennyivel kellett kiegészíteni.

A szavazas.php tartalma csak ennyi:

< ?php
@$fp=fopen("szavazo.txt", "r+");
if(!$fp) {
$fp=fopen("szavazo.txt", "w");
fputs($fp, "0|0|0|0|0");
fclose($fp);
header("location: szavazas.php");
} else {
flock($fp, 1); $votes=explode("|", fgets($fp, 1024));
if(isset($_REQUEST['sz1_1'])) {$votes[1]++;
$votes[0]++;}
if(isset($_REQUEST['sz1_2'])) {$votes[2]++;
$votes[0]++;}
if(isset($_REQUEST['sz1_3'])) {$votes[3]++;
$votes[0]++;}
if(isset($_REQUEST['sz1_4'])) {$votes[4]++;
$votes[0]++;}
fseek($fp, 0);
fputs($fp, implode("|", $votes));
flock($fp, 3);
fclose($fp);
}
header("location: szavazasrendben.php");
?>


Persze a < és a kérdőjel közé nem kell szóköz. Ez csak a blogger miatt került oda, hogy ne kódként értelmezze.
Jó kis C nyelvű cuccoska. A többi részt azért nem publikálom már. Azt majd mindenki kitalálja, hogy hogyan legyen, de a motort már megadtam, úgyhogy aki akar saját szavazós cuccot, az ezt lekopizhatja:D

Azzal a megoldással, hogy 1 nap csak egyszer lehessen szavazni, elég sokat bajlódtam. Ezek az sql parancsok. Szerintem tanítani kéne az sql-t rendesen a középiskolában, nem csak úgy hogy az Acces-nek van sql-nézete is. És abban lehet sql parancsokat beírni. Én így tanultam, alig használtuk az sql-t, mindig csak a vizuális felületen csináltuk a lekérdezéseket.

4 megjegyzés:

Endoril írta...

"Szerintem tanítani kéne az sql-t rendesen a középiskolában, nem csak úgy hogy az Acces-nek van sql-nézete is. És abban lehet sql parancsokat beírni. Én így tanultam, alig használtuk az sql-t, mindig csak a vizuális felületen csináltuk a lekérdezéseket."
Aha-aha, nekem is ilyen problémáim vannak, mint írtam erről vala :D
Am meg miez itt oldalt ez a webprogramozási ROVAR? :P

Norbie írta...

Rovar = ízlelt lábú állat:D
Rovar = Rovat elgépeléséből született új kifejezés. De szerintem marad már úgy. Webprogramozási rovar lesz az új topik ha lesz.

Thozoo írta...

Elég nehéz lenne úgy webes mySQL-t tanítani, hogy egy nyomorult FTP nem akar menni egyetlen gépteremben sem. Ugyanakkor, mint ahogyan már én is említettem, a középiskolába szánt SQL-adagot megkapja mindenki, ha megy továbbtanulni, ott megtanulja a többit.

Ne higgyétek, hogy aki profi, az iskolában tanult meg bármi olyat, amiből pénzt tud csinálni. Önképzés, e-book, weboldal-forráskódok tanulmányozása... ez már csak így megy.

Felesleges most bemagolnod az egész SQL-t, meg a PHP-t, mikor 5 év múlva teljesen más fog menni (ld. pl. pár éve dívott a Java, most meg sehol sincs. Ugyanez lesz a PHP-vel, Flash-sel stb.)

Norbie írta...

Én nem akarom bemagolni se az SQL-t se a PHP-t, most is úgy programozok, mint eddig. Internetről, tutoriálból, ha kell akkor kedvencek között megtalálom.