Intrucat deja ma scris cateva tutoriale despre PHP si MySql, cred ca a venit vremea sa arat si ceva interesant, chiar si pentru cei ce au putina experienta in PHP.
Urmatorul scrip presupune existenta unei tabele in MySql, nu conteaza prea mult structura, doar ca avem multe campuri in ea, sa spunem de exempu tabela `Users` ce contine `id` , `username`, `email`, `nume`, `prenume`, `oras`, tara` si multe alte detalii.
Pentru a adauga date noi in campurile din aceasta tabela, este foarte simplu, scriem un query insert si am terminat. Dar ce facem in situatia in care avem in locul celor peste 6 campuri de detalii, un singur camp ce se numeste “value”, structura ar fi cam asa: `id`, `value_index`, `value`; o astfel de structura puteti intalni in Magento, o aplicatie gratuita pentru magazine virtuale. In situatia aceasta trebuie sa facem un query pentru fiecare camp, asta ar insemna 6 queri-uri.
'INSERT INTO `Users` (`id`, `value_index`, `value`) VALUES (NULL, "'.$username_index.'", "'.$username.'")';
//cod...
'INSERT INTO `Users` (`id`, `value_index`, `value`) VALUES (NULL, "'.$tara_index.'", "'.$tara.'")';
Plus ca nu am scris faptul ca fiecare query trebuie rulat de PHP prin functia mysql_query(), si verificari, toate ar incape pe o pagina, iar scopul nostru este sa scriem cod mai putin si mai bun (reutilizabil). Daca avem nevoie in 3 pagini din aplicatie sa introducem date in aceasta tabela, deja inseamna o pagina de cod multiplicata de 3 ori, si nu dorim asa ceva.
Avem doua variante, in functie de cum dorim sa lucram: 1. punem totul intr-o functie:
function query($variabila_index,$variabila){
$sql = 'INSERT INTO `Users` (`id`, `value_index`, `value`) VALUES (NULL, "'.$variabila_index.'", "'.$variabila.'")';
$result = mysql_query($sql);
if(!$result){
die('Query: '.$sql.' failed');
}
}
Acum sa consideram ca vrem ca functia sa returneze id-ul pe care tocmai l-a primit insertul, asta ar insemna ca inainte de acolada de inchidere a functiei sa adaugam return mysql_insert_id();
Asta ar insemna ca de fiecare data cand apelam functia sa avem ceva de genul $id_variabila = query($variabila_index,$variabila); Am reusit sa facem 2 lucruri in acelasi timp in functie, dar oare putem 3?
Ce ar fi sa introducem 2 array-uri care sa contina variabilele si sa modificam putin functia si sa consideram ca face parte dintr-o clasa
class Ceva{
private $username; private $email; private $prenume; private $nume; private $oras; private $tara;
private $variabile = array('username','email','nume','prenume','oras','tara');
private $variabile_index = array('2','5','3','7','8','6'); //valori ce pot fi extrase prin alta functie dintr-o tabela, ele vor fi extrase cum vrem noi, sa corespunda cu valorile din vectorul $variabile
function query(){
$i=0;
foreach($this->variabile as $key){
$sql = 'INSERT INTO `Users` (`id`, `value_index`, `value`) VALUES (NULL, "'.$this->variabile_index[$i].'", "'.$key.'")';
$result = mysql_query($sql);
if(!$result){
die('Query: '.$sql.' failed');
}
$i++;
$this->$key=mysql_insert_id();
}
}
Acum in loc sa apelam functia de 6 ori, pentru fiecare valoare, o apelam doar o data, foreach parcurge vectorul, si insereaza in tabela valorile, si retine id-urile in variabilele corespunzatoare.
$this->$key este asemeni $$key, doar ca aici este vorba despre o clasa, se numeste variabila de variabile.
De exemplu:
$ceva = 'unu'; $unu = 'doi'; //$$ceva va fi egal cu $'unu' adica $unu deci va avea valoarea 'doi'






Buna. Sunt incepator in ale php-ului si mysql. As dori sa stiu, asta daca ma poti ajuta. Cum pot sa fac un script sau ceva care sa imi modifice o intrare cu un anumit id, din tabela existenta in baza de date. Multumesc
Salut, sper ca nu-ti raspund prea tarziu, modificarea intrarii este direct din SQL, comanda de UPDATE:
UPDATE `nume_tabela` SET `nume_camp`=’valoare_noua’ WHERE `id`=’id’;
din PHP poti avea:
$sql = “UPDATE `{$nume_tabela}` SET `{$nume_camp}`=’{$valoare_noua}’ WHERE `id`=’{$id}’”;
Prin {} acolade se realizeaza inlocuirea textului cu variabila, sper sa te ajute, daca ai alte intrebari, eventual ceva mai explicit. De asemenea ai grija am folosit “ pentru campuri (tasta din stanga tastei 1) si ” apostroafe pentru valori, de asemenea textul este intre ghilimele.
Presupun ca folosesti extensia mysql pentru baza de date: http://php.net/mysql_query
Salut. Imi cer scuze ca scriu cu o asa intarziere, dar pierdusem linkul si numa ce l-am gasit. Iti multumesc pentru ajutorul acordat, dar nu m-am exprimat eu bine. Ideea este in felul urmator: am o baza de date in care introduc ceva, cu ajutorul unui formular. Pana aici toate bune si frumoase. Datele sunt intriduse ok, le pot si vizualiza in browser. Dar acum as vrea sa modific o “intrare” care am introdus-o gresit. Si nu stiu cum sa fac acest lucru, ma gandeam ca tot cu ajutorul unui formular ceva. Multumesc
Poti folosi phpMyAdmin, pentru administrarea MySQL, sau daca ai access la serverul mysql, poti scrie direct comanda pusa mai sus, doar partea intre ghilimele, inlocuind {$valoare} cu valorile respective (numele campurilor, valoarea noua dorita,valoarea id-ului – primary key)
Sau, intr-un fisier *.php poti pune doar conexiunea la baza de date, $sql = … de mai sus si poti rula sql-ul cu mysql_query($sql); – asta ar fi varianta mai simpla la formular, pentru ca tu stii direct datele care vor fi in formular si nu mai ai nevoie de partea de procesare formular, decat daca stii ca va fi nevoie sa faci lucrul asta de mai multe ori si vrei ceva mai fiabil
Salut. Am incercat ce mi-ai recomandat, dar undeva gresesc. Uite aici fisierul php:
Acest fisier este legat la un formular. Nu reusesc sa imi dau seama ce fac gresit. Si aici este mesajul primit: “Parse error: parse error in E:\wamp\www\biblioteca\modificat.php on line 10″
Nu stiu daca reusesti sa vezi fisierul php. L-am trimis. Sper sa il poti vizualiza si sa imi dai o mana de ajutor. Merci.
Salut Sergiu!
Nu am primit fisierul tau.. l-ai trimis cumva prin formularul de contact? ar fi mai usor sa dai copy paste fisierului in sectiunea comentariului si apoi putem vedea unde este problema.
Daca nu, trimite-l pe sadwys[at]yahoo.com
Succes!
Salut ionut. Ti-am trimis un mail la care am atasat fisierul meu, dar ma copiat si in body de la mail continutul atasamentului. sper sa ma puteti ajuta cumva, ca imi scoate peri albi situatia, si faptul ca imi dau seama ca grasesc undeva, dar nu realizez unde. merci inca o data.
Salut, nu pot vedea fisierul php, dar cel mai bine te uiti la linia 10 sau 9 si vezi ce ai acolo. Parse error inseamna ca ai o eroare in structura codului
Poti pune pe transfer.ro fisierul si sa-mi trimiti prin formularul de contact: http://wordpress.ro.im/contact/
“”
Cam asta ar fi fisierul care l-am creat eu. la autor am lasat valoare noua, deoarece nu stiu ce sa strec.
am incercat si la linkul dat de tine, dar nu imi trimite. am incercat inca odata aici, dar fara sorti de izbanda