Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/02/2011, 01h02   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Par défaut Une requete qui ne marche pas

Bonjours,

Voici mon code :

Code :
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é
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 02h54   #2
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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 :
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 :
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 :
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 :
if ($_POST["confirmer"] == "oui") {}

Sa marche bien.

Je demande pourquoi sa fait sa.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 03h43   #3
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
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 : 586
Points : 859
Points : 859
peut être parce qu'il faut cocher le bouton radio "oui" avant de soumettre...?!
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 08h04   #4
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Merci mais sa a deja été fais.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 08h14   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
As-tu controlé ta condition ? si $_POST['confirmer'] ne vaut pas "oui", que vaut-il ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 08h38   #6
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 09h41   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Non ce n'est pas compliqué à savoir.
Avant tu condition tu fais
Code :
1
2
var_dump($_POST["confirmer"]);
exit();
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h01   #8
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h10   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
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"
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h16   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Je ne vois pas ou est ton ajax la dedans.
Le formulaire est envoyé par un bouton submit normal vers la meme page non ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h20   #11
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
On fait sa comment ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h24   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par thebarbarius Voir le message
On fait sa comment ?
Firebug -> Réseau -> Persistant
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h31   #13
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Ok c'est fait.

Que dois je faire ensuite ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h36   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h37   #15
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
J'ai trouvé.

Donc sa m'affiche :

Code :
1
2
3
 
confirmer	oui
non	non
Donc ma requete devrai s'executer, mais ce n'est pas le cas, je comprends plus rien....
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h44   #16
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par thebarbarius Voir le message
J'ai trouvé.

Donc sa m'affiche :

Code :
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 ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h47   #17
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Il n'y a pas d'erreur puisque quand j'enlève la condition sa s'exécute correctement.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h55   #18
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 12h01   #19
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Pour l'appel de la classe :
Code :
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 :
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
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 13h26   #20
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
si tu fais :
Code :
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h50.


 
 
 
 
Partenaires

Hébergement Web