IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

suppression d'enregistrement et message de confirmation [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut suppression d'enregistrement et message de confirmation
    Salam ; j'ai un lien de suppression d'enregistrement qui affiche un message de confirmation en javascript. jusqu’à ici pas de problème.
    si je désactive le js la suppression s'exécute sans contrôle...!! là sa me pose problème?
    comment contourné se problème en php?
    fichier listes.php: la confirmation se fait dans cette page avec du javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ........
    <td><a title="Suppression d'enregistrement"href="../interfaces/suppr.php?cdec=<?php echo $list['cdec'];?> " class="info"><img src="../image/supr.png" onclick="return confirm('Voulez-vous vraiment supprimer cet enregistrement ?');"></td>
    fichier supr.php: la suppression se fait dans cette page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    .......
    include('../mod/cbd.inc.php');
     
    $cdec= (integer) $_GET['cdec'];
    			$supenreg=$cbd->prepare('DELETE  FROM tabzero where cdec=:cdec ');
    			$supenreg->bindParam(':cdec', $cdec , PDO::PARAM_INT); 
     
    			try {
    					// On envois la requète
    			$supenreg->execute();
    					// libèré la connexion du serveur
    			$supenreg->closeCursor();	
    			header ('location: ../interfaces/tab.php'); 		
     
    			  }
    			catch( Exception $e ){
    			  echo 'Erreur d\'affichage : ', $e->getMessage('erreur de requête!!!');
    			  }

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Tu vas être obligé de mettre une page de confirmation "entre deux", c'est la seule solution.

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ; voila j'ai procéder comme suite mais j'ai un problème de variable non reconnue $cdec.
    page proposant la suppression :
    lidentifant de l’enregistrement concerné par la suppression est transféré par $_GET.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ........
    <td><a title="Suppression d'enregistrement" href="../interfaces/suppr.php?cdec=<?php echo $list['cdec'];?> " class="info"><img src="../image/supr.png"  ></td>
    page suppr.php :
    propose la confirmation de la suppression , si oui la demande est exécutée sinon redirection vers la page liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    .........
    <?php
    include('../mod/cbd.inc.php');
    $cdec= (integer) $_GET['cdec'];
    $suppr=0; // initier a zero la variable de suppression 0 ne fait rien , 1 supprime
     
    ?>
    <!DOCTYPE html>
    <HTML>
    <head>
    	<!--Pour forcer le navigateur à afficher en mode IE9, sans quoi il peut passer en mode quirks.-->
    	<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    	<meta charset="utf-8" />
    	<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <!-- application dynamique  -->
    	<link rel="shortcut icon" href="image/favs3g.ico" />
    	<link rel="stylesheet" media="screen" type="text/css" href="css/style_div.css"> 
    	<title> Suppression d'enregistrement</title>
     
     
    </head>
    <body>
    	<p>Supprimer l’enregistrement en cours</p>
    <?php
        if(isset($cdec) AND $suppr == 0) 
            {
    			echo '<p>Voulez vraiment supprimer cet enregistrement ?"</p>'; 
    			echo '<p><a href="suppr.php?cdec=' . $cdec . '&$suppr==1">Oui</a>';
     
    			// En cas d'annulation, on revient tout simplement a la page liste enregistrement
    			echo '<a href="../interfaces/tab.php">Annuler</a></p></center>';
     
    		}
    		// si confirmation suppr =1
        //=======================
     
    	elseif(isset($cdec) AND $suppr ==1)
    	{ 		
     
    			 requête de suppression 
    			$suppr==0;
    			echo '<p>L\enregistrement a été bien supprimé.</p>;
    			
                    <p><a href="../interfaces/tab.php">Liste enregsitrement</a></p>';
     
     
    			  }
    			catch( Exception $e ){
    			  echo 'Erreur d\'affichage : ', $e->getMessage('erreur de requête!!!');
    			  }
     
     
        }
     
    ?>
        </body>
    </html>
    en résumé la variable $cdec n'est pas reconnue malgré qu'elle est transmis.e

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ; erreur:
    faire passer le numéro par l'URL
    je vais essayé avec $_SESSION...

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Heu le dernier code que tu as posté ne peut pas fonctionner, tu peux poster ce que tu as vraiment fait ?

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ; j'ai choisie la solution de benjamin est sa donner ça:
    le principe est de faire passé le N° enregistrement par $_POST.
    le lien de suppression je lé changé en formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ..........
    <td><form method="post" action="suppr.php">
    	<input type="hidden" name="cdec" value="<?php echo $list['cdec'];?>" />
    	<input type="image" src="../image/delete.png" alt="supprimer" name="del_img">
    	</form> 
    </td> 
    ...........
    une fois le formulaire posté :
    page suppr.php confirme la suppression avec message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    ..........
    <body>
    	<p> Confirmation de suppression de l'enregistrement</p>
    <?php
     
    echo $_POST['cdec'];
    var_dump ($_POST['cdec']);
    $cdec=$_POST['cdec'];
    var_dump ($cdec);
    if(isset($_POST['cdec']) && $_POST['cdec']!='')
    {
    	echo '
    	Voulez-vous vraiment supprimer cet enregistrement ?<br />
    	<form method="post" action="suppr1.php">
    	<input type="hidden" name="cdec"  value="'.$cdec.'">
    	<input type="submit" name="Supprimer" value="Supprimer"> &nbsp;&nbsp;
    	<a href="../interfaces/tab.php">Annuler</a>
    	</form>
    	';
    }
    ?>
     
     </body>
    si l'utilisateur annule revient sur la liste d'enregistrement sinon :
    confirme la suppression est revient sur la liste d'enregistrement :
    page suppr1.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    .......
    <body>
    	<p>Suppression de l'enregistrement</p>
    <?php
    echo $_POST['cdec'];
    if(isset($_POST['cdec']) && $_POST['cdec']!='')
    	{
    	$cdec= $_POST['cdec'];
    	//$cdec = intval(mysql_real_escape_string($_POST['id'])); 
    	// requête de suppression 
    					$supenreg=$cbd->prepare('DELETE  FROM tab where cdec=:cdec');
    					$supenreg->bindParam(':cdec', $cdec , PDO::PARAM_INT); 
     
    				try {
    					// On envois la requète
    						$supenreg->execute();
    					// libèré la connexion du serveur
    						$supenreg->closeCursor();	
    					header ('location: ../interfaces/tab.php'); 		
     
    					}
    			catch( Exception $e ){
    			  echo 'Erreur d\'affichage : ', $e->getMessage();
    			  }  
    			}
     
     
     
    ?>
     </body>
    en résumé y'a :
    page proposant la suppression.
    page de message de confirmation de suppression suppr.php
    page d'exécution de la suppression. suppr1.php
    s'il y'a une autre méthode (sauf js) plus optimisé je serai preneur

    NB/ code modifier sur la base du code proposé par jreaux63 en date 12/05/2009 http://www.developpez.net/forums/d74...ees-php-mysql/

  7. #7
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Remarque, y'a pas de raison que ça marche pas par $_GET. Dans le doute, tu peux aussi te servir de $_REQUEST qui représente $_GET + $_POST

    Tu devrais quand même penser à sécuriser la réccupération d'informations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // très mauvais (car le isset sur $cdec renverra true alors que l'informatio n'est peut être pas présente dans $_POST)
    $cdec = (integer)$_POST['cdec'];
    // pas bon
    $cdec=$_POST['cdec'];
    // bon
    $cdec = isset($_POST['cdec']) ? $_POST['cdec'] : null;
    // meilleur
    $cdec = filter_input(INPUT_POST, 'cdec', FILTER_VALIDATE_NUMBER);
    Enfin, si c'est critique, tu peux sécuriser avec un token pour éviter la suppression non-autorisée d'items.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2011] Suppression message de confirmation (enregistrement xlsm vers xlsx)
    Par GreatTeacherOnizuka dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2015, 18h08
  2. Réponses: 9
    Dernier message: 10/05/2010, 21h28
  3. Réponses: 1
    Dernier message: 12/02/2009, 17h13
  4. [MySQL] Enlever un enregistrement et message de confirmation
    Par DjChat dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/04/2008, 10h58
  5. Réponses: 2
    Dernier message: 03/08/2004, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo