/* Am folosit for pentru a trece prin toate elementele array-ului $_SESSION ['nr_buc'] deoarece esle cel mai simplu: toate valorile se trimit prin formular indiferent dacă sunt modificate sau nu. Noi le actualizăm pe toate, cu valorile modificate sau nu.*/
/* Să afişăm acum formularul a cărui acţiune va fi acelaşi fisier:*/
/* lar în final afişăm toate cărţile din această sesiune într-un tabel, folosind câte un rând de tabel
pentru fiecare carte: */
?>
print ’
Titlu
Autor
Pret
Nr buc
Total
' ;
$nrCarti=count ($_SESSION[ 'titlu' ] ) ;
for ($i =0; $i < $nrCarti; $i++)
{
print ’
' ;
print ’
’.$_SESSION['titlu'] [$i] .'
'
print ’
’ .$_SESSION['autor'] [$i] .'
print '
'.$_SESSION['pret'] [$i] .'
";
print ’
’;
/* calculăm şi cât este totalul pentru această carte, pentru Poezii va fi 1 buc x 100000 lei = 100000 lei în timp ce pentru Manualul de geografie va fi 30 buc x 50000 lei = 1500000 lei*/
/*înainte de a încheia loop-ul, vom adăuga această valoare la totalul general. Variabila $totalGeneral va fi iniţializată la prima rulare a loop-ului şi va avea valoarea totalului primei cărţi. La a doua rulare a loop-ului va avea ataşata valoare plus valoarea totalului celei de-a doua cărţi şi aşa mai departe până când se termina loop-ul. Atunci valoarea să va fi suma totalurilor. */ $totalGeneral = $totalGeneral +$total;
}
print ’
' ;
?>
print 'Total General: ' .$totalGeneral;
?> Să recapitulăm, folosind pseudocod, execuţia scriptului nostru. El este în momentul de faţă împărţit în cinci părţi distincte:
- pornirea/reiniţializarea sesiunii;
- codul pentru adăugarea de elemente în variabilele de sesiune;
- codul pentru modificarea numărului de cărţi;
- afişarea formularului pentru adaugare de cărţi;
- afişarea listei de cărţi şi a formularului pentru modificare.
La prima rulare a scriptului, codul va fi executat astfel:
- se porneşte sesiunea;
- se trece peste codul de adăugare deoarece nu a fost apăsat bulonul Adaugă (nu există Variabila $_POST['butonulAdauga']);
- se trece şi peste codul de modificare deoarece nu a fost apasat butonul Modifica (nu există variabila $_POST['butonulModifica']);
- se afişează formularul;
- se afişeaza lista de cărţi;
Dacă utilizatorul a completat formularul pentru adăugare, scriptul este rulat astfel:
- se reiniţializează sesiunea;
- se execută codul de adăugare (există variabila $_POST['butonul Adauga']);
- se trece peste codul de modificare deoarece nu a fost apăsat butonul ,,Modifică" (nu a fost transmisă variabila $_POST[ 'butonulModifica'] deoarece este în alt formular!);
- se afişează formularul;
- se afişează lista de cărţi, inclusiv ultima care tocmai a fost introdusă. Pentru câmpul pret avem un element de tip input care specifică indexul numeric al array-ului, astfel:
- pentru prima carte:
- pentru a doua carte:
şi a treia carte:
:
Indexul numeric dintre parantezele lui nr_buc[] este acelaşi cu cel din variabila de sesiune $_SESSION['nr_buc'] şi astfel va fi util pentru a actualiza valorile stocate în sesiune.
Să presupunem că utilizatorul modifică numărul de bucăţi pentru prima carte, şi în loc să cumpere 10, cumpără doar 7. Atunci când apasă butonul Modifică", execuţia scriptului va fi:
- se reiniţializează sesiunea;
- se trece peste codul de adaugăre (nu există variabila $_POST[ ' butonul Adauga' ]) ;
- se execută codul pentru modificare. Din formular ne-au fost transmise valorile pentru trei cărţi, $_POST['nr_buc'] [O]=7 (modificat în formular), $_POST['nr_buc'][l]=5 şi $_POST['nr_buc'][2]=34.
Trecem prin fiecare element al array-ului folosind for şi actualizăm toate valorile, modificate sau nu (este mai uşor aşa decât să verificăm care au fost modificate şi să le actualizăm doar pe acelea). Atunci:
$_SESSION[‘nr_buc’][0]=$_POST[‘nr_buc’][0];
// 7, se modifică
$_SESSION[‘nr_buc’][1]=$_POST[‘nr_buc’][1];
// 5, nu se modifica dar este actualizat oricum
$_SESSION[‘nr_buc’][2]=$_POST[‘nr_buc’][2];
// 34, nu semodifica dar este actualizat oricum
- se afişează formularul de adăugare;
- se afişează lista de cărţi cu modificările efectuate.
Cel mai indicat ar fi să scrieţi chiar voi scriptul pentru test.php, să îl rulaţi, să vă uitati în sursa documentului HTML (View Source) din când în când (mai ales la formularul de modificare!).
La cumpărături
Pentru coşul nostru de cumpărături vom folosi aproape acelaşi cod, cu singura diferenţă că fromularul pentru adăugarea cărţii în listă se va afla în pagina de carte. Dcschideţi carte.php şi adaugaţi următorul formular, între informaţiile despre carte şi opiniile utilizatorilor:
Acest formular vă arată un singur buton pe pagina, „Cumpara acum", dar trimite şi informaţiile care ne interesează, din câmpurile ascunse (hidden) prin metoda POST. Pe lângă acestea vă mai trimite şi o variabilă de tip GET, $_GET['actiune'] = "adauga"(din URL-ul action în cos.php?actiune=adauga"). Vom folosi această variabilă pentru a delimita codul de adăugare a informaţiilor în variabile de sesiune. Similar, în formularul de modificare a cărţilor din listă vom avea action="cos.php?actiune= modifica". Iată codul pentru cos.php: cos.php
Session_start()
include ("conectare.php") ;
include("page_top.php");
include(”meniu.php");
$actiune = $_GET['actiune'];
/* Dacă este setată variabila $_GET['actiune'] şi valoarea acesteia este "adauga", se execută acest cod: */
if (isset($_GET[actiune’]) && $_GET['actiune'] = = "adauga")
{
$_SESSION['id_carte'] [] = $_POST[’id_carte’];
$_SESSION['nr_buc'][] = 1;
$_SESSION['pret'] []=$_POST[’pret'];
$_SESSION['titlu'] []=$_POST[’titlu'];
$_SESSION[’nume_autor’][] = $_POST[’nume_autor’];
}
/* Dacă este setată variabila $_GET['actiune'] şi valoarea acesteia este ,,modifica", se execută acest cod: */