Suppression ligne par ligne mysql en php avec confirmation
cbst
Messages postés7Date d'inscriptionlundi 25 janvier 2010StatutMembreDernière intervention 5 septembre 2009
-
4 sept. 2009 à 10:58
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 2009
-
5 sept. 2009 à 12:40
Salut,
j'ai débuté en php.
voilà notre pbme, j'ai crée en php une code pour supprimer une ligne précise de table demande après une confirmation en javascript,mais lorsque je clique sur supprimer cet enregistrement,tous les enregistremnts de base sont supprimé.
Voici le code:
la page supsdemande.php définir la fonction confirme en js et afficher le contenu de table:
<script language="javascript">
function confirme( identifiant,art,date,rep )
{
var confirmation = confirm( "Voulez vous vraiment supprimer cet enregistrement?" ) ;
if( confirmation )
{
document.location.href = "supdde.php?cde_sce="+identifiant ;
}
}
</script>
</head>
<?php
//connection au serveur
$connect = mysql_connect( "localhost", "root", "" ) or die('erreur de connexion');
//sélection de la base de données:
$db = mysql_select_db( "gestion_stock" ) or die('base introuvable');
//requête de selection
$aff="select * from demande order by 'desig_sce'";
$reqt=mysql_query($aff) or die ('erreur sql'.$reqt.'
'.mysql_error());
while($sql=mysql_fetch_object($reqt))
{
echo($sql->cde_sce." ".$sql->desig_sce." ".$sql->type_sce." ".$sql->cde_art." ".$sql->desig_art." ".$sql->qte_dde." ".$sql->date_dde." ".$sql->resp_dde." ");
printf("cde_sce."')" >supprimer cet enregistrement
\n") ;
}
?>
</html>
et la page supdde.php supprimer le ligne correspond:
<?php
//connection au serveur:
$cnx = mysql_connect( "localhost", "root", "" ) or die("erreur de connexion");
//sélection de la base de données:
$db = mysql_select_db( "gestion_stock" ) or die("la base est introuvable");
//récupération de la variable qui va nous permettre de savoir quel enregistrement supprimer:
$cde_sce = $_GET["cde_sce"] ;
/* $cde_art = $_GET["cde_art"] ;
$date_dde = $_GET["date_dde"] ;
$resp_dde = $_GET["resp_dde"] ;*/
//requête SQL:
$sql = "DELETE
FROM demande
WHERE cde_sce = '$cde_sce' " ;
//exécution de la requête:
$requete = mysql_query( $sql) ;
//affichage des résultats, pour savoir si la suppression a marchée:
if($requete)
{
echo('<script language="javascript">alert("La suppression à été correctement effectuée");</script>') ;
}
else
{
echo('<script language="javascript">alert("La suppression à échouée");</script>');
}
?>
MERCI BIEN D'AVANCE
A voir également:
Suppression ligne par ligne mysql en php avec confirmation
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 5 sept. 2009 à 10:22
Ce n'est pas d eta requête que le echo ets important, mais celui du contenu transmis par ton formulaire.
Quand on te demande quel est le résultat du uprint_r de ton $_GET, on ne demande pas le echo de la requête qui suit, on te demande simplement de vérifier que ton formulaire transmet bien les variables voulues.
C'ets un bug archi classique des débutants de ne jamais vérifier les valeurs envoyées et de s'imaginer que tout fonctionne du premier coup.
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 5 sept. 2009 à 10:41
Ton script envoie bien quelque chose, en théorie, puisque tu insères un $_GET['cde_sce'].
C'ets que cette variable soit VRAIMENT passée qu'on te demande de vérifier. Si tu ne sais pas ce qu'est car_dump ou print_r, la documentation officiielle d ePHP ets là pour ça, on ne va pas non plus la recopier ici.
On veut bien aider, mais le moindre effort quand on pointe une commande ou fonction PHP est d'aller voir ce qu'elle fait et son rôle.
cbst
Messages postés7Date d'inscriptionlundi 25 janvier 2010StatutMembreDernière intervention 5 septembre 2009 5 sept. 2009 à 11:18
Merci bien nautilus99 à votre conseil
je retours à la documentation de php et je compris bien les rôles des 2 fonctions et j'utilise var_dump(cde_sce) au lieu de $_get['cde_sce'].Et maintenant tout s'execute bien.
Mais ,SVP, j'ai 1 question: j'effectue la même code avec autres tables et il execute bien,en revanche pour la table demande...
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 5 sept. 2009 à 12:40
Quand quelque chose s'exécute correctement sur pas mal d etables et pas sur une autre, c'ets qu'il y a une erreur dans le code de traitement ce cette table. Je ne suis pas devin et ne peut savoir où tu a spu faire une faute de frappe dans ton code.
'utilise var_dump(cde_sce) au lieu de $_get['cde_sce']
De plus, var_dump() ou print_r() ne servent que et uniquement à debugguer (visualiser le contenu de tableaux par exemple) mais ne remplacent pas ce contenu...
un var_dump( $_GET ) donnera l'ensemble du contenu de $GET, pour trouver ce qu'il y manque... var_dump ne remplace absolument pas le traitement des variables du $_GET dans le script, je pense que tu fais une erreur quelque part.