Inserare date dintr-un formular pe site

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
alexlemnean
Mesaje:14

Inserare date dintr-un formular pe site

Salut. Ma chinui de cateva zile sa creez un script care sa permita inserarea datelor dintr-un formular pe site. Mai exact vreau ca atunci cand user-ul apasa "Submit" datele introduse in formular sa fie postate automat in site, pe o pagina anume. Mentionez ca site-ul este creat in html si php.
Sau se poate acest lucru?

Multumesc anticipat. :)

MarPlo Mesaje:4343
Salut
Acele date din formular trebuie intai salvate in fisiere pe server, sau intr-o baza de date, iar pe baza datelor din adresa URL (GET) sa fie preluate de un script php care le afiseaza in pagina.
Ca sa faci acest script trebuie sa stii sa lucrezi cu $_GET si $_POST, sa salvezi date in MySQL sau in fisiere pe server si apoi sa le preiei.
Astea le poti invata din lectiile si tutorialele din Cursul PHP-MySQL de pe site. Poti incepe cu lectia Utilizare formulare HTML cu PHP, $_GET si $_POST si in continuare cu cele care mai sunt pe site.
Unde nu te descurci in scriptul pe care-l faci, poti sa postezi pe form codul scris de tine.

alexlemnean Mesaje:14
Am creat formularul si am incercat cu file_get_contents si file_put_contents ca sa imi preieie dintr`un fisier si sa mi`l innsere in altul, dar nu imi dau seama cum sa salvez datele dupa executarea formularului . :|

MarPlo Mesaje:4343
Datele dintr-un camp de formular se preia in PHP cu (daca are method="post"):

Cod: Selectaţi tot

$data = $_POST['nume_camp'];
 
Ca sa salvezi in fisier pe server, se poate cu (daca directorul unde salvezi are permisiuni CHMOD de scriere [vezi pe site sau pe internet despre CHMOD]):

Cod: Selectaţi tot

if(file_put_contents('cale/fisier.htm', $data)) echo 'Date salvate';
else echo 'Nu poate salva datele';
 
- Daca ai posta si codul pe care l-ai scris, poate stia cineva sa dea un raspuns mai ajutator.

alexlemnean Mesaje:14
Am reusiit ceva cevaa :"> .
Uite aici codurile :

form.html

Cod: Selectaţi tot

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ro" lang="ro">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title> Test-Form </title>
</head>
<body>
<form action="test-form.php" method="POST" name="formular">
Nume:<input type="text" name="nume" />
<br />Email:<input type="text" name="email" />
<br />Parola:<input type="password" name="parola" />
<br /><input type="submit" name="submit" value="Trmite datele" />
</form> 
</body>
</html>
test-form.php

Cod: Selectaţi tot

<?php
$nume = $_POST['nume'];
$email = $_POST['email'];
$parola = $_POST['parola'];

echo "Felicitari $nume te`ai inregistrat cu succes !";

if(file_put_contents('preluare.php', $nume)) echo 'Datele tale au fost adaugate !';
else echo 'A aparut o eroare si din pacate datele tale nu au putut fi adaugate ! Revino mai tarziu !';

$file = 'detalii.php';
$context = file_get_contents('preluare.php');       // Preia continutul fisierului
$context .= '';

file_put_contents($file, $context);       // Adauga continutul din $context in $file

?>
Acuma am cateva nelamuriri :
-in fisierul 'preluare.php' unde imi salveaza datele din formular, de ce nu raman salvate ? Adica dupa fiecare apasare de submit ele se sterg si raman doar cele mai recente. Deci eu vreau sa pastrez acele date atat in fisierul 'preluare.php' cat si in fisierul 'detalii.php' care le afiseaza in pagina pe site. ;
-cum fac ca in fisierul 'test-form.php' la functia de preluare sa imi prelueze mai multe campuri(nume, email etc.). Am scris asa
if(file_put_contents('preluare.php', $nume, $email, $parola)) echo 'Datele tale au fost adaugate !';
else echo 'A aparut o eroare si din pacate datele tale nu au putut fi adaugate ! Revino mai tarziu !';

dar imi dadea eroare :|.

\*Multumesc pentru ajutor !

steell Mesaje:190
Datele nu raman salvate pentru ca functia file_put_contents() inlocuieste tot continutul fisierului cu cel nou. Daca vrei sa adaugi continut nou foloseste fwrite() iar cand deschizi fisierul cu fopen() folosesti argumentul a+
La problema a doua, greseala este ca ai adaugat prea multe argumente functiei file_put_contents().
Poti sa le concatenezi pe toate intr-un sir si il adaugi o singura data, sau folosesti fwrite cum am zis mai sus.
Invata urmatoarele 4 lectii incepand cu aceasta:
https://marplo.net/php-mysql/fisiere.html" target="_blank

Subiecte similare