NuPotSaStergOInregistrareCeContineSpatiuIntrUnCamp[REZOLVAt]

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

teocudinti
PHPRomania Supporter
Mesaje: 7
Membru din: Dum Sep 07, 2008 12:19 pm

NuPotSaStergOInregistrareCeContineSpatiuIntrUnCamp[REZOLVAt]

Mesajde teocudinti » Dum Sep 07, 2008 12:44 pm

Am facut o simpla aplicatie php care uplodeaza jpg-uri pe server si le trece numele intr-o baza de date MySql. Atunci cand vreau sa sterg o anumita inregistrare din db folosesc
$query = "DELETE FROM poze WHERE nume='$y'";
$result = mysql_query($query);
Functioneaza in toate cazurile cu o exceptie (pana acum :)).Atunci cand numele unei poze are un spatiu (Ex. "aaa bbb.jpg") inregistrarea nu se sterge.
Am incercat sa customizez codul doar pt acea inregistrare, adica :
$query = "DELETE FROM poze WHERE nume='aaa bbb.jpg'";
$result = mysql_query($query);
Fara rezultate.

Am intrat in PhpMyAdmin si am sters inregistrarea manual.Codul returnat a fost:
DELETE FROM `poze` WHERE CONVERT(`poze`.`nume` USING utf8) = 'aaa bbb.jpg' LIMIT 1
(l-am testat si pe acesta din codul meu php si nu a mers)

Tot din PhpMyAdmin am reusit sa sterg poza cu
DELETE FROM poze WHERE nume='aaa bbb.jpg'

Cred ca query-ul meu este modificat pana sa ajunga la Mysql de pe server.Culmea ca functioneaza pt nume fara spatii.Serverul este pe linux.
Vre-o idee ?
Ultima oară modificat Lun Sep 08, 2008 3:24 pm de către teocudinti, modificat 1 dată în total.



teocudinti
PHPRomania Supporter
Mesaje: 7
Membru din: Dum Sep 07, 2008 12:19 pm

Mesajde teocudinti » Dum Sep 07, 2008 3:08 pm

Am gasit problema.

Citesc categoria si subcategoria din 2 drop-downuri.
select mySql functie de cele 2 valori de mai sus
salvez sursele pozelor intr-un hash
nume_hash[this.src]=1
(ex nume_hash["img/cat/subcat/aaa bbb.jpg"]=1)
pana aici totul este ok
apelez functie java delete
for (var i in nume_hash){
if (nume_hash[i]==1){
alert(i);
};
};
in loc sa-mi afiseze img/cat/subcat/aaa bbb.jpg

imi afiseaza htXtp://bla/img/cat/subcat/aaa%20bbb.jpg

Undeva in browser se face aceasta inlocuire ceea ce ar fi ok daca nu ar fi acel %20 in nume. O sa renunt la numele pozelor si o sa folosesc un id_poza. Problema ramane totusi.

Din pacate in prima postare am facut o greseala
$query = "DELETE FROM poze WHERE nume='aaa bbb.jpg'" FUNCTIONEAZA (sper sa nu va fi indus prea mult in eroare)

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Dum Sep 07, 2008 5:08 pm

poate sa contina orice... daca e string functioneaza. Daca nu puneai ghilimele la clauza [WHERE `camp`=] atunci erau probleme dar, astfel nu ar trebui sa fie nici o problema.

Rolul interventiei mele ar fi altul decat confirmarea "functioneaza si cu spatii": e ideal sa faci stergere / update dupa chiea primara [asta in cazul in care nu faci asta deja].

Eu folosesc ca si cheie primara numere pentru ca le ti socoteala mult mai simplu si... e bine [asa e indicat] sa faci dupa cheia primara operatiile astea tocmai pentru ca acel camp are proprietatea de a contine inregistrari unice deci, nu vei sterge / modifica nimic aiurea. In cazul tau, daca ai doua fisiere cu acelasi nume, le vei sterge pe ambele ;)

bafta!

teocudinti
PHPRomania Supporter
Mesaje: 7
Membru din: Dum Sep 07, 2008 12:19 pm

Mesajde teocudinti » Lun Sep 08, 2008 3:22 pm



Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 5 vizitatori