๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑
WEBTOOLS FORUM - RECOMMENDED SETTINGS/SETARI RECOMANDATE: BROWSER=MOZILLA FIREFOX OR IE REZOLUTION=1280x1024| FORUMUL ESTE IN PLINA DEZVOLTARE VA RUGAM SA NE AJUTATI! ► DATA INFIINTARII: 19-07-2008 ►
Lista Forumurilor Pe Tematici
๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑ | Inregistrare | Login

POZE ๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑

Nu sunteti logat.
Nou pe simpatie:
xxIRISxx
Femeie
25 ani
Timis
cauta Barbat
25 - 60 ani
๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑ / » TURORIALE PHP « / Lucrul cu formulare Moderat de AndreyNek, MadaLino
Autor
Mesaj Pagini: 1
MadaLino
Moderator

Din: Hotel Paradis
Inregistrat: acum 17 ani
Postari: 240
Utilizarea scripturilor php în formulare
Odată am avut nevoie într-un formular să fie afişată iniţial data din ziua completării formularului. Mă gândesc că uneori o să aveţi şi voi nevoie de anumite date (de exemplu la o comandă într-un formular să apară într-un câmp doar ceea ce există în acel moment pe stoc, care stoc se găseşte în baza de date mysql de pe server). Iată ce trebuie să faceţi:


Cod:

<form name="form1" method="post" action="pagina_de_test.php">
Data curenta:
<input name="data" type="text" id="data"
value="
<?php
$data=date("d-h-Y",time()); echo $data;
?>
">
<br>
<br>
<input type="submit" name="Submit" value="Trimite">
</form>

După cum observaţi, la valoarea câmpului "data" am introdus un mic script php care citeşte data curentă de pe server şi o timite browserului, acesta o afişează în câmpul de text corespunzător. Puteţi încerca şi voi să citiţi anumite date dintr-un fişier txt sau din baza de date şi să le afişaţi în formular.
Dacă doriţi să apară un mesaj în interiorul câmpului dar să dispară când un utilizator vrea să introducă propriul lui text, codul ar fi cam aşa:


Cod:

<form>
<INPUT name=test id="test"
onclick="this.value='';" value=cauta size=15 maxLength=30>
<INPUT name="submit" type=submit id="submit" value=GO>
</form>

Dacă cineva încearcă să scrie ceva, textul "caută" va dispare şi va fi înlocuit cu mesajul introdus de utilizator.


Preluarea şi verificarea datelor dintr-un formular în aceeaşi pagină cu formularul
De curând cineva mi-a cerut să fac un formular cu un grup de butoane radio care să trimită datele pe e-mail. Simplu spun eu şi mă apuc de treabă. Problema pe care însă am întâmpinat-o a fost că un grup de butoane radio trimite doar o valoare, indiferent ce buton e selectat. Mai jos aveţi codul de la script cu una din rezolvări (eu am gasit 3 variante de rezolvare a acestui script, dar probabil sunt mult mai multe)


Cod:

<?php
if (isset($_POST['Submit']))
// deoarece verificarea se face in aceeasi pagina cu formul
// se verifica inainte daca a fost apasat butonul submit
    {
    // preluare variablile (daca sunt trimise)
    @$vot = $_POST['vot'];
    // verificare
    if ($vot == "" // aici se verifica daca a fost selectat ceva
        {
        echo "<br>Nu ai votat. Incearca din nou.";
        }
    if ($vot == "vot_1" // daca e selectat vot 1 afiseaza si eventual trimite pe e-mail...
        {
        echo "<br>Ai votat numarul 1.";
        }
    if ($vot == "vot_2" // daca e selectat vot 2 afiseaza si eventual trimite pe e-mail...
        {
        echo "<br>Ai votat numarul 2.";
        }
    if ($vot == "vot_3" // daca e selectat vot 3 afiseaza si eventual trimite pe e-mail...
        {
        echo "<br>Ai votat numarul 3.";
        }
    // afisare continutul variabilei vot
    echo "<br>Continutul casutei de vot este: ".$vot;
    }
?>

<html>
<head>
<title>Formular de vot</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<!-- aici incepe formul de votare -->
<form name="formular_vot" method="post" action="test_vot.php">
<p>
<label>
<input type="radio" name="vot" value="vot_1">
vot a</label>
<br>
<label>
<input type="radio" name="vot" value="vot_2">
vot b</label>
<br>
<label>
<input type="radio" name="vot" value="vot_3">
vot c</label>
<br>
<input type="submit" name="Submit" value="Voteaza">
<br>
</p>
</form>
<!-- aici se incheie formularul de vot -->
</body>
</html>

După cum observaţi, scriptul este împărţit în 2 părţi. Prima parte este codul php care verifică dacă a fost apăsat butonul "Submit" şi dacă a fost apăsat se preia valoarea butonului radio şi se verifică. Dacă nu a fost apăsat butonul "Submit" se sare peste codul php şi se trece direct la partea html unde se afişează butoanele radio.
Lucrând recent cu câteva formulare am întâmpinat unele dificultăţi pe care vreau să le descriu mai jos pentru a avea un punct de plecare în cazul în care mai am astfel de probleme. Pentru început o să explic cum se trimit şi cum se preiau datele din formular în aceeaşi pagină. Avem următorul formular:


Cod:

<?php
// aici se verifica daca a fost trimis un camp din formular
if (isset($_POST['camp1'])) // daca a fost trimis
    {
    // se preiau datele trimise
    $camp1 = $_POST['camp1'];
    // se verifica daca a fost scris ceva
    if (empty($camp1))
        {
        echo "<br>Nu a fost introdus nimic";
        }
    else
        {
        echo "<br>A fost introdus: ".$camp1;
        }
    }
if (!isset($_POST['camp1'])) // daca nu a fost trimis
    {
    // se initializeaza variabilele
    $camp1 = '';
    }
?>

<form name="form1" method="post" action="
<?php $_SERVER['PHP_SELF'] ?>
">
<div align="center">
<input name="camp1" type="text" id="camp1" value="
<?php echo $camp1; ?>
">
textfield<br>
<input type="submit" name="Submit" value="Trimite">
</div>
</form>

Să explic puţin codul de mai sus.
Prima oară când se accesează pagina este logic că nu se trimite nici o valoare din formular. Dacă nu ar fi făcută verificarea de setare a unei valori din formular (rândul if(isset($_POST['camp1']) ) şi s-ar fi încercat preluarea direct a valorii (rândul $camp1 = $_POST['camp1']; ) ar fi dat o eroare (dacă aveţi configurat serverul să vă arate toate erorile) În schimb, aşa aţi evitat o eventuală eroare şi scriptul rulează corect indiferent de setările serverului... Observaţi că la preluarea variabilei trimise prin post se foloseşte un mic truc şi anume numele variabilei este acelaşi cu numele câmpului trimis prin POST. În cazul când serverul are setat register_global = off este mai sigur să folosiţi astfel preluarea variabilelor pentru a nu vâ da eroare. Puteţi lucra şi direct cu valoarea POST dar personal prefer să scriu mai puţin folosind de fiecare dată numele variabilei ( $camp1 ) nu tot şirul dat de valoarea POST ( $_POST['camp1'] ) E mai puţin de scris iar dacă folosesc variabila în alte locuri evit erorile generate de lipsa unei ghilimele
(de genul echo 'ceva aici $_POST['camp1']; // aceasta comanda nu va merge pentru ca am uitat sa inchid ghilimelele pe cand asa echo '$camp1'; va merge intotdeauna).
În continuare următorul rând verifică dacă valoarea preluata din formular conţine ceva sau nu. Dacă există ceva atunci afişeaza mesajul împreună cu ceea ce a fost introdus. Mai departe, în caz că se încarcă pagina prima data şi formularul încă nu a fost trimis se iniţializează valoarea variabilei pentru câmpul respectiv. În cazul în care nu se iniţializează valoarea şi se încearcă afisarea ei directă va apărea un mesaj de eroare (dacă serverul e setat să afişeze mesajele de eroare).
Acum, dacă sunteţi lămuriţi ce se întâmplă acolo să trecem mai departe (iar dacă nu, atunci recitiţi articolul şi vedeţi încă odată sursa până înţelegeţi :-P )


Afişarea unui text într-un câmp în form care dispare în cazul în care se introduce ceva în acel câmp
De multe ori, am un formular în care vreau să scriu ceva într-un anumit câmp iar dacă vizitatorul doreste să completeze acel câmp să nu stea să şteargă mesajul meu ci să dispară automat textul introdus de mine şi să rămână doar ce a introdus vizitatorul. Aşa ceva se poate face simplu cu o scurtă funcţie javascript:

Sursa:
   
Exemplu:
<form name="form2" method="post" action="pagina.php">
<input name="textfield" type="text"
value="acest text dispare" onmousedown=" this.value='' ">
</form>
   


Preluarea datelor dintr-un câmp cu select multiplu
În cazul în care în formular trebuie să existe şi un textfield din care se pot selecta simultan mai multe câmpuri, preluarea datelor poate părea mai complicată, dar în realitate este la fel de simplu ca şi până acum, şi anume:


Cod:

<?php
if (isset($_POST['select']))
    {
    foreach ($_POST['select'] as $cheie => $valoare)
        {
        echo "<br>A fost selectata valoarea ".$valoare;
        }
    }
?>

<form name="form3" method="post" action="
<?php $_SERVER['PHP_SELF'] ?>
">
<div align="center">
<select name="select[]" size="5" multiple>
<option value="1">valoarea 1</option>
<option value="2">valoarea 2</option>
<option value="3">valoarea 3</option>
<option value="4">valoarea 4</option>
<option value="5">valoarea 5</option>
</select>
Selectati mai multe valori<br>
<br>
<input type="submit" name="Submit2" value="Submit">
</div>
</form>

Momentan mă opresc aici cu prezentarea trucurilor în lucrul cu formulare, dacă mai aveţi întrebări discutăm în forum.


_______________________________________


" Cui nu-i place cum gandesc multa    ii doresc ! "



pus acum 17 ani
   
Pagini: 1  

Mergi la