problema functia DELETE

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

problema functia DELETE

am facut asa cum ai zis si imi merge codul, am pus 2 in loc de '$id_materie' si mi-a sters cel care trebuia. am pus codul care mi l-ai dat dar nu imi da nici o eroare. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
In cazul asta, daca punand direct numar (2) a mers, dar cu '$id_materie' nu merge, problema e la acea variabila, poate nu preia valoarea prin codul care-l ai $id_materie=($_POST['id_materie']);.
Poti verifica cu echo $id_materie;.

trif Mesaje:500
nu imi selecteaza cu echo $id_materie;, dar faza este ca sunt corect scrise si ce are de nu preia si cum sa fac sa inlocuiesc $id_materie=($_POST['id_materie']); si sa imi ia si sa isi indeplineasca misiunea. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Daca in scriptul PHP ai
$id_materie = $_POST['id_materie'];
In formularul care trimite datele la script trebuie sa ai un camp cu atributul name="id_materie"

- Mai mult este explicat in lectia Lucru cu formulare

Daca valoarea e transmisa prin URL, la preluare se foloseste $_GET (nu $_POST), e deja explicat in pagina de la link-ul dat mai sus.
Deci, $_POST['id_materie']

Komfort Mesaje:157
if(isset($_POST['submit']))
{


nu inteleg dc a mai pus si conditia asta...
nu putea direct? $id=$_post['id'];
etc
etc?:(?
multumesc

MarPlo Mesaje:4343
Se pune conditia if(isset($_POST['submit'])) pentru a se asigura ca acel cod se executa doar cand exista $_POST['submit'], altfel apar erori daca pagina respectiva e apelata fara a trimit date, de exemplu, initial pt. afisare.

trif Mesaje:500
salut, am reusit sa modific alt cod mai complex dar nu imi functioneaza functia DELETE. uite codul

Cod: Selectaţi tot

$host = "localhost";
$utilizator = "root"; 
$parola = "pass";
$numebd = "bd";	
$conn = mysql_connect($host, $utilizator, $parola);
if (!$conn) {
  echo 'Conectare nereusita la MySQL'; 
  exit;
}
if (!mysql_select_db($numebd, $conn)) {
  echo 'Baza de date nu a putut fi selectata deoarece : '. mysql_error();
  exit;
}
$sql = "SET NAMES 'utf8'";
mysql_query($sql, $conn);

// Afla cate linii sunt in tabel (MODIFICATI 'un_gand') din baza de date  
$sql="SELECT * FROM un_gand  ORDER BY id DESC";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR); 
$r = mysql_fetch_row($result);  
$numrows = $r[0];  
// Stabileste numarul de linii din tabel afisate in pagina 
$rowsperpage = 2;  
// afla numarul total necesar de pagini 
$totalpages = ceil($numrows / $rowsperpage);		// ceil face rotunjire la int. maxim
// Obtine pagina curenta sau seteaza default 
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {  
  // seteaza variabila ca int 
  $currentpage = (int) $_GET['currentpage'];  
} else {  
  // pagina care este initial afisata (pagina default) 
  $currentpage = 1;  
}
// daca pagina curenta e mai mare decat total pagini...
if ($currentpage > $totalpages) {  
  // seteaza pagina curenta la ultima pagina  
  $currentpage = $totalpages;  
} 
// daca pagina curenta e mai mica decat prima pagina...  
if ($currentpage < 1) {  
  // seteaza pagina curenta la prima pagina   
  $currentpage = 1;  
} 
// lista cu pagini, in functie de pagina curenta   
$offset = ($currentpage - 1) * $rowsperpage;  
// obtine datele din tabel (MODIFICATI 'un_gand') din baza de date  
$confirm_message = "'Stergeti maxima din baza de date?'";
$litera = $_GET['id'];
$sql="SELECT * FROM `un_gand` WHERE `mesaj` LIKE '$litera%' ORDER BY id DESC LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);

echo '<center><table border="0" width="450" >';
// parcurgerea matricei cu datele obtinute
while ($rand=mysql_fetch_array($result)){
  echo '<tr>  <td><b><div align="left">&nbsp;&nbsp;'.$rand['mesaj'].' <font color="red"><div align="right"><br>'.$rand['autor'].'</div> </font></div></b></td> <td><a class="button" onclick="return confirm (' . $confirm_message . ');" href="stergere_gand.php?id='. $id['id'] . '">Sterge</a></td></tr>';
if(isset($_GET['id'])) {
	$query = "DELETE FROM un_gand WHERE '. $id=['id'] . '";
}
    }
echo '</table></center>';   

/*** Construirea link-urilor pt. paginare ***/ 
// raza nr. link-uri din jurul celui curent 
$range = 3;
 
// Link-uri inapoi, daca pagina curenta nu e prima
if ($currentpage > 1) {  
  // arata << pt. link la prima pagina  
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'>prima </a> &nbsp; ";  
  // obtine nr. pagina din urma 
  $prevpage = $currentpage - 1;  
  // arata < pt. link la o pagina in urma 
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'>inapoi</a> &nbsp;";  
} 
 
// definirea link-urilor din raza paginii curente
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {  
  // daca e un nr. de pagina valid ... 
  if (($x > 0) && ($x <= $totalpages)) {  
	 // daca nr. e pagina curenta ...  
	 if ($x == $currentpage) {  
		// afiseaza nr. pagina fara a fi link  
		echo " [<b>$x</b>] ";  
	 // daca nr. nu e pagina curenta ...  
	 } else {  
		// il face link  
	echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> ";  
	 }  
  }
}
		  
// Daca pagina curenta nu e ultima, afiseaza link inainte si spre ultima pagina
if ($currentpage != $totalpages) {  
  // obtine pagina urmatoare 
  $nextpage = $currentpage + 1;  
   // arata > pt. urmatoarea pagina   
  echo "&nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>inainte</a> ";  
  //  arata >> pt. ultima pagina
  echo " &nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>ultima</a> ";  
}
?>
codul care l-am modificat este:

Cod: Selectaţi tot

$confirm_message = "'Stergeti maxima din baza de date?'";
$litera = $_GET['id'];
$sql="SELECT * FROM `un_gand` WHERE `mesaj` LIKE '$litera%' ORDER BY id DESC LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);

echo '<center><table border="0" width="450" >';
// parcurgerea matricei cu datele obtinute
while ($rand=mysql_fetch_array($result)){
  echo '<tr>  <td><b><div align="left">&nbsp;&nbsp;'.$rand['mesaj'].' <font color="red"><div align="right"><br>'.$rand['autor'].'</div> </font></div></b></td> <td><a class="button" onclick="return confirm (' . $confirm_message . ');" href="stergere_gand.php?id='. $id['id'] . '">Sterge</a></td></tr>';
if(isset($_GET['id'])) {
	$query = "DELETE FROM un_gand WHERE '. $id=['id'] . '";
}
    }
echo '</table></center>'; 
cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

claUdiu Mesaje:313
incearca sa pui la sfaritul codului inainte de ?> : } si vezi daca se schimba ceva.
Si app...tu vrei sa fki sa deleteze tot in aceeasi pagina? De ce nu faci un script pentru delete in alta pagina?
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

MarPlo Mesaje:4343
Ca sa se transmita la serverul mysql comanda sql, trebuie adaugata si functia mysql_query(), cu acea instructiune.
Dupa $query cu DELETE, ar trebui
mysql_query($query, $conn);

trif Mesaje:500
eu vreau sa faca ceva de genu:

Cod: Selectaţi tot

In masura in care iubim, ne umplem de rost si ne aflam locul in aceasta lume facuta de Dumnezeu. alex (stergere)
Ceasul nu poate masura bataile unei inimi care iubeste... Alex (stergere)
si daca dau pe primul "stergere" sa imi stearga doar primul nu si al doilea, ci pe care il dau pe ala sa mi-l stearga. intelegi? cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
In fisierul "stergere_gand.php" sa ai

Cod: Selectaţi tot

if(isset($_GET['id'])) {
  $id = $_GET['id'];
   $query = "DELETE FROM `un_gand` WHERE `id`='". $id. "'";
  mysql_query($query, $conn);
}

trif Mesaje:500
am pus si nu merge iar in bara de adrese apare asta https://marplo.net/sitefinal/stergere_gand.php?id= adica nu preia nici un id. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

Subiecte similare