Fenetre de confirmation de suppression

Résolu/Fermé
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 - 11 mai 2009 à 14:46
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 - 15 mai 2009 à 15:17
Bonjour, tout d'abord voici mon code :

<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.'';?>");
}

30 réponses

GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
14 mai 2009 à 13:02
C'est bon ça fonctionne. A l'aide des fonctions addslashes et htmlentities. J'ai vu sur internet qu'il fallait les utiliser pour faire ce que je voulais. Meme si j'aimerai avoir des explications sur leurs roles réels !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
14 mai 2009 à 14:15
addslashes échappe certains caractères permettant d'éviter les injections SQL (ce que fait mysql_real_escape_string, mais de façon plus poussée et plus en accord avec la base de données). htmlentities convertit les caractères tels que < ou > en < ou >. Ca évite que n'importe qui puisse ajouter du code HTML à ta page, voire des scripts, puisque un tel code ne sera pas interprété en tant que tel, mais afficher comme du texte simple.

edit : cf. https://www.php.net/manual/fr/function.addslashes.php qui conseille d'utiliser les fonctions spécifiques à la base de données lorsqu'elles sont disponibles.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
14 mai 2009 à 14:20
D'accord merci.

Encore une petite chose, mon code fonctionne mais j'obtiens quand même ces 2 notifications :
==>


Notice: Undefined index: nom_fr in c:\users\dimexbat5\desktop\ectfrance.com\admin\admincat.php on line 10

Notice: Undefined index: nom_en in c:\users\dimexbat5\desktop\ectfrance.com\admin\admincat.php on line 11
Position

suite à la déclaration de ces variables :
$nomfr=addslashes($_POST['nom_fr']);
$nomen=addslashes($_POST['nom_en']);

Je nsais pas trop comment remédier à ces 2 erreurs
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
14 mai 2009 à 15:11
Essaie comme ça :
if ( isset( $_POST ) ) {
    $nomfr=addslashes($_POST['nom_fr']); 
    $nomen=addslashes($_POST['nom_en']); 
}
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
14 mai 2009 à 15:56
C'est bon merci mon problème est résolu !
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
14 mai 2009 à 17:24
Bon pour ce qui est de l'affichage du menu, c'est fait. J'ai bien mon menu déroulant comportant le nom de mes catégories puis quand je clique dessus, la liste des pages associées a ma catégories s'affichent.

Maintenant ce que je veux faire c'est administrer mes pages donc par catégorie. Mais donc dans ce cas là il faudrait que j'ai autant de pages d'administration que de catégories à savoir dans mon cas 11.

C'est à dire que je vais faire 11 liens sur mes 11 catégories vers 11 pages différentes dans laquelle je pourrais gérer mes pages.
PS: Je ne peux pas faire le lien en cliquant sur ma catégorie dans le menu parce que en cliquant g déjà une action qui s'effectue, à savoir le déroulement de mes pages associées à la catégorie.

Donc déjà ce que je veux faire dans un premier temps c'est en cliquant sur le noms de mes catégories, atterir sur une page dans lequel se trouve le contenu de ma table(txt_fr,txt_en,titre_fr,titre_en,ordre) et pouvoir les gérer !

Est-ce la bonne méthode ?
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
14 mai 2009 à 17:31
Non ! L'utilisation d'un langage tel que php sert justement à générer dynamiquement les pages ! Donc tu dois passer un paramètre avec ton lien (genre admin.php?cat=2) et interroger la base en fonction de ça.
0

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

Posez votre question
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
14 mai 2009 à 17:54
Jcomprends pas ton raisonnement, quel lien ?
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
14 mai 2009 à 20:14
Je te cite : "C'est à dire que je vais faire 11 liens sur mes 11 catégories vers 11 pages différentes dans laquelle je pourrais gérer mes pages."
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
14 mai 2009 à 21:03
Bé oui c bien ce ke g di !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
14 mai 2009 à 22:50
Ben ne me demande pas quel lien, c'est toi qui en parles...
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
15 mai 2009 à 08:25
Tu ve donc ke je fasse un seul lien pour me mener à 11 pages différentes ?
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
15 mai 2009 à 09:27
Voici ce que j'ai fait !


[CODE]$r_cat = mysql_db_query($db,"SELECT * FROM cat ORDER BY ordre ASC");
while($cat = mysql_fetch_assoc($r_cat))
{

echo' <div align="right"><form method="post" action="adminpages2.php&id='.$cat['id'].'">
<select name="catégories">
<option value="catégories">'.$cat['nom_fr'].'</option>
</select></form>';

}[/CODE]

Je souhaite créer une liste déroulante avec le noms de mes catégories dedans, le problème là est que ça affiche 11 fois(11 étant le nombre de mes catégories) une liste déroulante avec à l'intérieur 1 des 11 noms de ma catégorie. Et ce n'est pas ce que je veux. Je veux 1 seule liste déroulante avec mes 11 catégories qui défilent !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
15 mai 2009 à 09:46
Pourquoi tu refais un select ? Tu as déjà ta catégorie passée par l'url dans la variable $_GET['id']... Tu n'as plus qu'à faire le traitement que tu veux dessus.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
15 mai 2009 à 10:17
Bé non pas sur cette page. Sur cette page j'affiche juste un menu et une liste déroulante. C'est juste ma page précédente sur l'administration catégories que j'avais mis le numéro de la catégorie dans l'url !
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
15 mai 2009 à 15:17
C'est bon j'ai fait mon menu déroulant pas de problème. J'ai créé ma 2ème page ou je vais pouvoir gérer mon contenu selon la catégorie. J'ai utilisé les variables de session pour pouvoir récupérer l'id de ma catégorie sur la 2ème page. Voici le code :

<?php

session_start(); // (pour utiliser les variables de session)
// connexion a la BD
include("connection.php");
// recuperation de l'id de la categorie
if (isset($_POST['categories']) && $_POST['categories']!='') // vérification si on a bien choisi une des catégories dans la liste déroulante
{
// on met la categorie dans une variable de session
// ce qui permettra de l utiliser par la suite
$_SESSION['idcat'] = mysql_real_escape_string($_POST['categories']);
}

if(isset($_GET['action'])&& $_SESSION['idcat'])
{

switch($_GET['action'] )
{
case 'Supprimer':

$r_pages=mysql_db_query($db,"SELECT * FROM pages WHERE id=".$_GET['id']."");
while($pages = mysql_fetch_assoc($r_pages))
{
echo'Voulez-vous vraiment supprimer la page '.$pages['titre_fr'].'?
<form method="post" action="adminpages2.php?action=Suppression&id='.$pages['id'].'"><input type="submit" value="Suppression" />
<input type="button" value="Annuler" onClick="document.location=\'adminpages2.php\'" /></form>';
}
break;

case 'Suppression':
$suppr=mysql_db_query($db,"DELETE from pages WHERE id='".$_GET['id']."' ");
break;

case 'Ajouter':
$add=mysql_db_query($db,"INSERT INTO pages (titre_fr,titre_en,txt_fr,txt_en,ordre) VALUES ('$_POST[titre_fr]','$_POST[titre_en]','$_POST[txt_fr]','$_POST[txt_en]','$_POST[ordre]' ) ");
break;

case 'Modifier':
echo'<meta http-equiv="Refresh" content="1; url=adminpages2.php">';
$mod = mysql_db_query($db,"UPDATE pages SET titre_fr='$_POST[titre_fr]', titre_en='$_POST[titre_en]', txt_fr='$_POST[txt_fr]', txt_en='$_POST[txt_en]',ordre='$_POST[ordre]' WHERE id='$_POST[id]'");
break;

default: echo"Choisissez un des trois choix";
}
}


$r_pages= mysql_db_query($db,"SELECT * FROM pages WHERE id_cat='".$_SESSION['idcat']."' ORDER BY ordre ASC");

while($pages = mysql_fetch_assoc($r_pages))
{

echo'<form method="post" action="adminpages2.php?action=Modifier"><input type="text" name="titre_fr" value="'.$pages['titre_fr'].'" /><input type="text" name="titre_en" value="'.$pages['titre_en'].'" /><input type="text" name="txt_fr" value="'.$pages['txt_fr'].'" /><input type="text" name="txt_en" value="'.$pages['txt_en'].'" />
Position
<select name="ordre">';
for($i=1;$i<=100;$i++)
{
echo'<option value="'.$i.'"';
if($i==$pages['ordre']) // vérification
{
echo' selected="selected"';
}
echo'>'.$i.'</option>';
}
echo'</select>';
echo'<input type="submit" value="Modifier" /><input type="hidden" name="id" value="'.$pages['id'].'" />';
echo'<input type="button" value="Supprimer" onClick="document.location=\'adminpages2.php?action=Supprimer&id='.$pages['id'].'" /></form> ';

}

echo'<div align="right"><form method="post" action="adminpages2.php?action=Ajouter&id='.$pages['id'].'"><input type="text" name="titre_fr" /><input type="text" name="titre_en" /><input type="text" name="txt_fr" /><input type="text" name="txt_en" />
Position
<select name="ordre">';
for($i=1;$i<=100;$i++)
{
echo'<option value="'.$i.'"';
if($i==$pages['ordre'])
{
echo' selected="selected"';
}
echo'>'.$i.'</option>';
}
echo'</select><input type="submit" name="Ajouter " value="Ajouter une catégorie" /></form>';

?>
</body>
</head>
</html>

Ca ne marche pas encore, pour l'instant il y a une erreur
==>
Notice: Undefined index: idcat in c:\users\dimexbat5\desktop\ectfrance.com\admin\adminpages2.php on line 48
La ligen 48 correspond à cette ligne de code ==>$r_pages= mysql_db_query($db,"SELECT * FROM pages WHERE id_cat='".$_SESSION['idcat']."' ORDER BY ordre ASC");.

Je pense qu'il faut sans doute utiliser un if isset($_SESSION['idcat']) mais j'ai essayé et ça ne marche pas. Peut etre que je le place au mauvais endroit. Si vous avez des idées.Merci.
0