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

PHP & Base de données Discussion :

Une requete qui ne marche pas


Sujet :

PHP & Base de données

  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut Une requete qui ne marche pas
    Bonjours,

    Voici mon code :

    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
     
    class inventaire extends mysql {
    	public function editer($id, $sexe, $categorie, $taille, $quantite, $description, $prix, $image, $afficher) {
    			$dbh = mysql::getInstance();
    			$sql = 'UPDATE inventaire SET
    					sexe=:sexe, 
    					categorie=:categorie, 
    					taille=:taille,
    					quantite=:quantite,
    					description=:description,
    					prix=:prix,
    					image=:image,
    					date=:date,
    					afficher=:afficher
    					WHERE id= :id';
    			$requete = $dbh->prepare($sql);
     
    			$requete->bindParam(':id', $id );
    			$requete->bindParam(':sexe', $sexe );
    			$requete->bindParam(':categorie', $categorie);
    			$requete->bindParam(':taille', $taille);
    			$requete->bindParam(':quantite', $quantite);
    			$requete->bindParam(':description', $description);
    			$requete->bindParam(':prix', $prix);
    			$requete->bindParam(':image', $image);
    			$requete->bindParam(':date', $date);
    			$requete->bindParam(':afficher', $afficher);
     
    			$requete->execute();
     
     
    					}		
    	}
    Voila une fois la requete executé rien ne passe, pas de message d'erreur rien...

    Mais surtout rien n'est modifié

  2. #2
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Alors je vais etre plus explicite car après plusieurs test il s'avere que se soit plus compliqué que je le pensé.

    Voici le js :
    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
     
    function supprimerArticle(id) {
    getXhr();
    xhr.onreadystatechange = function()
        {
         if(xhr.readyState == 4 && xhr.status == 200)
         {
         document.getElementById('supprimer').innerHTML=xhr.responseText;
         }
        }
     
    	var supprimer = document.getElementById('supprimer');
     
    		xhr.open("GET","template/inventaire/supprimer_article.php?id="+id, true);
    xhr.send(null);
    supprimer.style.display = "block";
     
    }

    Voici mon forumlaire avec l'appel de la classe :
    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
     
    <div align="center" style="background-color:#900">
    <?php
    include '../../includes/class/mysql.php';
    include '../../includes/class/inventaire.php';
    $id = $_GET['id'];
    ?>
     
    <span>
    	Confirmer la supression ?
    </span>
    <form action="" method="POST">
    Oui :<input name="confirmer" type="radio" value="oui" />
    Non :<input name="confirmer" type="radio" checked value="non" /><br />
    <input type="submit" value="PROCEDER" />
    </form>
    </div>
     
    <?php
     
    if ($_POST["confirmer"] == "oui") {
    	$delete = new inventaire();
    	$delete->supprimer($id);
    }
    ?>

    Voici la classe, je met juste la methode:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function supprimer($id) {
    		$dbh = mysql::getInstance();
    		$sql = "DELETE FROM inventaire 
    				WHERE id = :id";
    		$requete = $dbh->prepare($sql);
     
    		$requete->bindParam(':id', $id);
     
    		$requete->execute();
    		}
    	}

    Alors en faite, lorsque je clique sur une image, sa fait appraitre une div et inclut le contenu du formulaire.

    Donc si je clique sur supprimer il se passe rien.


    Maintenant si j'enleve, la condition :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_POST["confirmer"] == "oui") {}

    Sa marche bien.

    Je demande pourquoi sa fait sa.

  3. #3
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    peut être parce qu'il faut cocher le bouton radio "oui" avant de soumettre...?!
    Développeur informatique contrarié...

  4. #4
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Merci mais sa a deja été fais.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu controlé ta condition ? si $_POST['confirmer'] ne vaut pas "oui", que vaut-il ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Et bien c'est compliqué a savoir, puisque une fois le formulaire envoyé mon formulaire diparait.

    Mais j'ai essayé vian un get et sa revoie bien oui.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non ce n'est pas compliqué à savoir.
    Avant tu condition tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var_dump($_POST["confirmer"]);
    exit();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Non sa marche pas.

    Et c'est normal, puisque je rappel c'est de l'ajax.

    Et oui quand je valide mon formulaire, la page se rafraichit et donc ma div disparait.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Non sa marche pas.

    Et c'est normal, puisque je rappel c'est de l'ajax.

    Et oui quand je valide mon formulaire, la page se rafraichit et donc ma div disparait.
    avec firebug tu peux mettre Réseau en "persistant"

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne vois pas ou est ton ajax la dedans.
    Le formulaire est envoyé par un bouton submit normal vers la meme page non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    On fait sa comment ?

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    On fait sa comment ?
    Firebug -> Réseau -> Persistant

  13. #13
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Ok c'est fait.

    Que dois je faire ensuite ?

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Ok c'est fait.

    Que dois je faire ensuite ?
    tu fais tes tests avec des var_dump comme à dit sabotage, tu vas pouvoir voir ce que rendent les réponses des requêtes dans Firebug

  15. #15
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    J'ai trouvé.

    Donc sa m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    confirmer	oui
    non	non
    Donc ma requete devrai s'executer, mais ce n'est pas le cas, je comprends plus rien....

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    J'ai trouvé.

    Donc sa m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    confirmer	oui
    non	non
    Donc ma requete devrai s'executer, mais ce n'est pas le cas, je comprends plus rien....
    t'as bien activé la gestion des erreurs pour PDO ?

  17. #17
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Il n'y a pas d'erreur puisque quand j'enlève la condition sa s'exécute correctement.

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    montre où et comment tu appelles la classe, en plus y'a c'est quoi le melange entre le formulaire et l'AJAX ? y'en a un en POST et l'autre en GET, dans ton formulaire tu ne remets pas l'id non plus

  19. #19
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Pour l'appel de la classe :
    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
     
     
    <div align="center" style="background-color:#900">
    <?php
    include '../../includes/class/mysql.php';
    include '../../includes/class/inventaire.php';
    $id = $_GET['id'];
    ?>
     
    <span>
    	Confirmer la supression ?
    </span>
    <form action="" method="POST">
    Oui :<input name="confirmer" type="radio" value="oui" />
    Non :<input name="confirmer" type="radio" checked value="non" /><br />
    <input type="submit" value="PROCEDER" />
    </form>
    </div>
     
    <?php
     
    if ($_POST["confirmer"] == "oui") {
    	$delete = new inventaire();
    	$delete->supprimer($id);
    }
    ?>

    Non en effet pas besoin de remettre da le formulaire, puisque c'est une valeur GET envoyé precedemment lorsque j'ai cliqué sur mon image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span><img id='".$id."' src='assets/action_delete.png' onClick='supprimerArticle(this.id);' alt='Delete' /></span>
    Je pense qu'en regardant les 2 code ci dessus tu vas comprendre

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    echo '<pre>';
    print_r($_GET);
    print_r($_POST);
    echo '</pre>';
    if ($_POST["confirmer"] == "oui") {
    	$delete = new inventaire();
    	$delete->supprimer($id);
    }
    ps : les id html doivent commencer par une lettre

Discussions similaires

  1. pb de requete qui ne marche pas sur pl sql
    Par smartsorft dans le forum SQL
    Réponses: 6
    Dernier message: 15/01/2008, 15h14
  2. redirection sur une action qui ne marche pas
    Par nesbla dans le forum Struts 1
    Réponses: 5
    Dernier message: 04/08/2006, 20h16
  3. [JDOM] Une méthode qui ne marche pas
    Par kaninama dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 24/05/2006, 16h10
  4. appel d'une methode qui ne marche pas
    Par hansaplast dans le forum C++
    Réponses: 4
    Dernier message: 27/04/2006, 13h52

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