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

pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 mai 2009 à 16:49
Essaie plutôt
location.href("<? echo $lien; ?>"); 
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
11 mai 2009 à 17:03
9a ne marche toujours pas ! Tu ne penses pas que l'erreur vient de mon lien vers mon case "Supprimer" ? ==>

<?php $lien="admincat.php?action=Supprimer&id=".$cat["id"].""; ?>
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 mai 2009 à 19:28
Non, a priori je ne vois pas de raison que ça pose problème... par contre essaie de sécuriser un peu tes requêtes, là tu es vulnérables aux injections SQL (enfin, dès que le script marchera...).
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
11 mai 2009 à 20:19
Je prends note ! Je pense savoir d'ou vient mon problème, je n'arrive pas à rentrer dans le case supprimer donc je pense que l'instruction qui est fausse est mon onClick :


<input type="button" value="Supprimer" onClick="document.location=\'admincat.php?action=Supprimer&id="'.$cat["id"].'"\' " />';
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
11 mai 2009 à 20:34
Essaie avec document.location.href ou window.location.href.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
11 mai 2009 à 20:46
Ok j'essaierai ça demain merci et tu ne penses pas que ça peut venir d'une erreur de quotes ou de double quotes car quand j'avais regardé le code source de ma page je crois qu'il y avait des erreurs avec ça(c'était en rouge). Pourtant la syntaxe me parait bonne .
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
12 mai 2009 à 09:36
<html>
<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>
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
12 mai 2009 à 11:37
J'ai trouvé mon erreur. J'avais fermé mon premier while après le break donc forcément ça ne pouvait pas marcher. Maintenant ça marche , il ne me reste plus qu'à faire fonctionner l'ajout de ma catégorie ou je le souhaite !
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
12 mai 2009 à 14:01
Le problème qui se présente à moi est comment pouvoir laisser le choix à l'utilisateur de placer la nouvelle catégorie ou il le souhaite parmi les autres ! Si vous savez comment faire, Merci à vous pour votre écoute !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
12 mai 2009 à 16:28
Il suffit de proposer un autre champ dans le formulaire, genre une liste déroulante avec les entiers de 1 au nombre de catégories. La valeur de ce choix correspondra à la position souhaitée de la catégorie.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
12 mai 2009 à 16:38
Oui voici ce que j'ai fait :


echo'<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
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
12 mai 2009 à 17:00
C'est bon cela fonctionne. Merci à vous !
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
12 mai 2009 à 17:51
Dsl encore mais j'aimerais au lieu d'énumérer toutes les options value, créer une boucle allant de 1 à 100 et donc d'écrire qu'une seule fois option value dans la boucle. Regardez ce que j'ai fait, je nsais pas trop comment faire !


Position
<SELECT name="ordre">
for(i=0;i<100;i++)
{
<OPTION VALUE="i">??? je nsais pas quoi mettre ici</OPTION>
}
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
12 mai 2009 à 20:04
Plutôt que faire une boucle de 1 à 100, il vaudrait mieux en faire une qui ne va que jusqu'à nombre_de_categories + 1.
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.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
13 mai 2009 à 09:26
Cette méthode ne marche pas. Dans le menu déroulant il s'affiche uniquement $i. Il doit y avoir une chose que j'ai oubliée.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 > GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 09:36
C'est bon après une petite rectification : la concaténation


<SELECT name="ordre">';
for($i=0;$i<100;$i++)
{
echo'<OPTION VALUE="$i">'.$i.'</OPTION>';
}
echo'</SELECT>
</form>';
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 09:52
J'ai tout de même une erreur, on me dit que ma variable position est indéfini à la ligne ou je fais ma requête de positionnement. Pourtant je l'ai bien déclaré comme étant le nom du select :


<SELECT name="position">';
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
13 mai 2009 à 09:57
Fais un formulaire, position n'est que l'attribut name d'une balise select, pas un nom de varible...
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 10:07
<form method="post" name="form" action="document.location=\'admincat.php?action=Positionner&id='.$cat["id"].'">
<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 !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
13 mai 2009 à 10:18
Quel traitement fais-tu à la réception du formulaire ?

edit : Je croyais que c'était pour l'ajout d'une catégorie, comment connais-tu l'id dans ce cas ?
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
13 mai 2009 à 10:21
$pos=mysql_db_query($db,"UPDATE cat SET ordre='".$_POST['position']."' WHERE id='".$_GET['id']."'");


J'affiche une liste déroulante contenant des chiffres. Donc quand j'ajoute ma catégorie, peut importe ou elle se place je pourrais le modifier de suie !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 10:34
Je croyais que c'était pour l'ajout d'une catégorie, comment connais-tu l'id dans ce cas ?

L'id dépend de l'insertion dans ta base, non ?
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
13 mai 2009 à 10:37
Bé je n'ai pas besoin de connaitre l'id de la nouvelle catégorie insérée puisque ensuite je pourrais placer la catégorie ou je la veux grace à ma liste déroulante position !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 11:06
D'accord, donc tu crées une liste déroulante pour chaque catégorie ?
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 14:02
Voici ce que j'ai fait.

[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.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 14:25
J'ai modifié mon code et l'eereur précédente n'y est plus, j'ai bien ma liste de chiffres de 1 à100 mais les modifications de position ne marchent toujours pas !


for($i=1;$i<100;$i++)
{
echo'<option value="$i"';
if($i==$cat['ordre'])
{
echo' selected="selected">'.$i.'</option>';
}
else
{
echo'>'.$i.'</option>';
}
}
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 14:40
Le problème que j'ai est que quand je choisis une catégorie, que je prends une position dans la liste déroulante et que j'appuie sur positionner, j'ai une erreur ==>
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:
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
13 mai 2009 à 15:24
L'erreur que tu as signifie simplement que ta variable $_POST['ordre'] n'existe pas... C'est aussi la cause de la remise à zéro. Vérifie ton formulaire.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 14:54
Voilà en fait dés que je veux changer la position d'une de mes catégories, son ordre se met automatiquement à 0 !.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 15:42
Résolu c'est bon, merci à vous !
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 16:01
Maintenant je dois réaliser une page semblable d'administration de contenu( qui sont en fait des pages que j'ai en format pdf). Donc voilà je vous tiendrais informer si j'ai des soucis. Merci encore de votre aide et particulièrement à toi pyschopathe !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
13 mai 2009 à 16:58
De nada, repasse nous voir si tu as un soucis.
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
13 mai 2009 à 18:02
Désolé j'aurais besoin juste encore un petit peu de votre aide. Mon code marche mais quand je veux modifier ma catégorie en mettant des '+texte ou "+texte, ça ne fonctionne pas. Quel est la solution pour remédier à ça ? Merci !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
13 mai 2009 à 21:05
Euh... tu pourrais être un peu plus explicite ?
0
GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009 > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
13 mai 2009 à 23:03
Bé je crois que c'est mysql qui a du mal avec des caractéres spéciaux comme ' ou ". D'après mes sources , la fontion mysql_real_escape_string pourrait m'être utile reste à savoir comment l'utiliser !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > GUIPE Messages postés 94 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 15 décembre 2009
14 mai 2009 à 09:43
Tu rencontres l'erreur à quel moment ? Quand tu veux faire quoi ? Donne un exemple de code... Pour mysql_real_escape_string, il suffit de passer en paramètre la chaine à protéger et elle la retourne avec certains caractères échappés. Vas voir la doc sur le site php pour plus d'infos.
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 à 09:49
Voilà ce que j'ai fait, mais ça ne fonctionne pas pourtant j'ai bien fait comme sur la doc php, je comprends pas. Il ne prend toujours pas en compte mes catégories si elles possèdent des ' ou des " à l'intérieur


$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']);
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 à 10:08
Je pense plutot que c'est la fonction addslashes que je dois utiliser mais je nsais pas comment !
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 à 10:27
Ca s'utilise comme ça...
$add = mysql_db_query( $db, "INSERT INTO cat (nom_fr,nom_en) VALUES ('".mysql_real_escape_string( $_POST['nom_fr'] )."','".mysql_real_escape_string( $_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 à 11:13
$add=mysql_db_query($db,"INSERT INTO cat (nom_fr) VALUES ('$_POST[nom_fr]' ) ");

C'est addslashes que je dois utiliser mais je nsais pas comment !
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 à 11:23
mysql_real_escape_string fera très bien l'affaire. Essaie avec.
addslashes s'utilise de la même manière de toutes façons...
0