E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Introducere in PHP (24)

XV. Realizarea unui modul de sondaje (Partea I)

07.02.2009
XV. Realizarea unui modul de sondaje (Partea I)

In cursul acestei serii, ti-am oferit un tur al PHP, invatandu-te tot ce trebuie sa stii pentru a te lansa in utilizarea acestui limbaj de programare extrem de puternic. In cele doua capitole finale ale acestei serii de tutoriale, vei putea citi despre implementarea a doua aplicatii PHP din lumea reala. Nu numai ca vei fi introdus in dezvoltarea propriu-zisa a aplicatiilor PHP, dar vei avea ocazia sa testezi toata teoria cu care ai fost indoctrinat in ultimile saptamani.

Total vizualizari: 4698 4698 afisari   |   Comentarii  3   |   Rating   |   (4 voturi)   |   Timp necesar: 25 min 25 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Sursa:  www.devzone.zend.com  
Autor:  Vikram Vaswani
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1 2 »
comenteaza printeaza

Lumea reala

In cursul acestei serii, ti-am oferit un tur al PHP, invatandu-te tot ce trebuie sa stii pentru a te lansa in utilizarea acestui limbaj de programare extrem de puternic. Ai invatat cum sa procesezi siruri, sa scrii functii, sa construiesti obiecte si sa generezi exceptii. Ai mai invatat cum sa citesti datele introduse de utilizatori in formulare, sa cauti prin baze de date si sa utilizezi cookie-uri si sesiuni pentru a memora starea aplicatiei. Nu mai esti bobocul timid intr-ale PHP-ului dinainte, ci un luptator PHP curajos si puternic, gata de a prelua tot ce lumea (sau seful tau) arunca spre tine.

Exista un singur dezavantaj. Desigur ca ai tot armamentul, dar inca nu l-ai utilizat niciodata in lumea reala. Iata rolul acestor parti finale ale PHP 101.

In cele doua capitole finale ale acestei serii de tutoriale vei putea citi despre implementarea a doua aplicatii PHP din lumea reala. Nu numai ca vei fi introdus in dezvoltarea propriu-zisa a aplicatiilor utilizand PHP, dar vei avea ocazia sa testezi toata teoria cu care ai fost indoctrinat in ultimele saptamani.

Intrebari arzatoare

Prima aplicatie este destul de simpla. Este un sistem de votare pentru un site web, care iti permite sa calculezi rapid ceea ce cred vizitatorii tai despre anumite subiecte. Acest mecanism de vot online este destul de popular deoarece iti permite sa afli ce gandesc vizitatorii tai si sa iti faci site-ul cat mai dinamic si interactiv.

Mai mult ca sigur ca ai vazut un astfel de sistem functionand pe multe portaluri web si ai o imagine destul de clara in minte despre cum functioneaza.

Oricum, este un bun exercitiu sa notezi exact ceea ce ar trebui sa execute produsul final inainte de a incepe sa scrii chiar si o singura linie de cod (It-istii numesc asta definirea cerintelor).

  • Trebuie sa existe un mecanism prin care utilizatorul poate vedea o intrebare si apoi poate selecta dintr-o lista de raspunsuri posibile. Acest "vot" trebuie sa fie ulterior captat in sistem si adaugat numarului de voturi aferent acelei intrebari.
  • Trebuie sa existe o metoda prin care administratorul siteului poate adauga noi intrebari sau le poate sterge pe cele vechi. Pentru a stoca aceste intrebari si raspunsuri poti crea un tabel intr-o baza de date SQL, dar e posibil ca administratorul site-ului sa nu fie destul de priceput in SQL pentru a modifica aceste date manual. Asadar, ar trebui furnizata o interfata de tip formular pentru a-i face munca mai simpla.
  • In mod evident, trebuie sa existe o modalitate de a vedea rapoarte ale voturilor furnizate în cazul fiecarei intrebari si a raspunsurilor aferente. Raportul ar trebui sa contina un calcul al voturilor totale inregistrate la o intrebare, dar si o separare a voturilor obtinute pentru fiecare raspuns.

Apare o intrebare importanta: Are vreun rost sa stabilesti numarul de variante disponibile pentru fiecare intrebare? In opinia mea, nu are, deoarece numarul variantelor disponibile se va schimba in cazul fiecarei intrebari. Este mai bina ca acest numar sa fie variabil si sa-i permiti administratorului site-ului sa adauge cate variante considera a fi necesare. Poti oricum defini o limita superioara cu privire la numarul de variante posibile pentru fiecare intrebare - cel mai potrivit ar fi sa pui 5.

Avand aceasta schita in minte, urmatorul pas este sa creezi o baza de date care sustine aceste cerinte.

Designer al bazelor de date

Aceasta este structura tabelelor pe care le vei utiliza pentru aceasta aplicatie, stocata in db.sql:

#
# Structura tabelului ` intrebari ` 
#
CREATE TABLE `questions` (
  `qid` tinyint(3) unsigned NOT NULL auto_increment,
  `qtitle` varchar(255) NOT NULL default '',
  `qdate` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`qid`)
);
 
#
# Structura tabelului ` raspunsuri ` 
#
CREATE TABLE `answers` (
  `aid` tinyint(3) unsigned NOT NULL auto_increment,
  `qid` tinyint(4) NOT NULL default '0',
  `atitle` varchar(255) NOT NULL default '',
  `acount` int(11) NOT NULL default '0',
  PRIMARY KEY  (`aid`)
);

Dupa cum poti observa este destul de simplu: un tabel pentru intrebari si unul pentru raspunsuri. Cele doua tabele sunt conectate prin intermediul unui camp qid. Cu aceasta structura poti avea un numar infinit de raspunsuri la fiecare intrebare. (Nu iti doresti asta - ai prefera ca acest numar sa fie 5 sau mai putin - dar logica implementarii acestei reguli este mai bine situata la nivelul aplicatiei decat la nivelul bazei de date).

Pentru a incepe si pentru a-ti oferi o idee mai buna cu privire la functionarea acestei structuri in lumea reala, insereaza o intrebare in baza de date, impreuna cu trei raspunsuri posibile:

INSERT INTO `questions` VALUES (1, 'Ce versiune de PHP folosesti?', '2008-10-15');
INSERT INTO `answers` VALUES (1, 1, 'PHP 3.x', 0);
INSERT INTO `answers` VALUES (2, 1, 'PHP 4.x', 0);;

Alternativ, poti crea o noua baza de date si sa tastezi source db.sql in command prompt pentru a incarca direct structurile tabelelor si datele.

Sistemul de vot

Dupa ce ne-am ocupat de baza de date, este timpul sa trecem la paginile web pe care le vede utilizatorul. Prima este user.php, care se conecteaza la baza de date pentru a obtine ultima intrebare din tabel si o afiseaza impreuna cu toate variantele de raspuns. Iata codul:

<html>
<head><basefont face = 'Arial'></head>
<body>
 
<?php
 
// include fisierul de configurare
include('config.php');
 
// deschide conexiunea la baza de date
$connection = mysql_connect($host, $user, $pass) or die('EROARE: Nu s-a putut realiza conexiunea!');
 
// selectarea bazei de date 
mysql_select_db($db) or die('EROARE: Nu s-a putut selecta baza de date!');
 
// genereaza si executa interogarea
$query = "SELECT aid, atitle FROM answers WHERE qid = '$qid'";
$result = mysql_query($query) or die("EROARE: $query.".mysql_error());
 
// daca exista inregistrari
if (mysql_num_rows($result) > 0) {
    $row = mysql_fetch_object($result);
 
    // obtine ID intrebare si titlul
    $qid = $row->qid;
    echo '<h2>'.$row->qtitle .'</h2>';
    echo "<form method = post action = 'user_submit.php'>";
    
    // obtine raspunsuri posibile utilizand ID intrebare
    $query = "SELECT aid, atitle FROM answers WHERE qid = '$qid'";
    $result = mysql_query($query) or die("EROARE: $query.".mysql_error());
 
    if (mysql_num_rows($result) > 0) {
 
        // tipareste lista de raspunsuri ca radio buttons
        while ($row = mysql_fetch_object($result)) {
            echo "<input type = radio name = aid value = '".$row->aid."'>'".$row->atitle."'</input><br />";
        }
 
    echo "<input type = hidden name = qid value = '".$qid."'>";
    echo "<input type = submit name = submit value = 'Vote!'>";
    }
    
    echo '</form>';
}
 
// daca nu exista inregistrari, arata mesajul
else {
    echo '<font size="-1">Nu exista intrebari configurate</font>';
}
 
// inchide conexiunea
mysql_close($connection);
 
?>
 
</body>
</html>
Pagina:
1 2 »
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(4 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (3) spune-ti parerea
Pustiu , Marti, 02 Iunie 2009
#3

ibogdan: poti scrie pe adresa de mail contact@e-learn.ro. :)

Raporteaza acest comentariu ca injurios!
ibogdan , Luni, 09 Februarie 2009
#2

Am implementat acest tutorial si pare a functiona corect. Multumesc. Unde as putea sa scriu pentru eventuale completari/imbunatatiri.

Raporteaza acest comentariu ca injurios!
kremlin , Sambata, 07 Februarie 2009
#1

Chiar daca e un exemplu foarte usor, se poate extrapola intr-un mod interesant cu AJAX.

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4335
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4200
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4185
Tutoriale scrise de kheops
kheops Rang utilizator kheops - Mediu
4084
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4025
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Vista Action Script Outlook Lightroom Javascript XML Gimp StyleSheet Photoshop Ruby on Rails COREL DRAW SEO XHTML RoR HTML PSD Illustrator Sony Vegas Excel Java Swift 3D Word Dreamweaver Python PHP Bridge MySQL Powerpoint Verilog Fireworks JSON CSS AJAX Fotografie SWF Flash
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software