manxten Posted January 26, 2014 Report Posted January 26, 2014 Recent m-am apucat de un site si am dat peste o problema. Am o pagina html cam asa: <form action='update.php' method='POST'><table><tr> <td>Selecteaza camp</td> <td> <select name='camp'> <option value='categorie'>Categorie</option> <option value='produs'>Produs</option> <option value='pret'>Pret</option> <option value='stoc'>Stoc</option> </select> </td></tr><tr> <td>Valoare veche</td> <td><input type='text' name='val_veche' size='30'></td> </tr><tr> <td>Valoare noua</td> <td><input type='text' name='val_noua' size='30'></td> </tr><tr> <td align='center' colspan='2'><br /><input type='submit' value='Updateaza produs'></td></tr></table></form>In care "categorie", "produs", "pret", "stoc" sunt si campuri in baza de date.Nelamurirea mea este cum as putea updata tabelul din baza de date selectand o anumita categorie pe care sa o updatez(cu ajutorul listei din select) unde sa inlocuiesc 'valoare veche' pe care o dau de la tastatura cu 'valoare noua' de asemenea data de la tastatura. Ideea mea era(cu asta doar selectez sa vad daca exista in DB ca apoi update-ul e usor):$camp = $_REQUEST['camp'];$vv = $_REQUEST['val_veche'];$vn = $_REQUEST['val_noua'];$query = "SELECT * FROM tabel WHERE $camp=$vv";$result = mysqli_query($db, $query);$numrows = mysqli_num_rows($result);if($numrows){echo "produsul exista";}elseecho "fail! Produsul nu exista";In toata asta nu se executa interogarea si $numrows ramane 0. Stiu probabil e din cauza ca nu asa se scrie interogarea, dar am incercat si cu apostrof + concatenate ceva de gen $query = "SELECT * FROM tabel WHERE " . " '$camp' ". '=' ." '$vv' ""; si tot nu merge. Daca ma puteti ajuta astept raspunsuri Quote
IMAGINARY Posted January 26, 2014 Report Posted January 26, 2014 Stai asa ca vin EAdrian si eusimplu si se cearta si pe threadul asta, asteapta nitel. Quote
malsploit Posted January 26, 2014 Report Posted January 26, 2014 Stai asa ca vin EAdrian si eusimplu si se cearta si pe threadul asta, asteapta nitel.Sunt cazuri in care, spre diferenta de off-topic, cearta este constructiva. Quote
EAdrian Posted January 26, 2014 Report Posted January 26, 2014 (edited) @manxten sintaxa de la query ar trebui s? fie a?a$query = "SELECT * FROM `tabel` WHERE `".$camp."` = '".$vv."'";..iar variabilele alea f?-le $_POST ?i sanitizeaz? tot ce într? în db...//fara injuraturi.@eusimplu, ai dreptate.. voiam s? ajung cât mai repede la acel ps care mi-a fost cenzuratLE: înc? o chestie, folose?te întotdeauna liniile de mai jos când e?ti "under development". De exemplu dac? aveai error_reporting î?i ar?ta c? sintaxa nu este corect?.ini_set('display_errors', '1');error_reporting(E_ALL); Edited January 26, 2014 by EAdrian Quote
CrisTany Posted January 26, 2014 Report Posted January 26, 2014 Pai tu vrei sa dai UPDATE in db la coloana aleasa din select, iar daca valoarea din campul Valoare veche e egal cu cel din db, sa dai UPDATE cu valoarea din campul Valoare noua ? Quote
eusimplu Posted January 26, 2014 Report Posted January 26, 2014 (edited) Coloanele intr-o sintaxa MySQL sunt marcate cu ` si nu cu ', cu apostrof sunt marcate doar valorile.Deci:$query = "SELECT * FROM `tabel` WHERE `$camp` = '$vv' ";Si $camp nu trebuie sa accepte orice, doar A-Z, deci mai sus de query: $camp = preg_replace('/[^a-z]/i', '', $camp); A scris Gecko un tutorial despre regex, citeste-l!Nu accepta si $_GET cand tu ar trebui sa accepti doar $_POST, e nesecurizat. Ai putea lua in considerare sfatul lui EAdrian.@IMAGINARY: Eu cu Adrian nu ne certam ca sa vedem care o are mai mare, ne certam deoarece il consideram un subiect util de dezbatut. Si tu ai putea lua in considerare sfatul lui EAdrian. Edited January 26, 2014 by eusimplu Quote
manxten Posted January 26, 2014 Author Report Posted January 26, 2014 (edited) @eusimplumerge instructiunea ta.o sa tin cont de acum incolo de chestia cu $_GET si $_POST. Inca sunt junior in industrie. @ CrisTanycu instructiunea lui eusimplu merge. pana acum nu se executa interogarea de aia nu gasea nimic Edited January 26, 2014 by manxten Quote
Robert1995 Posted January 26, 2014 Report Posted January 26, 2014 Fail programming si logic.Ma.Tu cum faci chestia aia, daca ai 5 produse cu aceeasi categorie, sau 5 produse cu acelas nume ( absurd, dar poate difera categoria ).Tu le schimbi pe toate odata.Daca nu intelegi ce vreau sa zic, revin cu un edit. Quote
manxten Posted January 26, 2014 Author Report Posted January 26, 2014 da, am inteles la ce te referi ai dreptate, dar asta se poate rezolva repede. oricum pe mine ma interesa mai mult cum se face interogarea. Quote