Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Mufa microusb a telefonului mobil...

"Ciudatenii" control pasa...

Impamantare

Apple maps pe Windows 10
 Sfarsitul woke-ismului si al core...

Renovare completa + pompa de cald...

Libre Office nu vad liniile

Modalitați amuzante și ...
 O disparitie de ani buni, Acces D...

Mancarea e scumpa

Parere achiziționare BMW G20

Schimbarea bateriei moderne la VA...
 Rostschreck Lidl

Si noi suntem Florin Piersic? / J...

Rascumparare euroobligatiuni (pri...

Detartraj partial slatina
 

Problema "id"

- - - - -
  • Please log in to reply
15 replies to this topic

#1
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
      Buna seara !

Am o comanda SQL care imi extrage din baza de date doar datele care au un intr-un camp o anumita valoare. Am folosit un while() si daca am 2, cu line break-ul pus mi se afiseaza pe amandoua. Acum... Pentru a modifica campul acela, am folosit urmatorul cod:

while(...){
//aici sunt echo-urile care extrag din bd acele date care au in camp valoarea respectiva
if(isset($_POST['optiune'])){
$eschiuel = mysql_query("UPDATE `users` SET acel_camp='Da' WHERE id=".$ha['id']." ");
if(!$eschiuel){
echo 'Eroare: mysql_error() ';
}else{
echo 'Anuntul a fost aprobat cu succes';
}
}else{
echo '<form method="POST" action="" >
<input type="submit" name="optiune" value="Aprobare" /> <br /> <br />
</form> ';
}

, unde $ha  este mysql_fetch_array($comandaSQL)




Acum...acel buton de Submit apare la fiecare data in parte... dar apasat, schimba cu "Da" la amandoua. Cum as putea face ca atunci cand dau click pe submitul respectivelor date, sa ii modifice doar la acele date campul....




Sper ca s-a inteles... Daca nu dau mai multe explicatii

Edited by Bogdan2901, 13 February 2010 - 21:07.


#2
neobluenet

neobluenet

    Member

  • Grup: Members
  • Posts: 489
  • Înscris: 13.08.2004

 Bogdan2901, on 13th February 2010, 21:05, said:

while(...){
	//aici sunt echo-urile care extrag din bd acele date care au in camp valoarea respectiva
	if(isset($_POST['optiune'])){
		$eschiuel = mysql_query("UPDATE `users` SET acel_camp='Da' WHERE id=".$ha['id']." ");
		if(!$eschiuel){
			echo 'Eroare: mysql_error() ';
		}
		else{
			echo 'Anuntul a fost aprobat cu succes';
		}
   }
   else{
	   echo '<form method="POST" action="" >
	   <input type="submit" name="optiune" value="Aprobare" /> <br /> <br />
		</form> ';

   }//asta lipseste in codul tau

}
Mai iti trebuie un hidden input in care sa pui id-ul inregistrarii din baza de date, ca daca dai submit (vezi ca ii trebuie si action la formular) el o sa trimita doar optiune. Pe langa faptul ca trebuie sa modifice, trebuie sa ii spui is ce sa modifice.
Data viitoare scrie codul mai "frumos", ca sa il poata citi lumea mai usor.

#3
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006

 neobluenet, on 14th February 2010, 10:48, said:

Mai iti trebuie un hidden input in care sa pui id-ul inregistrarii din baza de date, ca daca dai submit (vezi ca ii trebuie si action la formular) el o sa trimita doar optiune. Pe langa faptul ca trebuie sa modifice, trebuie sa ii spui is ce sa modifice.
Data viitoare scrie codul mai "frumos", ca sa il poata citi lumea mai usor.
Solutia ta nu este tocmai corecta.

Sunt 2 solutii mari si late.

1. adauga form pentru fiecare articol cu input hidden.
2. creeaza butoanele submit de tip imagine si la campul "value" pune valoarea id-ului.

#4
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
Salut !  Intradevar merge, aproba doar cate unul... dar dupa ce am apasat odata dispar toate butoanele de submit :( . La hidden am folosit:

<input type="hidden" name="aprobare" value="'.$ha['id'].'" />
Iar la update:

$iid = $_POST['aprobare'];
$eschiuel = mysql_query("UPDATE `users` SET Aprobat='Da' WHERE id='$iid' ");


#5
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008

 DarkAngelBv, on 14th February 2010, 12:17, said:

Solutia ta nu este tocmai corecta.

Sunt 2 solutii mari si late.

1. adauga form pentru fiecare articol cu input hidden.
2. creeaza butoanele submit de tip imagine si la campul "value" pune valoarea id-ului.

1.  Pai eu le iau cu un while din baza de date... Deci echo $ha['Camp1']; e scris odata, dar apare de cate ori se gaseste in baza de date, cu valorile respetive :)


2.  De ce chiar imagine ?

#6
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006
Imagine deoarece la submit-ul de tip imagine proprietatea "value" este ascunsa ochiului.

in loc sa ai

<form1>
<hidden1><submit1>
</form1>
<form2>
<hidden2><submit2>
</form2>
<form3>
<hidden3><submit3>
</form3>

vei avea ceva de genul
<form>
<submit1>
<submit2>
<submit3>
<submit4>
....
</form>

deci mult mai ok din punct de vedere al codului.

#7
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
Bun...dar cum pot pune un buton la fiecare articol ?   Si dupa ce accept unul, sa apara in continuare celelalte butoane, iar daca le apas etc :D

Edited by Bogdan2901, 14 February 2010 - 15:48.


#8
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006
Ca sa ai interactivitate trebuie sa folosesti ajax.
Sau poti folosi solutia mai "din topor", adica sa faci submit catre aceiasi pagina in care sa verifici $_POST.

#9
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
Hm... Pana la urma am rezolvat-o in urmatorul mod:

- am mai creat un fisier in care am pus codul PHP pentru UPDATE;
- ID-ul anuntului este pus intr-un hidden input;
- in al doilea fisier verific daca s-a apasat inaitne butonul, astfel incat daca s-a incercat sa se intre direct pe pagina, nu il va lasa;
- am pus un http-equiv="refresh" , care duce inapoi spre pagina de admin daca totul a decurs perfect. (Cei care intra direct pe pagina pot astepta dupa refresh si o luan de zile....)

Rezultatul: A mers !!! :D

Multumesc tuturor !

#10
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Sa vezi ce merge pentru oricine care stie ce face, sa-ti ocoloeasca "protectia".

Usor usor incepi sa ma convingi ca ai talent la a face lucrurile gresit.

De ce nu faci un checkbox pentru fiecare rand cu numele "accept[<id>]", un singur buton de submit in formular, si in procesare iterezi peste $_POST['accept'] ?

Edited by OriginalCopy, 15 February 2010 - 15:47.


#11
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
Hm... as putea incerca. Daca zici ca nu e bine cum am facut eu.

#12
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Si mai bine ar fi sa te intrebi "de ce nu e bine?", "unde e gaura de securitate/functionalitate?". Nu e "meseria" mea sa-ti bag pe gat informatii. E treaba ta sa te intrebi, eventual sa intrebi pe forum.

#13
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
Bun atunci... cat de curand o sa modific algoritmul codului. Unde e gaura de securitate la versiunea actuala ?

#14
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Nu e neaparat de securitate (depinde cum folosesti html redirect, poate escala intr-una de securitate), e de functionalitate. Nu poti garanta ca userul care intra pe site-ul tau face asta cu un browser. Poate sa intre cu un program mai mult sau mai putin propriu, sau sa dezactiveze "html refresh" in browserul sau, si atunci nu va fi redirectionat. Va vedea codul HTML, ceea ce e de ajuns. Explicatii gasesti in "resurse pt studiu individual", punctele II. 1. 1, II. 1. 2, II. 1. 3.

Edited by OriginalCopy, 15 February 2010 - 17:53.


#15
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006
Din cate am inteles eu, el doreste acest script pentru administrare. Presupunand ca de administrarea sitului se ocupa el sau cineva de incredere, nu o putem numi gaura de securitate. Cel mult neglijenta.

#16
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008

 OriginalCopy, on 15th February 2010, 17:52, said:

Nu e neaparat de securitate (depinde cum folosesti html redirect, poate escala intr-una de securitate), e de functionalitate. Nu poti garanta ca userul care intra pe site-ul tau face asta cu un browser. Poate sa intre cu un program mai mult sau mai putin propriu, sau sa dezactiveze "html refresh" in browserul sau, si atunci nu va fi redirectionat. Va vedea codul HTML, ceea ce e de ajuns. Explicatii gasesti in "resurse pt studiu individual", punctele II. 1. 1, II. 1. 2, II. 1. 3.

1.  O sa fie sistem de autentificare pe aceea pagina, cu un singur cont creat... fara posibilitatea de a se creea unul nou

2.  NU are cum sa ajunga pe pagina aceea ca utilizator capabil sa aprobe un articol. Ii va da : 1. eroarea pe prima pagina ca nu e logat,  2.  eroarea pe a doua pagina ca butonul submit nu a fost apasat (adica a intrat direct pe pagina). Redirectul e pus intre if, nu in afara lui sau intre else

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate