Problema script modificare baza de date
| Autor |
Mesaj |
|
facka
Vizitator
Membru din: Joi Iul 08, 2010 8:00 pm Mesaje: 17
|
 Problema script modificare baza de date
Salut! Incerc sa scriu o aplicatie pentru o biblioteca si m-am impotmolit la scriptul de modificare ( am facut pana acum cele de adaugare, afisare , cautare) . Codul este acesta: Cod: <?php $termen = $_POST['searchtype']; $valoare = $_POST['valoare']; $id = $_POST['id']; if(!$termen || !$valoare || !id) { print "Nu ati introdus nici un termen"; exit(); } print "Modificarea s-a facut la ID: $id , dupa termenul : $termen , iar noua valoare este : $valoare"; $conn = new mysqli_connect("localhost","cautare","123") or die("Nu s-a realizat conexiunea cu baza de date"); mysql_select_db("biblioteca",$conn) or die("Nu se poate selecta baza de date"); $sql = UPDATE carti SET $termen = $valoare WHERE id== $id; $result = mysql_query($sql); *Print cu baza de date: http://img517.imageshack.us/img517/8870/bazao.gifEroarea este aceasta : Citat: Parse error: syntax error, unexpected T_STRING in D:\Program Files\EasyPHP-5.3.2i\www\Biblioteca nou\modificare.php on line 20 *linia 20 este Cod: $sql = UPDATE carti SET $termen = $valoare WHERE id== $id; Eu folosesc $termen si $id ca si coordonate in interiorul bazei de date, iar scriptul ar trebui sa imi modifice valoarea de la aceste coordonate cu $valoare, dar nu cred ca facut eu bine query; care stiti cum ar trebui sa fack? POate ajuta si codul html : Cod: <form name="form" method="post" action="modificare.php"> <select name="searchtype"> <option value="titlu">Titlu</option> <option value="autor">Autor</option> <option value="editura">Editura</option> <option value="anul">Anul aparitiei</option> </select>
<h4>Introduceti noua valoare a campului : <h4> <input type="text" name="valoare" id="valoare"> <br> <h4>Introduceti valoarea campului "ID"<h4> <input type="text" name="id" id="id">
<input type="submit" name="submit" value="Modifica"> Multam mult !
|
| Mar Iul 27, 2010 6:48 pm |
|
 |
|
Birkoff
Site Admin
Membru din: Lun Mai 15, 2006 11:24 am Mesaje: 1239 Localitate: Bucuresti
|
 Re: Problema script modificare baza de date
mama cate erori in codul tau 1. pentru ce dublezi resursele folosite de server ? adica asta $termen = $_POST['searchtype']; $valoare = $_POST['valoare']; $id = $_POST['id']; intelegeam daca le prelucrai inainte sa le preiei sau le bagai intr-un array pe care il prelucrai ulterior sau il verificari ulterior... dar asa pur si simplu ai 6 variabile dublate cu acelasi continut... de ce oare? 2. if(!$termen || !$valoare || !id) tu ce verifici de fapt aici? daca sunt false? pentru ce? intelegeam daca verificai empty sau strlen ceva da false pentru ce? 3. print "Modificarea s-a facut la ID: $id , dupa termenul : $termen , iar noua valoare este : $valoare"; $conn = new mysqli_connect("localhost","cautare","123") or die("Nu s-a realizat conexiunea cu baza de date"); mysql_select_db("biblioteca",$conn) or die("Nu se poate selecta baza de date"); $sql = UPDATE carti SET $termen = $valoare WHERE id== $id; tu intai afisezi mesaj ca modificarea SA EFECTUAT DEJA si apoi faci modificarea? care e logica? 4. $sql = UPDATE carti SET $termen = $valoare WHERE id== $id; ce e string si ce e variabila din toata linia asta? eu stiam ca sintaxa sql trebuie pusa intre ghilimele si pasata la mysql ca string... 5. sa mai continui?
_________________ Pagina personala, servicii, portofoliu || Esti curios ce scrie in avatarul meu? || Instaleaza bara de unelte Tutoriale WEB Ofer cursuri initiere php/mysql online prin mess/remote (initiere in stilul de programare MVC). Detalii pe mess.
|
| Mar Iul 27, 2010 8:26 pm |
|
 |
|
facka
Vizitator
Membru din: Joi Iul 08, 2010 8:00 pm Mesaje: 17
|
 Re: Problema script modificare baza de date
::))  . Poi, afara de partea cu query, toate celelate merg pentru ca le-am folosit si in scriptul care asigura functia de cautare a aplicatiei, care merge perfect.... Adik : 1.Le dublez pentru ca imi vine mai usor sa le scriu in continuare ( plus ca astfel le si pot verifica [ adik pot verifica daca primesc ceva de la form ]) .2. if(!$termen || !$valoare || !id) asta verifica daca a fost introdusa o valoare in campurile respective, daca nu intrerupere scriptul.... 3. print "Modificarea s-a facut la ID: $id , dupa termenul : $termen , iar noua valoare este : $valoare"; -----> asta am pus-o pentru a verifica daca primesc input de la form ( este mai mult de test, daca mergea scriptul o puneam la coada) 4. $sql = UPDATE carti SET $termen = $valoare WHERE id== $id; -----> asta nu stiu eu cum sa fack.... si desi am tot cautat pe mysql.com, tot nu imi dau seama cam cum ar trebui facut query-ul asta.... DAca vreti sa imi dati o idee, ar fi bine venita...  * cat despre erori / folosirea excesiva a resurselor, deocamdata sunt la inceput (3 sapt de php), prioritatea mea este sa le fack sa mearga si sa le inteleg ( daca merg  ))
|
| Mar Iul 27, 2010 9:32 pm |
|
 |
|
Birkoff
Site Admin
Membru din: Lun Mai 15, 2006 11:24 am Mesaje: 1239 Localitate: Bucuresti
|
 Re: Problema script modificare baza de date
1. faptul ca un script functioneaza asta nu inseamna ca e si bun (din punctul de vedere al resurselor ocupate sau al optimizarii) dar inteleg, tu esti un programator de weekend nu vrei sa faci un job din asta si atunci da te inteleg...
2. faptul ca le dublezi fara sa faci o mica prelucrare initiala sau fara sa verifici macar daca au fost trimise denota bad practice si posibilitatea unui hacker de a ataca site-ul...
3. ok din punctul tau de vedere dar uite alt programator care vede codul zice vai ce cod prost...
4. corect e $query = "sintaxa sql intre ghilimele ca sa fie pasata ca string"; citeste tutorialele de mysql de pe acest site scrie tot ce trebuie sa stii
5. ok spor la invatat si la citit tutorialele (sper sa le si intelegi sa nu ramai doar cu cititiul)
_________________ Pagina personala, servicii, portofoliu || Esti curios ce scrie in avatarul meu? || Instaleaza bara de unelte Tutoriale WEB Ofer cursuri initiere php/mysql online prin mess/remote (initiere in stilul de programare MVC). Detalii pe mess.
|
| Mar Iul 27, 2010 10:39 pm |
|
 |
|
facka
Vizitator
Membru din: Joi Iul 08, 2010 8:00 pm Mesaje: 17
|
 Re: Problema script modificare baza de date
 ) "programtor de weekend".... eu speram la titlul de "incepator"... sau stiu eu, poate ca desi fiind incepator, abia citesti un script, totusi deja te gandesti la probleme de securitate / folosirea rationala a resurselor.... o fi.....
|
| Mie Iul 28, 2010 9:39 am |
|
 |
|
bogdaniel
Asta vorbeste mult
Membru din: Mie Ian 14, 2009 5:55 pm Mesaje: 199 Localitate: Ploiesti
|
 Re: Problema script modificare baza de date
facka scrie: :)) "programtor de weekend".... eu speram la titlul de "incepator"... sau stiu eu, poate ca desi fiind incepator, abia citesti un script, totusi deja te gandesti la probleme de securitate / folosirea rationala a resurselor.... o fi..... stai sa vezi ce distractiv e cu normalizarea tabelului... dar nu ti-a mai spus remus nimic ca nu vroia sa te simti rau 10 zile de acu' incolo.. dar nu`i nimik ti-am spus eu  )
_________________ “When debugging, novices insert corrective code; experts remove defective code.” – Richard Pattis
|
| Mie Iul 28, 2010 2:01 pm |
|
 |
|
facka
Vizitator
Membru din: Joi Iul 08, 2010 8:00 pm Mesaje: 17
|
 Re: Problema script modificare baza de date
Modificat astfel : Cod: <?php $termen = $_POST['searchtype']; $valoare = $_POST['valoare']; $id = $_POST['id']; if(!$termen || !$valoare || !id) { print "Nu ati introdus nici un termen"; exit(); } $conn = mysql_connect("localhost","cautare","123") or die("Nu s-a realizat conexiunea cu baza de date"); mysql_select_db("biblioteca_simplu",$conn) or die("Nu se poate selecta baza de date"); $sql = "UPDATE `{$termen}` SET '{$valoare}' WHERE `ID` = '{$id}'"; $result = mysql_query($sql); if ($result) { print "Modificarea s-a facut la ID: $id , dupa termenul : $termen , iar noua valoare este : $valoare";
} else { print "<h3>Modificarea nu s-a efectuat.</h3>\n"; Acum, imi da asta : Citat: Notice: Use of undefined constant id - assumed 'id' in D:\Program Files\EasyPHP-5.3.2i\www\Biblioteca nou\modificare.php on line 12 Modificarea nu s-a efectuat.
|
| Mie Iul 28, 2010 2:04 pm |
|
 |
|
bogdaniel
Asta vorbeste mult
Membru din: Mie Ian 14, 2009 5:55 pm Mesaje: 199 Localitate: Ploiesti
|
 Re: Problema script modificare baza de date
if(isset($id)) { // run some code. }
_________________ “When debugging, novices insert corrective code; experts remove defective code.” – Richard Pattis
|
| Mie Iul 28, 2010 2:14 pm |
|
 |
|
Birkoff
Site Admin
Membru din: Lun Mai 15, 2006 11:24 am Mesaje: 1239 Localitate: Bucuresti
|
 Re: Problema script modificare baza de date
if(!$termen || !$valoare || !id)
unde e $id ca eu nu il vad?
_________________ Pagina personala, servicii, portofoliu || Esti curios ce scrie in avatarul meu? || Instaleaza bara de unelte Tutoriale WEB Ofer cursuri initiere php/mysql online prin mess/remote (initiere in stilul de programare MVC). Detalii pe mess.
|
| Mie Iul 28, 2010 6:37 pm |
|
 |
|
facka
Vizitator
Membru din: Joi Iul 08, 2010 8:00 pm Mesaje: 17
|
 Re: Problema script modificare baza de date
Cod: f(!$termen || !$valoare || !id) Poi nu este  , am scris eu gresit, dar nu asta este problema cu codul meu ( asta doar nu o sa mai tina cont de faptul ca nu introduc o valoare in campul id din form.... deci nu asta imi afecteaza mie codul. Oricum, daca vrei sa cauti bube, sunt sigur ca o sa gasesti destule, daca vrei sa ajuti, arata-mi bubele care intradevar imi blocheaza scriptul / sau erori de logica. Sincer, decat sa imi scoti ochii cu : Citat: mama cate erori in codul tau  1. pentru ce dublezi resursele folosite de server ? adica asta $termen = $_POST['searchtype']; $valoare = $_POST['valoare']; $id = $_POST['id']; intelegeam daca le prelucrai inainte sa le preiei sau le bagai intr-un array pe care il prelucrai ulterior sau il verificari ulterior... dar asa pur si simplu ai 6 variabile dublate cu acelasi continut... de ce oare? 2. if(!$termen || !$valoare || !id) tu ce verifici de fapt aici? daca sunt false? pentru ce? intelegeam daca verificai empty sau strlen ceva da false pentru ce? 3. print "Modificarea s-a facut la ID: $id , dupa termenul : $termen , iar noua valoare este : $valoare"; $conn = new mysqli_connect("localhost","cautare","123") or die("Nu s-a realizat conexiunea cu baza de date"); mysql_select_db("biblioteca",$conn) or die("Nu se poate selecta baza de date"); $sql = UPDATE carti SET $termen = $valoare WHERE id== $id; tu intai afisezi mesaj ca modificarea SA EFECTUAT DEJA si apoi faci modificarea? care e logica? pentru ca apoi sa iti explic eu ce face linia respectiva si de ce o folosesc, prefer sa nu imi raspunzi deloc la intrebare..... De fapt, cred ca mai bine ar fi sa stergi userl meu din baa de date, pentru ca este ultima oara cand o sa postez aici....Cya!
|
| Joi Iul 29, 2010 12:25 pm |
|
 |
|
Birkoff
Site Admin
Membru din: Lun Mai 15, 2006 11:24 am Mesaje: 1239 Localitate: Bucuresti
|
 Re: Problema script modificare baza de date
pai ti-am raspuns strict la intrebarea ta... tu ai intrebat de la ce iti da eroarea Citat: Notice: Use of undefined constant id - assumed 'id' in D:\Program Files\EasyPHP-5.3.2i\www\Biblioteca nou\modificare.php on line 12 Modificarea nu s-a efectuat.
si eu ti-am raspuns exact Citat: if(!$termen || !$valoare || !id)
unde e $id ca eu nu il vad?
eroarea era ca nu ai pus $id si daia iti dadea mesajul ala. pune intrebarile in asa fel ca sa iti pot da un raspuns la ele...
_________________ Pagina personala, servicii, portofoliu || Esti curios ce scrie in avatarul meu? || Instaleaza bara de unelte Tutoriale WEB Ofer cursuri initiere php/mysql online prin mess/remote (initiere in stilul de programare MVC). Detalii pe mess.
|
| Joi Iul 29, 2010 5:38 pm |
|
 |
|
facka
Vizitator
Membru din: Joi Iul 08, 2010 8:00 pm Mesaje: 17
|
 Re: Problema script modificare baza de date
Din cate stiu eu ( putin , stiu asta ), Cod: if(!$termen || !$valoare || !id) { print "Nu ati introdus nici un termen"; exit(); } variabila id ( corect $id) este verificata aici doar pentru a se vedea daca are vreo valoare. Iar greseala asta imi genereaza doar un notice , nu eroare majora / sau de logica a scriptului. Oricum, si dupa ce corectez aici, notice a disparut, dar tot nu imi modifica, deci eroarea este una de logica, astfel revenind la intrebarea mea din primul post....Oricum , mersi ca ai incercat 
|
| Joi Iul 29, 2010 8:30 pm |
|
 |
|
Birkoff
Site Admin
Membru din: Lun Mai 15, 2006 11:24 am Mesaje: 1239 Localitate: Bucuresti
|
 Re: Problema script modificare baza de date
ok acum ca am rezolvat prima eroare (un notice tot o eroare e, nu e eroare grava din punct de vedere al functionarii codului dar poate fi o eroare grava din punctul de vedere al securitatii codului - daia eu lucrez cu e_all si nu las nimic la voia intamplarii)
urmatoarea eroare e aici
UPDATE `{$termen}` SET '{$valoare}' WHERE `ID` = '{$id}'";
corect ar trebui ceva de genul
"UPDATE `nume_tabel_din_bd` SET `nume_camp_din_tabel` = 'noua_valoare' WHERE `id` = 'un id' ";
incearca sa recitesti tutorialele din sectiunea MySQL si vezi ca apar in fiecare saptamana unele noi in acea sectiune (cel putin luna asta si luna viitoare) care iti explica astfel de probleme ca cea de mai sus.
_________________ Pagina personala, servicii, portofoliu || Esti curios ce scrie in avatarul meu? || Instaleaza bara de unelte Tutoriale WEB Ofer cursuri initiere php/mysql online prin mess/remote (initiere in stilul de programare MVC). Detalii pe mess.
|
| Joi Iul 29, 2010 9:14 pm |
|
 |
|
facka
Vizitator
Membru din: Joi Iul 08, 2010 8:00 pm Mesaje: 17
|
 Re: Problema script modificare baza de date
Am incercat si asa Cod: $sql = "UPDATE `carti` SET `$termen`='$valoare' WHERE `ID`='$id'"; .... dar tot nu imi modifica....
|
| Vin Iul 30, 2010 7:00 pm |
|
 |
|
bogdaniel
Asta vorbeste mult
Membru din: Mie Ian 14, 2009 5:55 pm Mesaje: 199 Localitate: Ploiesti
|
 Re: Problema script modificare baza de date
facka scrie: Am incercat si asa Cod: $sql = "UPDATE `carti` SET `$termen`='$valoare' WHERE `ID`='$id'"; .... dar tot nu imi modifica.... posteaza te rog un dump la tabele. sunt curios cum ai id acolo.
_________________ “When debugging, novices insert corrective code; experts remove defective code.” – Richard Pattis
|
| Vin Iul 30, 2010 9:21 pm |
|
 |
|
Cine este conectat |
Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator |
|
Nu puteţi scrie subiecte noi în acest forum Nu puteţi răspunde subiectelor din acest forum Nu puteţi modifica mesajele dumneavoastră în acest forum Nu puteţi şterge mesajele dumneavoastră în acest forum
|
|