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 a II-a)

06.05.2009
XV. Realizarea unui modul de sondaje (Partea a II-a)

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: 5759 5759 afisari   |   Comentarii  0   |   Rating   |   (1 vot)   |   Timp necesar: 30 min 30 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

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

Primul lucru pe care trebuie sa-l faci este sa validezi datele trimise de utilizator. Liniile de cod de la inceputul scriptului fac acest lucru verificand titlul intrebarii si daca au fost introduse cel putin doua raspunsuri. Functia trim () elimina spatiile si functia sizeof () verifica daca exista cel putin doua raspunsuri valide in sirul $_POST['options']. Orice greseala este semnalata printr-un mesaj de eroare care intrerupe executia scriptului.

In cazul in care toate datele sunt corecte, urmatorul pas este sa le salvezi in baza de date. Mai intai, intrebarea este introdusa in tabelul questions printr-o interogare INSERT. ID-ul generat de aceasta interogare este returnat de functia mysql_insert_id() si folosit pentru a face legatura dintre intrebare si variantele de raspuns salvate in tabelul answers. Deoarece exista mai multe variante de raspuns pentru fiecare intrebare, poti folosi o bucla foreach() ca sa execute o interogare INSERT pentru fiecare raspuns in parte.

Ceea ce am discutat pana acum se ocupa de adaugarea intrebarilor si raspunsurilor. Dar cum ramane cu stergerea lor?

Intoarce-te la admin.php. Vei vedea ca in dreptul fiecarei intrebari afisate apare un link sterge, care te redirectioneaza la fisierul delete.php. Poti observa ca id-ul intrebarii este transmis ca parametru in cadrul URL-ului. Astfel, delete.php poate folosi acest parametru pentru a identifica intrebarea corespunzatoare din tabelul questions, dar si pentru a returna raspunsurile (ID-ul intrebarii este acelasi pentru ambele tabele). Utilizand acest id, este executata o interogare DELETE care sterge datele din cele doua tabele.

Iata continutul fisierului delete.php:

<html>
<head><basefont face = 'Arial'></head>
<body>
 
<h2>Administration</h2>
 
<?php
 
if ($_GET['qid'] && is_numeric($_GET['qid'])) {
    // include fisierul de configuratie
    include('config.php');
    
    // deschide conexiunea bazei de date
    $connection = mysql_connect($host, $user, $pass) or die('EROARE: Nu s-a putut realiza conexiunea!');
    
    // selecteaza baza de date
    mysql_select_db($db) or die('EROARE: Nu s-a putut selecta baza de date!');
    
    // executa interogarea pentru stergerea raspunsurilor
    $query = "DELETE FROM answers WHERE qid = '".$_GET['qid']."'";
    $result = mysql_query($query) or die("EROARE: $query. ".mysql_error());
 
    // executa interogarea pentru stergerea intrebarii
    $query = "DELETE FROM questions WHERE qid = '".$_GET['qid']."'";
    $result = mysql_query($query) or die("EROARE: $query. ".mysql_error());
 
    // inchide conexiunea
    mysql_close($connection);
 
    // printeaza mesajul in caz de succes
    echo "Sondajul a fost sters din baza de date! Click <a href = 'admin.php'>aici</a> pentru a reveni la pagina principala ";
}
else {
    die('EROARE: Datele transmise nu sunt corecte!');
}
 
?>
 
</body>
</html>

Poti observa ca ID-ul intrebarii transmis prin GET (qid) este utilizat de catre doua interogari DELETE pentru a sterge inregistrarile corespunzatoare.

Generarea rapoartelor

Aceasta este probabil cea mai interesanta sectiune din acest tutorial. Deoarece un sondaj presupune colectarea unui numar de voturi pentru fiecare raspuns in parte, vei avea nevoie de un raport care sa iti spuna de cate ori a fost ales un anumit raspuns.

Astfel, scriptul de mai jos utilizeaza id-ul unei intrebari pentru a extrage numarul de voturi din baza de date si pentru a calcula procentajul pentru fiecare varianta de raspuns.

Iata cum arata toate aceste lucruri in PHP:

<html>
<head><basefont face = 'Arial'></head>
<body>
 
<h2>Administration</h2>
 
<?php
 
if ($_GET['qid'] && is_numeric($_GET['qid'])) {
    // include fisierul de configuratie
    include('config.php');
 
    // deschide conexiunea cu baza de date
    $connection = mysql_connect($host, $user, $pass) or die('EROARE: Nu s-a putut realiza conexiunea!');
 
    // selecteaza baza de date
    mysql_select_db($db) or die('EROARE: Nu s-a putut selecta baza de date!');
 
    // extrage intrebarea 
    $query = "SELECT qtitle FROM questions WHERE qid = '".$_GET['qid']."'";
    $result = mysql_query($query) or die("EROARE: $query. ".mysql_error());
    $row = mysql_fetch_object($result);
    echo '<h3>'.$row->qtitle.'</h3>';
 
    // reseteaza variabilele
    unset($query);
    unset($result);
    unset($row);
 
    // descopera daca au fost inregistrate voturi
    $query = "SELECT qid, SUM(acount) AS total FROM answers GROUP BY qid HAVING qid = ".$_GET['qid'];
    $result = mysql_query($query) or die("EROARE: $query. ".mysql_error());
    $row = mysql_fetch_object($result);
    $total = $row->total;
 
    // daca au fost inregistrate voturi
    if ($total > 0) {
 
        // reseteaza variabilele
        unset($query);
        unset($result);
        unset($row);
 
        // extrage numarul de voturi pentru fiecare raspuns 
        $query = "SELECT atitle, acount FROM answers WHERE qid = '".$_GET['qid']."'";
        $result = mysql_query($query) or die("EROARE: $query. ".mysql_error());
 
        // daca exista inregistrari
        if (mysql_num_rows($result) > 0) {
 
            // afiseaza cap de tabel
            echo '<table border=1 cellspacing=0 cellpadding=15>';
 
            // parcurge vectorul cu raspunsuri si
            // afiseaza procentajele si numarul de voturi 
            while($row = mysql_fetch_object($result)) { 
                echo '<tr>';
                echo '<td>'.$row->atitle.'</td>';
                echo '<td>'.$row->acount.'</td>';
                echo '<td>'.round(($row->acount/$total) * 100, 2).'%</td>';
                echo '</tr>';
            }
 
            // afiseaza numarul total de voturi 
            echo '<tr>';
            echo '<td><u>TOTAL</u></td>';
            echo '<td>'.$total.'</td>';
            echo '<td>100%</td>';
            echo '</tr>';
            echo '</table>';
        }
    }
    // daca nu s-au inregistrat voturi
    else {
        echo 'Nu exista voturi';
    }
 
    // inchide conexiunea
    mysql_close($connection);
}
else {
    die('EROARE: Datele transmise nu sunt corecte!');
}
 
?>
 
</body>
</html>
Pagina:
« 1 2 3 »
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(1 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
5565
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
5540
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
5385
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
5365
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
5120
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Javascript COREL DRAW Python XHTML Lightroom Vista Illustrator PHP StyleSheet AJAX Excel Java Fireworks Gimp MySQL HTML Fotografie XML Verilog RoR Outlook Swift 3D Photoshop CSS Powerpoint Word Ruby on Rails Action Script JSON Bridge PSD Sony Vegas SWF SEO Dreamweaver 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