Prima pagină
 
Tutoriale web
Un mic ghid de programare web
 
.
Vizualizare mesaje fără răspuns | Vizualizare subiecte active Acum este Joi Sep 09, 2010 3:21 am



Scrie un subiect nou Răspunde la subiect  [ 17 mesaje ]  Du-te la pagina 1, 2  Următorul
 Problema script modificare baza de date 
Autor Mesaj
Vizitator
Vizitator

Membru din: Joi Iul 08, 2010 8:00 pm
Mesaje: 17
Mesaj 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.gif
Eroarea 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
Profil E-mail
Site Admin
Site Admin
Avatar utilizator

Membru din: Lun Mai 15, 2006 11:24 am
Mesaje: 1239
Localitate: Bucuresti
Mesaj Re: Problema script modificare baza de date
mama cate erori in codul tau :sad:

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
Profil E-mail YIM WWW
Vizitator
Vizitator

Membru din: Joi Iul 08, 2010 8:00 pm
Mesaje: 17
Mesaj Re: Problema script modificare baza de date
::)) :D .
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...:D
* 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
Profil E-mail
Site Admin
Site Admin
Avatar utilizator

Membru din: Lun Mai 15, 2006 11:24 am
Mesaje: 1239
Localitate: Bucuresti
Mesaj 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
Profil E-mail YIM WWW
Vizitator
Vizitator

Membru din: Joi Iul 08, 2010 8:00 pm
Mesaje: 17
Mesaj 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
Profil E-mail
Asta vorbeste mult
Asta vorbeste mult

Membru din: Mie Ian 14, 2009 5:55 pm
Mesaje: 199
Localitate: Ploiesti
Mesaj 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
Profil E-mail YIM
Vizitator
Vizitator

Membru din: Joi Iul 08, 2010 8:00 pm
Mesaje: 17
Mesaj 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
Profil E-mail
Asta vorbeste mult
Asta vorbeste mult

Membru din: Mie Ian 14, 2009 5:55 pm
Mesaje: 199
Localitate: Ploiesti
Mesaj 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
Profil E-mail YIM
Site Admin
Site Admin
Avatar utilizator

Membru din: Lun Mai 15, 2006 11:24 am
Mesaje: 1239
Localitate: Bucuresti
Mesaj 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
Profil E-mail YIM WWW
Vizitator
Vizitator

Membru din: Joi Iul 08, 2010 8:00 pm
Mesaje: 17
Mesaj 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 :sad:

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
Profil E-mail
Site Admin
Site Admin
Avatar utilizator

Membru din: Lun Mai 15, 2006 11:24 am
Mesaje: 1239
Localitate: Bucuresti
Mesaj 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
Profil E-mail YIM WWW
Vizitator
Vizitator

Membru din: Joi Iul 08, 2010 8:00 pm
Mesaje: 17
Mesaj 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
Profil E-mail
Site Admin
Site Admin
Avatar utilizator

Membru din: Lun Mai 15, 2006 11:24 am
Mesaje: 1239
Localitate: Bucuresti
Mesaj 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
Profil E-mail YIM WWW
Vizitator
Vizitator

Membru din: Joi Iul 08, 2010 8:00 pm
Mesaje: 17
Mesaj 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
Profil E-mail
Asta vorbeste mult
Asta vorbeste mult

Membru din: Mie Ian 14, 2009 5:55 pm
Mesaje: 199
Localitate: Ploiesti
Mesaj 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
Profil E-mail YIM
Afişează mesajele de la anteriorul:  Sortează după  
Scrie un subiect nou Răspunde la subiect  [ 17 mesaje ]  Du-te la pagina 1, 2  Următorul


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

Căutare după:
Mergi la:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by Vjacheslav Trushkin for Free Forums/DivisionCore.
Translation/Traducere: phpBB România