Delete ne fonctione pas

Résolu/Fermé
supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008 - 26 mai 2008 à 00:00
supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008 - 26 mai 2008 à 18:50
Bonjour,
j'essaye de faire une requête pour mysql qui doit m'effacer un enregistrement en fonction d'un choix fait préalablement dans un formulaire liste.
Mais rien ne s'éfface.
Lorsque je fait un echo de la requête et que je l'encode via mysql myadmin ça fonctionne.
Pouvez-vous m'aider, ça fait trois heures que je bloque. voici mon code :

    
<?php 
$es=$_REQUEST['listesondages'];
include("connexion.php");
connexion();

mysql_query("DELETE FROM sondage WHERE nomsondage =  '$es'") or die(mysql_error()) ;
mysql_close(); 

 ?> 



je vous remercie de votre aide.

5 réponses

Je ne connais pas la méthode $_REQUEST mais tu devrais lire ceci :
- https://www.developpez.net/forums/d89723/php/langage/_request-vs-_get-_post/

Peut-être y a-t-il conflit entre deux réceptions simultanées ?
0
supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008 6
26 mai 2008 à 00:18
Il semblerait que ce ne soit pas là que mon code bloque.
en effet, j'avais utilisé un post donc j'ai changé le $_REQUEST par un $_POST mais sans succès.
J'ai toujours essayé avec le $_GET mais pas bon non plus.

Je te remercie quand même pour ton aide
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008
26 mai 2008 à 08:50
Bonjour, fais un echo pour voir ce que tu reçoit de ton formulaire:

<?php 
$es=$_POST['listesondages'];
echo "Valeur recue: ".$es;
include("connexion.php");
connexion();

mysql_query("DELETE FROM sondage WHERE nomsondage =  '$es'") or die(mysql_error()) ;
mysql_close(); 

 ?> 

et as tu bien mis dans ton formulaire:

<form method="post" action=.... >
0
supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008 6
26 mai 2008 à 09:20
Bonjour,

lorsque je fais un echo de ma variable $es, j'ai bien l'équivalent d'une des données se trouvant dans la colone "nomsondage" de ma table "sondage" de ma Bd mysql.)
Mais cette ligne ne s'efface pas.par php myadmin lorsque je tape ma requete sql ça s'éfface correctement.

Merci encore pour l' aide que vous m'apportez.




voici la page php ou se trouve ma liste


   

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>

<body>


 <p>Veuillez selctionner le sondage que vous ne voulez plus. </p>
 <p>Ensuite cliquez sur le boutton "Effacer&quot;.
 </p>
<form action="effacer.php" method="post">

  <select name="listesondages">';

  
  
  <?php 

include("connexion.php");
connexion();
$response= mysql_query("SELECT nomsondage FROM sondage ORDER BY nomsondage") or die(mysql_error()) ;
  
while ( $donnees = mysql_fetch_array($response) ){  

$u=$donnees['nomsondage'];
echo "<option value=\" $u \"> $u </option>" ;
 }  
    
	mysql_close();
?> 
</select>
<input type="submit" name="envoyer" id="envoyer" value="Effacer" tabindex="3" />
</form>
</body>
</html>









et revoici la page effacer.php

 
<?php 
$es=$_REQUEST['listesondages'];
include("connexion.php");
connexion();

mysql_query("DELETE FROM sondage WHERE nomsondage =  '$es'") or die(mysql_error()) ;
mysql_close(); 

 ?> 
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 mai 2008 à 13:04
Salut,

essayes comme ça avec des traces d'erreurs:

$es=$_POST['listesondages'];
include("connexion.php");
$cnx=connexion();
if($cnx) {
	echo "Connexion OK ";
}else{
	echo "Connexion NON OK ! ";
}	

$req=mysql_query("DELETE FROM sondage WHERE nomsondage='".$es."'") or die("Pb avec la requette delete ".mysql_error()) ;
if($req) {
	echo "Requette delete  OK ";
}else{
	echo "Requette delete  non OK ! ";
}	
mysql_close(); 

 ?> 
0
supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008 6
26 mai 2008 à 15:12
Merci,

dèsque je rentre à la maison j'essaye ce code et je me permettrai de vous tenir au courant des résultats.
0
supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008 6
26 mai 2008 à 18:19
Voici ce qui apparait à l'écran :



Connexion NON OK ! Requette delete OK



Et bien entendu la ligne n'est pas delete.
Pourtant lorsque je change juste ma variable se trouvant dans la requete sql par 'lesondagetrois' la ligne correspondant est bien effacer donc comment ce fait-il que j'ai connexion non ok?

Voici donc le code qui fonctionne (sans variable) mais j'ai bien un message

Connexion NON OK ! Requette delete OK

Je craque je vous en prie, aidez moi.





<?php 

$es=$_POST['listesondages'];
include("connexion.php");

$cnx=connexion();
if($cnx)  {
	echo "Connexion OK ";
}else{
	echo "Connexion NON OK ! ";
}	

$req=mysql_query("DELETE FROM sondage WHERE nomsondage='lesondageun'") or die("Pb avec la requette delete ".mysql_error()) ;
if($req) {
	echo "Requette delete  OK ";
}else{
	echo "Requette delete  non OK ! ";
}	
mysql_close(); 

0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 mai 2008 à 18:37
il faudrait voir comment est faite ta fonction connexion()

est que à la fin elle te renvoie true ,

par exemple as tu:

function connexion(){
........

$db=mysql_select_db(.....);
if($db) {
return true
}else{
return false
}
}


parce que si la fonction ne renvoie rien en cas de sucès de la connexion c'est normal que tu ais Connexion NON OK

sinon pour ton pb de DELETE :

essayes comme ça:


$es=$_POST['listesondages'];

include("connexion.php");
connexion();
$req1=mysql_query("SELECT * FROM sondage WHERE nomsondage='".$es."'");
echo "nombre enrengistrements  correspondants a: ".$es." = ".mysql_num_rows();

$req=mysql_query("DELETE FROM sondage WHERE nomsondage='".$es."'") or die("Pb avec la requette delete ".mysql_error()) ;
if($req) {
	echo "Requette delete  OK;
}else{
	echo "Requette delete  non OK ! ";
}	
mysql_close(); 

 ?> 


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
supfred Messages postés 22 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 septembre 2008 6
26 mai 2008 à 18:50
Oui,oui , oui , OUUUUIII,

J'ai enfin trouvé ce qu'il faut faire. je ne sais pas pourquoi, mais ça marche.
Visiblement il n'y a pas de problème de connexion sinon ma requête manuelle ne fonctionnerait pas .

Donc le soucis est dans le passage de la variable.
J'ai donc taper le texte correspondant à un enregistrementdans une variable $es et la ça fnctionnait.

Donc pas de problème de passage d'information par une variable Mais lorsque je faisais un echo du post le texte semblait juste Ou est donc l'erreur......

lorsque je fais un trim()
par exemple:
$es=trim($_POST['listesondages']);


La ça fonctionne donc il y a des espaces qui ont du venir se mettre dans les valeurs de ma liste et comme ce sont des espaces, je ne les voyais pas dans mon echo.

Comment sont venus ces espaces, je ne sais pas mais me voilà soulagé.


Un tout grand merci à tous ceux qui mon soutenu et aider durant ses longues heures.
0