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 :

Execution d'une comande PHP dans une confirmbox jevascript


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut Execution d'une comande PHP dans une confirmbox jevascript
    Petite question

    Je voudrais faire une suppression en PHP sur ma base de données.

    Sa sa marche bien :-)

    Je la fais comme sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query("DELETE FROM entite WHERE ID='$Entite_a_suprimmer'");
    Mon soucis c'est que j'aimerais afficher une confirmbox affin de permettre au user d'annuler ou confirmer la suppression.

    J'ai beau essayer j'arrive pas a faire marcher la commande PHP dedans

    Si quelque-un a une idée sa serait sympa.

    Merci d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je n'ai probablement pas bien compris la question : j'ai l'impression que tu essayes de faire exécuter une fonction php par une fonction js (ce qui n'est pas possible)

    Comment fais-tu sans la confirmation ? Par un formulaire et un bouton, quelque chose du style ?

    EDIT : Prem's !

  3. #3
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonjour EIN-LESER

    Tu demandes
    Mon soucis c'est que j'aimerais afficher une confirmbox affin de permettre au user d'annuler ou confirmer la suppression.
    Alors sachant que chaque PHP n'agit qu'une seule fois coté serveur pour envoyer coté client un HTML,Javascript et feuille de style, Il faut absolument poser ta question de confirmation avant de lancer le PHP qui va faire le MYSQL !

    EDIT : Whaou, le temps d'écrire ma réponse et tu avais répondue, escuses moi

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    JavaScript ne peut pas directement executer des fonctions PHP, ce serait une hérésie :p

    Soit, lors de la confirmation, tu rediriges vers la page qui est chargée de supprimer en lui passant l'identifiant en paramètre. Soit tu fais une requête AJAX :

    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
     
    var xhr = null;
    function delete(Id){
        if(confirm('Confirmer la suppression')){
            window.location.href = '/suppression.php?id='+Id;
            // OU
            getXhr();
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status == 200){
                    var response = xhr.responseText; // renvoie un booléen ?  
                }
            }
            xhr.open("POST",'/suppression.php',true);
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xhr.send("id="+Id);
        }
    }
    function getXhr(){
        if(window.XMLHttpRequest) xhr = new XMLHttpRequest(); 
        else if(window.ActiveXObject){  
            try{
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e){
              xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        else{ 
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest, veuillez le mettre à jour"); 
            xhr = false; 
        } 
     }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo '<a href="#" onclick="delete('.$legume_id.');">Carotte</a>'; ?>
    edit : var xhr = null; rajouté

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Ou alors sans utiliser AJAX

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="post" action="delete.php" onsubmit="return confirm('Effacer ?');">
        <input type='hidden' value='mon_id'/>
        <input type='submit' value='effacer'/>
    </form>
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="delete.php?id=5" onclick="return confirm('Effacer ?');">essai</a>

  6. #6
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    La page sur la quelle je suis est déjà la page cible d'un formulaire.

    Le plus simple serait peut être de vous montrer le code complet

    Première page:

    Code html : 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
     
    <html>
    <head>
    <title>Document sans titre</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="Style_Action_Ajout_Entites.css" rel="stylesheet" type="text/css">
     
    <script type="text/javascript">
    <!--Fonction verifiant si le numero de l'entité a été renseigné-->
    function verification_numero(){
            if(document.getElementById('Entite_a_suprimmer').value == "N° identifiant"||document.getElementById('Entite_a_suprimmer').value ==""){
                    alert ('La saisie du numero de l\'entité est obligatoire!!!!');
                    return false;
            }
            else{
                    return true;
            }
    }
     
    function donne_focus(){
            document.getElementById('Entite_a_suprimmer').focus();
    }
    </script>
    </head>
     
    <body onLoad="donne_focus();">
    <h1>Suppression d'une entité:</h1>
     
    <form action="Action_suppression_entite.php" method="post" onSubmit="return verification_numero();">
    <p>N° d'identification de l'entité a supprimer:</p>
    <input type="text" name="Entite_a_suprimmer" value="000000" onfocus="javascript:if(this.value=='000000')this.value='';" title="Entrez ici le N° identifiant" id="Entite_a_suprimmer" onblur="if(this.value.length==0){this.value='000000'}" maxlength="6" />
    <br />
    <br />
    <input type="submit" value="Valider" id="valider"/>
     
    </form>
     
    </body>
    </html>

    Page cible ou je voudrais mettre la confirmbox ou autre moyen de confirmation:

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    <html>
    <head>
    <title>Document sans titre</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     
    <?PHP
    mysql_connect("localhost","root","");
    mysql_select_db("bibliotheque");
     
    /*Recuperation des données present dans la base de données neccesaires aux verifications avant enregistrement.*/
    $reponseEditeur=mysql_query("select * from entite order by ID") or die("Erreur de lecture dans la table entité");
     
    /*Recuperation des informations du formulaire de la page ajout_entites.*/
    $Entite_a_suprimmer=$_POST['Entite_a_suprimmer'];
     
     
     
     
     
     
    mysql_close();	
    ?>
    <link href="Style_Action_Ajout_Entites.css" rel="stylesheet" type="text/css">
    </head>
     
    <body>
    <?PHP
    mysql_connect("localhost","root","");
    mysql_select_db("bibliotheque");
     
    /*Verification si la saise ne comporte que des chiffres.*/
     
    /*Si la saisie comporte autre chose que des chiffres:*/
    if (preg_match("#[^0-9]# ", $Entite_a_suprimmer))
    {
    	/*echo 'VRAI';*/
    	?>
    	<script language="JavaScript">alert('Le numero d\'identification ne doit comporter que des chiffres');</script>
    	<?PHP
     
    }
    /*Si la saisie comporte que des chiffres:*/
    else
    {
    	/*echo 'FAUX';*/
    	/*Interogation de la BdD*/
    	$result_Entite_a_suprimmer = mysql_query("SELECT * FROM entite where ID = '$Entite_a_suprimmer'");
    	$num_rows_Entite_a_suprimmer = mysql_num_rows($result_Entite_a_suprimmer);
     
    	/*Verification si le numero existe déja dans la BdD*/
    	if($num_rows_Entite_a_suprimmer == 0)
    	{
    		/*Si le numero n'existe pas, affichage d'une alert et redirection vers la page precedente.*/
    		?>
    		<script language="JavaScript">alert('Le numero identifiant saisi n\'existe pas!!!');
    		document.location.href = 'Suppression_entite.php';
    		</script>
    		<?PHP
    	}
    	else
    	{
    		/*Si le numero existe:*/
    		?>
    		<script language="JavaScript">
    		if(confirm('Etes vous sur de vouloir supprimer cette entité ???'))
    		{
     
     
    		}
    		else
    		{
    			alert ("Vous avez annulé la suppression.");
    			document.location.href = 'Suppression_entite.php';
    		}		
    		</script>
    		<?PHP		
     
    		/*Verificarion du nombre d'exemplaires existants dans la base de données.*/
    		$prochain_nombre= mysql_fetch_array($result_Entite_a_suprimmer);
    		$nombre=$prochain_nombre['NOMBRE'];
    		$restant=$prochain_nombre['NOMBRERESTANT'];
    		$dispo=$prochain_nombre['DISPONIBLE'];
    		/*echo $nombre;*/
    		if($nombre>1)
    		{
    			/*Si il existe plus d'un exemplaire de l'entité dans la base de données:*/
    			$nombre=($nombre-1);
    			$restant=($restant-1);
    			mysql_query("UPDATE entite SET NOMBRE='$nombre', NOMBRERESTANT='$restant' WHERE ID='$Entite_a_suprimmer'");
    			if($restant==0)
    			{
    				mysql_query("UPDATE entite set DISPONIBLE='false' WHERE ID='$Entite_a_suprimmer'");
    			}
    			echo "Il reste $restant d'exemplaires dans la base de données.";
    			?>
    			<script language="JavaScript">alert('Supression effectuée.');
    			document.location.href = 'Suppression_entite.php';
    			</script>
    			<?PHP
    		}
    		else
    		{
     
    			/*Si il existe qu'un exemplaire de l'entité dans la base de données:*/
    			mysql_query("DELETE FROM entite WHERE ID='$Entite_a_suprimmer'");
    			?>
    			<script language="JavaScript">alert('Supression effectuée.');
    			document.location.href = 'Suppression_entite.php';
    			</script>
    			<?PHP
    		}
    	}		
    }
     
     
    mysql_close();
    ?>
    </body>
    </html>
    ici j'ai mis la confirmbox comme sa avant avec une redirection pour tester si je pouvais pas tricher comme sa mais la suppression s'effectue quand même snif.

    Voila sa sera plus clair

    Sorry de pas l'avoir mis avant.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Dans ce cas je conseille d'ajouter le confirm dans ta fonction verification_numero. Ainsi tu ne lanceras le script de suppression que si l'utilisateur confirme :
    Code JS : 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
    function verification_numero(){
    	if(document.getElementById('Entite_a_suprimmer').value == "N° identifiant"||document.getElementById('Entite_a_suprimmer').value ==""){
    		alert ('La saisie du numero de l\'entité est obligatoire!!!!');
    		return false;
    	}
    	else{
    		if(confirm('Etes vous sur de vouloir supprimer cette entité ???'))
    		{
    			return true;			
    		}
    		else
    		{
    			alert ("Vous avez annulé la suppression.");
    			return false;
    		}
    	}
    }

  8. #8
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par Celira Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if(confirm('Etes vous sur de vouloir supprimer cette entité ???'))
        {
            return true;			
        }
    else
        {
            alert ("Vous avez annulé la suppression.");
            return false;
    }
    à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return confirm('Etes vous sur de vouloir supprimer cette entité ???');
    parait un poil plus propre

  9. #9
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    OK merci je vais tester comme sa Merci mille fois de votre patience a mon égard ^^

  10. #10
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Finalement je me suis simplifié la vie

    J'ai fait 3 pages au lieu de deux.

    La première reste la même que précédemment

    La seconde fait les tests et affiche le choix dans un formulaire au lieu d'un pop up
    quand on clique sur annuler on revient a la page de départ
    quand on clique sir valider on passe a la troisième page qui fait la suppression elle même.
    les valeurs dont j'ai besoin pour mon query sont transmis avec des input type hidden.

    Voila et merci encore a tous

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Points : 80
    Points
    80
    Par défaut
    J'avais une configuration similaire, et je trouve la solution de jml94 particulièrement simple, propre et efficace.

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

Discussions similaires

  1. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 14h08
  2. Afficher une page php dans une page php
    Par griese dans le forum Langage
    Réponses: 9
    Dernier message: 09/06/2006, 17h24
  3. insérer une page php dans une page php
    Par griese dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/06/2006, 17h03
  4. Réponses: 15
    Dernier message: 24/05/2006, 09h56
  5. afficher une page PHP dans une page PHP ?
    Par sirbaldur dans le forum Langage
    Réponses: 4
    Dernier message: 05/05/2006, 19h42

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