Domanda Problema Query DELETE da PHP,

  • Autore discussione Deleted member 108576
  • Data d'inizio
Stato
Discussione chiusa ad ulteriori risposte.
D

Deleted member 108576

Salve a tutti,
Sto creando così per provare un sistema di "commenti" strutturato come da screen:

8gkL.png


Adesso però (protetto da login, ma non è questo il problema) voglio fare in modo che possa eliminare i commenti per oggetto, mi spiego meglio, un commento ha come oggetto "Prova" e voglio fare in modo che una volta inserito il valore "Prova" in un campo di testo tramite la pressione di un pulsante memorizzi il testo "Prova" come variabile e lo inserisca nella Query di uno script a parte.
Inizialmente ho usato questo codice (Postato da murder come esempio in un topic):

PHP:
<?$email=$_POST['email']; //tra le parentesi quadre devi specificare l'id della input che vuoi richiamare/* bene, ora puoi lavorare con il valore che hai ricevuto dalla pagina precedente che è salvato nella variabile $email */
//immaginiamo di volerne fare un inserimento con una query di insert$con = mysql_connect("localhost","mionick","miapassword");if (!$con)  {  die('Could not connect: ' . mysql_error());  }
mysql_select_db("nomedb", $con);
$query=mysql_query("DELETE FROM avvisi WHERE Oggetto = ($email);");
?>

Mentre per il campo e il pulsante:

HTML:
<form id="form1" name="form1" method="post" action="eliminacommento.php"><input type="text" id="email" /><input type="submit" value="Elimina Commento" /></form>

Io credo di aver sbagliato la sintassi della Query:

PHP:
$query=mysql_query("DELETE FROM avvisi WHERE Oggetto = ($email);");

Tra l'altro non ricevo errori ma solo una pagina bianca senza che venga eliminato il record.
Qualcuno riesce ad aiutarmi?

Grazie dell'attenzione.
Saluti.
 
Se il campo è formato testo il valore va inserito tramite apici singoli (per la teoria della stringa insomma)
PHP:
 $query=mysql_query("DELETE FROM avvisi WHERE Oggetto = '$email' ");

PS: se non riesci a trovare l'errore (ma sai più o meno qual è il risultato) fai un buon uso dell'echo()
 
PHP:
<?php
$query = "DELETE FROM avvisi WHERE Oggetto = " .$_POST['email']. "'"; 
$risultato = mysql_query($query) or die(mysql_error());     
?>

Prova questo codice , dimmi se funziona .

PS: consiglio di mettere sempre il " or die(mysql_error()) "
 
Nada, ho provato tutti i vostri suggerimenti.

Questa è la pagina connessione.php

Codice:
<?
mysql_connect("localhost", "blabla", "blabla") or die(mysql_error());
mysql_select_db("blabla") or die(mysql_error());
?>

La pagina contenente l'input ovvero delcommento.html:

Codice:
<form id="form1" name="form1" method="post" action="eliminacommento.php">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>

La pagina eliminacommento.php:

Codice:
<?
$nome=$_POST['nome']; //tra le parentesi quadre devi specificare l'id della input che vuoi richiamare
/* bene, ora puoi lavorare con il valore che hai ricevuto dalla pagina precedente che è salvato nella variabile $email */


//immaginiamo di volerne fare un inserimento con una query di insert
include("connessione.php"); //immaginiamo di richiamare un codice che fa la connessione al database


 $query=mysql_query("DELETE FROM avvisi WHERE Oggetto = '$nome' ");  


?>
 
Nada, ho provato tutti i vostri suggerimenti.


La pagina contenente l'input ovvero delcommento.html:

PHP:
<form id="form1" name="form1" method="post " action="eliminacommento.php<?php  echo"?id= * "; ?>">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>


La pagina eliminacommento.php:

Codice:
<?
$nome=$_GET['nome']; //tra le parentesi quadre devi specificare l'id della input che vuoi richiamare
/* bene, ora puoi lavorare con il valore che hai ricevuto dalla pagina precedente che è salvato nella variabile $email */


//immaginiamo di volerne fare un inserimento con una query di insert
include("connessione.php"); //immaginiamo di richiamare un codice che fa la connessione al database


 $query=mysql_query("DELETE FROM avvisi WHERE Oggetto = '$nome' ; ");  


?>

* = Sostituisci con una variabile che ti da l'id del commento .
 
PHP:
<form id="form1" name="form1" method="post " action="eliminacommento.php<?="?id= * "; ?>">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>
Questo codice non ha senso.
In pratica sul Form tu hai due metodi: GET e POST.
Se usi il metodo GET automaticamente sulla url compare ?id=variabile, se usi il metodo POST non viene passato visibilmente.

Metodo GET
PHP:
<form id="form1" name="form1" method="get " action="eliminacommento.php">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>

Metodo POST
PHP:
<form id="form1" name="form1" method="post " action="eliminacommento.php">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>


eliminacommento.php

Metodo GET
PHP:
$nome=$_GET['nome'];

Metodo POST
PHP:
$nome=$_POST['nome'];
 
PHP:
<form id="form1" name="form1" method="post " action="eliminacommento.php<?="?id= * "; ?>">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>
Questo codice non ha senso.
In pratica sul Form tu hai due metodi: GET e POST.
Se usi il metodo GET automaticamente sulla url compare ?id=variabile, se usi il metodo POST non viene passato visibilmente.

Metodo GET
PHP:
<form id="form1" name="form1" method="get " action="eliminacommento.php">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>

Metodo POST
PHP:
<form id="form1" name="form1" method="post " action="eliminacommento.php">
<input type="text" id="nome" />
<input type="submit" value="Invia Dati" />
</form>


eliminacommento.php

Metodo GET
PHP:
$nome=$_GET['nome'];

Metodo POST
PHP:
$nome=$_POST['nome'];

Si , mi ero dimenticato di cambiarlo xD
Scusate la gaffe :lol:
 
io non vedo una connessione al database... cioè non bisogna per forza scrivere:
$caccaalsugo = mysql_connect(cavoli vari);?
la variabile non deve avere il valore della funzione mysql_connect?
un giorno provai a non usarla e non si connetteva... bho te prova
 
  • Mi piace
Reazioni: Luca Pavus
La connessione è su uno script php richiamato a parte "include("connessione.php")", comunque non appena ho qualche minuto corro a provare le vostre correzioni.
 
e si scusa...
in connessione.php fai cosi:
$conn=mysql_connect($host,$user,$pass)or die("oh cacchio xD");
$db=mysql_select_db($db_name,$conn) or die("oh cacchio 2 xD");

poi cmq l'include si fa così:

include "connessione"; ----- senza le parentesi

nella pagina eliminacommento.php scrivi:
$sql="DELETE FROM {nome tabella} WHERE {condizione}";
$query=mysql_query($sql,$conn) or die("oh cacchio 3 xD");


fatto così dovrebbe andare di sicuro... magari se vuoi fre una cosa un po più sicura metti il nome del db, l'host, user e pass in un file a parte poi lo includi e usi le variabili con quei dati nel file connessione che cmq non vedo l'utilità di metterlo a parte visto che so 2 righe... e sta attento all'ordine in cui metti le cose il parser va dall'alto verso il basso...

prova ste cavolate che ti ho scritto e facci sapere
 
e si scusa...
in connessione.php fai cosi:
$conn=mysql_connect($host,$user,$pass)or die("oh cacchio xD");
$db=mysql_select_db($db_name,$conn) or die("oh cacchio 2 xD");

poi cmq l'include si fa così:

include "connessione"; ----- senza le parentesi

nella pagina eliminacommento.php scrivi:
$sql="DELETE FROM {nome tabella} WHERE {condizione}";
$query=mysql_query($sql,$conn) or die("oh cacchio 3 xD");


fatto così dovrebbe andare di sicuro... magari se vuoi fre una cosa un po più sicura metti il nome del db, l'host, user e pass in un file a parte poi lo includi e usi le variabili con quei dati nel file connessione che cmq non vedo l'utilità di metterlo a parte visto che so 2 righe... e sta attento all'ordine in cui metti le cose il parser va dall'alto verso il basso...

prova ste cavolate che ti ho scritto e facci sapere

A lui serve tenere fuori il "connessione.php" perchè lo richiama in ogni script . Sta lavorando ad un CSM-forum (PiForum se non sbaglio...)
 
Stato
Discussione chiusa ad ulteriori risposte.