Fenetre de confirmation de suppression
RésoluGUIPE Messages postés 98 Statut Membre -
<html>
<head>
<?php $lien="admincat.php?action=Supprimer&id=".$cat["id"].""; ?>
<SCRIPT LANGUAGE="JavaScript">
function confirmation() {
var msg = "Êtes-vous sur de vouloir supprimer cette catégorie ?";
if (confirm(msg))
location.href("<? echo ''.$lien.'';?>");
}
</SCRIPT>
<body>
<?php
include("connection.php");
if(isset($_GET['action']))
{
switch($_GET['action'] )
{
case 'Supprimer':
//$suppr=mysql_db_query($db,"DELETE from cat WHERE id='".$_GET['id']."' "); // on va aller chercher le numéro d'id dans l'URL ==> GET.
echo'supprimer';
break;
case 'Ajouter':
$add=mysql_db_query($db,"INSERT INTO cat (nom_fr) VALUES ('".$_POST['nom_fr']."') WHERE id='".$_POST['id']."'" );
echo"case ajouter";
break;
case 'Modifier':
$mod = mysql_db_query($db,"UPDATE cat SET nom_fr='".$_POST['nom_fr']."' WHERE id='".$_POST['id']."'");
break;
default: echo"Choisissez un des trois choix";
}
}
$r_cat = mysql_db_query($db,"SELECT * FROM cat ORDER BY ordre ASC");
while($cat = mysql_fetch_assoc($r_cat))
{
echo'<br /><br /><form method="post" action="admincat.php?action=Modifier"><input type="text" name="nom_fr" value="'.$cat['nom_fr'].'" />';
echo'<input type="submit" value="Modifier" />
<input type="button" onClick="confirmation();" value="Supprimer">'; // on fait id= ... pour insérer le numéro d'id dans l'url !
echo'<input type="hidden" name="id" value='.$cat['id'].'" /></form>';
}
echo'<form method="post" action="admincat.php?action=Ajouter"><input type="text" name="nom_fr" " /><input type="submit" name="Ajouter" value="Ajouter" /><input type="hidden" name="id" value="'.$cat['id'].'" /></form>';
?>
<body>
<html>
Je veux faire une page d'administration pour les catégories d'un futur site web, voici mon code ci dessus. Je veux pouvoir modifier, supprimer ou ajouter des catégories. La requête modifier fonctionne. Maintenant je veux faire marcher la requête supprimer avec une fenêtre de confirmation. La fenêtre de confirmation s'affiche mais aucune suppression n'est effectuée. Je ne sais pas trop d'ou vient le problème. Mais il est possible que ce soit là :
<?php $lien="admincat.php?action=Supprimer&id=".$cat["id"].""; ?>
<SCRIPT LANGUAGE="JavaScript">
function confirmation() {
var msg = "Êtes-vous sur de vouloir supprimer cette catégorie ?";
if (confirm(msg))
location.href("<? echo ''.$lien.'';?>");
}
Configuration: Windows Vista Firefox 3.0.10
- Fenetre de confirmation de suppression
- Forcer suppression fichier - Guide
- Confirmation de lecture gmail - Guide
- Confirmation de lecture whatsapp - Guide
- Fenetre de navigation privée - Guide
- Fenetre windows - Guide
30 réponses
- 1
- 2
La suppression des catégories ne s'effectue pas malgré la fenêtre de confirmation, car la branche 'Supprimer' n'exécute pas de requête DELETE (celle-ci est commentée), ce qui empêche toute suppression. Des corrections essentielles incluent la suppression du commentaire sur la requête DELETE et la sécurisation de l'identifiant avec intval($_GET['id']), puis l'exécution effective de DELETE FROM cat WHERE id=... afin d'effectuer la suppression. En parallèle, la liaison JavaScript doit être corrigée (utiliser location.href = '...'; plutôt que location.href('...') et générer l'URL spécifique à chaque ligne, par exemple via un lien avec confirm()).
<?php $lien="admincat.php?action=Supprimer&id=".$cat["id"].""; ?>
<head>
<body>
<?php
include("connection.php");
if(isset($_GET['action']))
{
switch($_GET['action'] )
{
case 'Supprimer':
$r_cat=mysql_db_query($db,"SELECT * FROM cat WHERE id=".$_GET['id']."");
while($cat = mysql_fetch_assoc($r_cat))
{echo'Voulez-vous vraiment supprimer '.$cat['nom_fr'].'?
<form method="post" action="admincat.php?action=SupprimerOK&id='.$cat['id'].'"><input type= "submit" value="OK">';
break;
}
case 'SupprimerOK':
//$suppr=mysql_db_query($db,"DELETE from cat WHERE id='".$_GET['id']."' "); // on va aller chercher le numéro d'id dans l'URL ==> GET.
echo'supprimer';
break;
case 'Ajouter':
$add=mysql_db_query($db,"INSERT INTO cat (nom_fr) VALUES ('".$_POST['nom_fr']."') WHERE id='".$_POST['id']."'" );
echo"case ajouter";
break;
case 'Modifier':
$mod = mysql_db_query($db,"UPDATE cat SET nom_fr='".$_POST['nom_fr']."' WHERE id='".$_POST['id']."'");
break;
default: echo"Choisissez un des trois choix";
}
}
La suppression marche quand j'appuie sur supprimer mais le problème c'est que elle fonctionne sans que j'ai autorisé la suppression en appuyant sur OK. bizarre.
$r_cat = mysql_db_query($db,"SELECT * FROM cat ORDER BY ordre ASC");
while($cat = mysql_fetch_assoc($r_cat))
{
echo'<br /><br /><form method="post" action="admincat.php?action=Modifier"><input type="text" name="nom_fr" value="'.$cat['nom_fr'].'" />';
echo'<input type="submit" value="Modifier" />
<input type="button" value="Supprimer" onClick="document.location=\'admincat.php?action=Supprimer&id='.$cat["id"].'\'" />'; // on fait id= ... pour insérer le numéro d'id dans l'url !
echo'<input type="hidden" name="id" value='.$cat['id'].'" /></form>';
}
echo'<form method="post" action="admincat.php?action=Ajouter"><input type="text" name="nom_fr" " /><input type="submit" name="Ajouter" value="Ajouter" /><input type="hidden" name="id" value="'.$cat['id'].'" /></form>';
?>
<body>
<html>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionecho'<input type="button" value="Supprimer" onClick="document.location=\'admincat.php?action=Supprimer&id='.$cat["id"].'\'" />
<TR>
<TD>Position</TD>
<TD>
<SELECT name="ordre">
<OPTION VALUE="1">1</OPTION>
<OPTION VALUE="2">2</OPTION>
<OPTION VALUE="3">3</OPTION>
<OPTION VALUE="4">4</OPTION>
<OPTION VALUE="5">5</OPTION>
<OPTION VALUE="6">6</OPTION>
<OPTION VALUE="7">7</OPTION>
<OPTION VALUE="8">8</OPTION>
<OPTION VALUE="9">9</OPTION>
<OPTION VALUE="10">10</OPTION>
<OPTION VALUE="11">11</OPTION>
<OPTION VALUE="12">12</OPTION>
</SELECT><input type="button" onClick="document.location=\'admincat.php?action=Positionner&id='.$cat["id"].'\'" />
</TD>
</TR>
</form>';
J'ai créer aussi un autre case "Positionner" dans lequel je ferai ma requête pour la position. Mais ça ne marche pas.
Est ce que ma requête est excate au moins ?
==> $pos=mysql_db_query($db,"UPDATE cat SET ordre='".$_POST['ordre']."' WHERE id='".$_POST['id']."'");
Mais
Position
<SELECT name="ordre">
for(i=0;i<100;i++)
{
<OPTION VALUE="i">??? je nsais pas quoi mettre ici</OPTION>
}
echo '<SELECT name="ordre">';
for ( $i=0 ; $i<100 ; $i++ ) {
echo "<OPTION VALUE=\"$i\">$i</OPTION>";
}
echo '</SELECT>';Par contre, je ne comprends pas pourquoi tu utilises des boutons et du JS plutôt que des formulaires, qui sont spécifiquement faits pour ça... En plus, si Javascript est désactivé, ton application devient inutilisable.
<SELECT name="position">';
for($i=1;$i<100;$i++)
{
echo'<OPTION VALUE="position">'.$i.'</OPTION>';
}
echo'</SELECT>
<input type="submit" value="Positionner" /></form>';
Il n'y a plus d'erreur mais ça ne marche quand même pas !
[CODE]for($i=1;$i<100;$i++)
{
echo'<option value="$i"';
if($i==$cat['ordre'])
{
echo'<option selected="selected">';
}
echo'>'.$i.'</option>';
echo'</select></form>';
}[/CODE]
Il n'y a plus d'erreur mais cela ne fonctionne pas du tout. Sur la page générée je vois bien la liste déroulante mais dedans il y a juste une valeur ==> le 1. Puis ensuite le reste des chiffres jusqu'à 99 ne s'affiche pas dans ma liste déroulante mais en dessous. Jcomprends pas trop.
for($i=1;$i<100;$i++)
{
echo'<option value="$i"';
if($i==$cat['ordre'])
{
echo' selected="selected">'.$i.'</option>';
}
else
{
echo'>'.$i.'</option>';
}
}
Notice: Undefined index: ordre in c:\users\dimexbat5\desktop\ectfrance.com\scripts\admincat.php on line 38
C'est la ligne de ma requête de positionnement :
$pos=mysql_db_query($db,"UPDATE cat SET ordre='".$_POST['ordre']."' WHERE id='".$_GET['id']."'");
De plus lorsque je regarde dans ma table la catégorie que j'ai voulu changer de position, bé son ordre se met à 0, jcomprends pas :cry:
$add=mysql_db_query($db,"INSERT INTO cat (nom_fr,nom_en) VALUES ('".$_POST['nom_fr']."','".$_POST['nom_en']."') ");
mysql_real_escape_string($_POST['nom_fr']);
mysql_real_escape_string($_POST['nom_en']);
- 1
- 2