Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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 26/03/2011, 12h53   #1
Invité de passage
 
Antoine Julienne
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Antoine Julienne

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 4
Points : 4
Par défaut Erreur avec la BD

Bonjour à tous.

Je sais pas si c'est le bon endroit pour poster ça, je m'excuse d'avance si j'ai commis une erreur.

Voici mon problème :
J'ai une classe Bd.php qui contient toutes mes fonctions accédant directement à ma bdd, une classe ServiceBd.php accédant aux fonctions du fichier Bd.php, et mes fichiers accédant a ServiceBd.php.

J'ai actuellement une petite erreur, et je ne vois pas comment la résoudre :

Citation:
Fatal error: Uncaught exception 'AccesTableException' in C:\wamp\www\PROJET\objet\bd\Bd.php:123
Stack trace:
#0 C:\wamp\www\PROJET\objet\metier\ServiceBd.php(70): Bd->getListeChoix('E094034L')
#1 C:\wamp\www\PROJET\objet\profil.php(138): ServiceBd->getAllChoix('E094034L')
#2 {main} thrown in C:\wamp\www\PROJET\objet\bd\Bd.php on line 123
Voici les codes en question :

Dans Bd.php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public function getListeChoix($etu)
	<?php
{
		$this->connexion();
		$requete='SELECT id, idEcole from choix WHERE idEtu='.$etu.';';
		try {
			$resultat=$this->connexion->query($requete);
		}
		catch (PDOException $e) {
			throw new AccesTableException();
		}		
		$this->deconnexion();
		return $resultat; 
	}
?>
Dans ServiceBd.php:
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
function getAllChoix($etu) {
 
		$listeChoix=$this->bd->getListeChoix($etu);
		foreach($listeChoix as $row) {
			$choix = new Choix($row['id'],$row['idEcole'],$row['idEtu']);
			$tableau[] = $choix;
		}
		return $tableau;
	}
?>
Dans Profil.php:
Code :
1
2
3
4
5
<?php
$choix = $servBd->getAllChoix($id);
 
//$servBd est un objet de type ServiceBd
?>
En espérant que vous pourriez m'aider, je suis bien évidemment à votre disposition pour toutes informations supplémentaires.
toniovip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 13h09   #2
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Bonjour,

tu peux montrer la ligne 123 ?
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 13h19   #3
Invité de passage
 
Antoine Julienne
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Antoine Julienne

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 4
Points : 4
La ligne 123 dans Bd.php :
Code :
<?php throw new AccesTableException(); ?>
PS: la classe AccesTableException est une classe perso heritant de PDOException
toniovip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 13h27   #4
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Code :
$requete='SELECT id, idEcole from choix WHERE idEtu='.$etu.';';
C'est normal le point virgule au bout de la requête ? '.$etu.';';
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 13h53   #5
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Salut,

Je pense que tu auras plus d'infos avec ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
public function getListeChoix($etu)
	<?php
{
		$this->connexion();
		$requete='SELECT id, idEcole from choix WHERE idEtu='.$etu.';';
		try {
			$resultat=$this->connexion->query($requete);
		}
		catch (PDOException $e) {
			throw new AccesTableException($e->getMessage());
		}		
		$this->deconnexion();
		return $resultat; 
	}
?>
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 20h11   #6
Invité de passage
 
Antoine Julienne
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Antoine Julienne

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 4
Points : 4
@ s.n.a.f.u : Merci, maintenant, j'obtiens ceci :
Citation:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'E094034L' in 'where clause'' in C:\wamp\www\PROJET\objet\bd\Bd.php:120 Stack trace: #0 C:\wamp\www\PROJET\objet\bd\Bd.php(120): PDO->query('SELECT id, idEc...') #1 C:\wamp\www\PROJET\objet\metier\ServiceBd.php(70): Bd->getListeChoix('E094034L') #2 C:\wamp\www\PROJET\objet\profil.php(138): ServiceBd->getAllChoix('E094034L') #3 {main} thrown in C:\wamp\www\PROJET\objet\bd\Bd.php on line 120
J'ai l'impression qu'il recherche une colonne 'E094034L' et qu'il ne la trouve pas, c'est bien ça ?
Dans ce cas, il doit y avoir une erreur car 'E094034L' est la variable à mettre dans la colonne 'idEtu' non ?
toniovip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 20h56   #7
Membre du Club
 
Inscription : juin 2004
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 30
Points : 43
Points : 43
Salut,

affiche la requête pour bien voir le problème.
tu devrais avoir : SELECT id, idEcole from choix WHERE idEtu=E094034L

sachant qu'il n'y a pas de ' autour de la chaine E094034L le sgbd cherche à utiliser une colone qu'il ne trouve pas.

donc soit tu ajoute les ' + utilisation de quote de pdo.
soit tu utilise les requêtes préparées.

@+
moogli est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 26/03/2011, 21h06   #8
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Citation:
Envoyé par moogli Voir le message
donc soit tu ajoute les ' + utilisation de quote de pdo.
soit tu utilise les requêtes préparées.
Avec une grande préférence pour les requêtes préparéezs : plus sûres, plus rapides.
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 26/03/2011, 21h19   #9
Invité de passage
 
Antoine Julienne
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Antoine Julienne

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 4
Points : 4
Merci, ça marche en rajoutant des quotes.

Qu'est-ce que les requêtes préparées ?
toniovip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 21h26   #10
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Un peu de lecture...

http://fr.php.net/manual/fr/pdo.prepared-statements.php
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 21h52   #11
Invité de passage
 
Antoine Julienne
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Antoine Julienne

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 4
Points : 4
Merci beaucoup
Sujet résolu.
toniovip est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h08.


 
 
 
 
Partenaires

Hébergement Web