Invata PHP cu punctsivirgula.ro

I. Introducere
II. Notiuni de baza
III. Notiuni avansate
IV. Aplicatii
V. Extra
C O N T I N U T
Site de anunturi

Site de administrare anunturi    5 ! 

In cele ce urmeaza va fi explicat mecanismul de functionare a unei aplicatii in care se pot adauga si vizualiza anunturi. Aceasta aplicatie are la baza formularele, intrucat necesita transmiterea unor date de la utilizatori catre serverul web. Pentru mai multe informatii despre formulare, accesati lectia Formulare in PHP.

Pentru a face codul usor de inteles, sunt incluse doar operatiile de baza, fara validari sau prelucrari aditionale.

In acest exemplu, vom folosi si formularul de login descris in lectia Exemple de formulare. Astfel, in urma unei autentificari reusite, utilizatorul va fi redirectionat catre pagina principala de anunturi, numita anunturi.php. Aceasta cuprinde 2 sectiuni: "anunturi existente" si "adaugare anunt".


Sectiunea "Anunturi existente"

In acesta aplicatie simpla, citirea anunturilor existente se face prin intermediul unei functii (citireDate) definite intr-un fisier separat. Pentru acest exemplu, am ales ca datele sa fie stocate temporar in memorie, urmand ca mai tarziu sa vedem cum le putem stoca in fisiere sau intr-o baza de date. Pentru scopul acestui exemplu nu este relevant modul de salvare/citire a datelor, deci nu se va insista asupra acestui aspect.

<?php
// anunturi.php - prima parte
 
$anunturi = citireDate();
 
# verific daca exista anunturi salvate
if( !is_array( $anunturi ) || count( $anunturi ) == 0 ) {
	echo '<strong style="color: orange">Nu exista anunturi</strong>';
 
} else {
 
	# cum exista deja anunturi, le afisez
	echo '<table width="75%" cellspacing="0" border="1">';
 
	# folosesc o structura repetitiva care parcurge vectorul si afiseaza datele lui
	foreach($anunturi as $anunt) {
		echo '<tr>';
		echo '<td>', $anunt[ 'nume' ], '</td>';
		echo '<td>', $anunt[ 'telefon' ], '</td>';
		echo '<td>', $anunt[ 'email' ], '</td>';
		echo '<td>', $anunt[ 'oras' ], '</td>';
		echo '<td width="45%">', $anunt[ 'continut' ], '</td>';
		echo '</tr>';
	}
 
	# afisez cate anunturi exista
	echo '</table><p>', 'Anunturi salvate: ', count( $anunturi ), '</p>'; 
}
?>

Asa cum se poate observa, se verifica mai intai daca exista date ( count( $anunturi ) == 0 verifica numarul de elemente din vector). Daca nu exista anunturi, se afiseaza un mesaj specific.
In caz contrar, atunci cand exista anunturi salvate, acestea sunt afisate cu ajutorul structurii repetitive foreach. Pentru detalii consultati sectiunea de structuri repetitive a site-ului.
In cadrul structurii, este afisat cate un rand de tabel ce contine datele anuntului. La final, sub tabel este afisat un mesaj cu numarul total de inregistrari gasite.


Sectiunea "Adaugare anunt"

Sub lista de anunturi, pe aceeasi pagina este afisat si formularul pentru adaugarea de noi inregistrari. Acesta este de tip POST, care trimite datele catre fisierul anunturi-post.php. Prin apasarea pe butonul "Salveaza anuntul", datele introduse vor fi transmise catre fisierul PHP de pe server si vor fi disponibile prin intermediul variabilei $_POST.

<!-- anunturi.php - a doua parte -->
 
<form method="post" action="anunturi-post.php">
	<input type="text" name="nume" value="" /> Nume contact<br />
	<input type="text" name="telefon" value="" /> Telefon contact<br />
	<input type="text" name="email" value="" /> Email<br />
	<input type="text" name="oras" value="" /> Oras<br />
	Continut: <br />
	<textarea name="continut" rows="10" cols="50"></textarea><br />
 
	<input type="submit" name="trimite" value="Salveaza anuntul" />
	<input type="reset" value="Curata" />
</form>

Fisierul anunturi-post.php

Fisierul PHP care proceseaza datele este inclus mai jos. Ca si in exemplul de login, se fac verificari pentru a fi siguri ca a fost facut un submit. Daca datele sunt disponibile in variabila $_POST atunci acestea sunt salvate cu ajutorul functiei scriereDate. Functia de salvare a datelor va returna intotdeauna true (in aceasta mica aplicatie), deci va fi mereu afisat mesajul de succes.

<?php
// anunturi-post.php
 
# verific daca a fost facut submit
if( isset( $_POST ) && !empty( $_POST[ 'trimite' ] ) ) {
 
	# salvez datele, apelez functia din anunturi-acces-date-sesiune.php
	$rezultat = scriereDate( $_POST );
 
	if( $rezultat ) $mesaj = '<strong>Date salvate cu succes!</strong>';
	else $mesaj = '<strong style="color: red">Datele nu au putut fi salvate</strong>';
 
} else {
 
	# nu a fost facut post, poate cineva a intrat direct din browser pe aceasta pagina?
	$mesaj = 'Nimic de afisat aici.';
}
?>

Testarea aplicatiei

Aplicatia este disponibila pentru testare aici (click pentru a accesa). Datele de login sunt aceleasi (admin / ghiceste-Ma).

Puteti descarca fisierele PHP si sa le incercati pe serverul vostru local.

Descarcati o arhiva cu toate fisierele

Atentie! codul foloseste un mod simplist de verificare a autentificarii, util doar pentru intelegerea codului. Nu folositi acest tip de verificare intr-o aplicatie reala. Un exemplu de autentificare corect gasiti pe pagina Formular de login in PHP. Integrarea acestuia cu aplicatia de anunturi ramane ca exercitiu pentru cititori.

Mezuky a spus Felicitari - 11.12.2012

Ai explicat foarte bine tot, la cat mai multe tutoriale de genul asta :)

marian a spus Salvare - 07.02.2013

unde se salveaza mesajele , adica doresc sa le mai curat din cand in cand dar nu gasesc unde le pot sterge pe cele adaugate?

marian a spus Salvare - 07.02.2013

unde se salveaza mesajele , adica doresc sa le mai curat din cand in cand dar nu gasesc unde le pot sterge pe cele adaugate?

Alexandru a spus Salvare - 08.02.2013

In exemplul de pe site anunturile se salveaza pe sesiune si se pastreaza atata timp cat tii browserul deschis. Cand inchizi browserul se pierd. Mai multe detalii despre sesiuni aici: http://php.punctsivirgula.ro/sesiuni/

In exemplul de pe site vezi fisierul anunturi-acces-date-sesiune.php. Daca ai nevoie de un alt mecanism de salvare (in fisiere sau baze de date) este suficient sa modifici acel fisier.

stefan a spus super tutorial - 25.03.2013

Bravo...!Super acest tutorial,e explicat forte bine..tinetio tot asa...


Adauga un comentariu la aceasta sectiune.