Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 20/04/2011, 14h51   #1
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Par défaut rowCount non reconnu

Bonjour à tous,

Petit incompréhension de ma part.
Lorsque je souhaite utiliser la méthode rowCount de l'objet de type pdostatement, j'obtiens le message d'erreur suivant :

Code ERREUR :
 Call to a member function rowCount() on a non-object in

Pour le code php suivant :
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* création de la connexion à la BD */
$bdgrr = connectGrr();
/* création de la requête */
$requete = $bdgrr->prepare('SELECT id FROM grr_entry WHERE room_id = :idroom AND ((start_time BETWEEN :debut AND :fin) OR (end_time BETWEEN :debut AND :fin))');
/* parcours de chaque élément du tableauvisite */
foreach( $tableauvisite as $key => $atelier ){
	if( $atelier["visite"]==1){ /* on recherche seulement si l'atelier est demandé */
		$resultat = $requete->execute(array(
					'idroom' => $atelier["id"],
					'debut'  => $atelier["hd"],
					'fin'    => $atelier["hf"]
					));
		if( $key > 0 ) $erreur .= ',';
		if( $resultat == true && $resultat->rowCount() > 0 ){
			$atelier["dispo"] = 1;
		}
		else{
			$atelier["dispo"] = 0;
			$erreur .= $atelier["id"];
		}
	}
}

Et pourtant la semaine, lorsque j'ai demandé sur ce forum comment je pouvais procéder pour vérifier que la requête me retourne quelque chose, on m'a conseillé de procéder ainsi.

Est ce que je n'ai pas compris quelques choses dans les explications que l'on m'a fournies la semaine passée ?

En vous remerciant pour toute l'aide que vous pouvez m'accorder.
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 14h53   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
active la gestion des erreurs pour PDO :
http://php.net/manual/fr/pdo.error-handling.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/04/2011, 15h17   #3
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Je ne sais pas si cela peut avoir une quelconque importance, mais les fonction permettant de créer les connexions à mes serveurs de BD se trouvent dans un autre fichier que j'include une fois la vérification d'exactitude des données terminées.

Je remarque également que l'erreur se produit au niveau de la requête utilisant une partie de code dont je ne suis pas certain à vrai dire. Les valeurs se trouvant dans $atelier["hd"] et $atelier["hf"] sont des valeurs numériques unix time.
J'ai il y a moins d'une demi heure retravailler la création de ce unix time, peut être est-ce du à cela.

Voici donc le message d'erreur que j'obtiens
Code ERREUR :
1
2
<br />
<b>Fatal error</b>:  Call to a member function rowCount() on a non-object in <b>/chemin/de/mon/fichier/inc/verification.php</b> on line <b>143</b><br />

Et la ligne 143 est la ligne :
Code PHP :
if( $resultat == true && $resultat->rowCount() > 0 ){

Des idées ?
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 15h18   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
oui activer les erreurs, si tu les active pas tu risques pas de voir ou est le problème...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/04/2011, 15h26   #5
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Mais les erreurs sont activées... ?!

Code PHP :
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
/* fichier data.php */
function connectMalmundarium(){
	/* données de connexion à la BDD */
	$serveraddr = "monIP";
	$servername = "bdname2";
	$username = "bduser2";
	$passwd = "bdpass2";
 
	try{
		$bdd = new PDO('mysql:host='.$serveraddr.';dbname='.$servername, $username, $passwd);
		$bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
		$bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
		return $bdd;
	}
	catch( Exception $e){
		die('Erreur : '.$e->getMessage());
	}
}
 
function connectGrr(){
	/* données de la connexion à la BDD */
	$grraddr = "monIP";
	$grrname = "bdname";
	$grruser = "bduser";
	$grrpwd  = "bdpass";
 
	try{
		$grrbdd = new PDO('mysql:host='.$grraddr.';dbname='.$grrname, $grruser, $grrpwd);
		$grrbdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
		$grrbdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
		return $grrbdd;
	}
	catch(Exception $e){
		die('Erreur : '.$e->getMessage());
	}
}

Et en fait, le fichier dans lequel j'ai le code du premier post, est appelé par l'intermédiaire d'un appel AJAX/Javascript. Voici pour rappel la portion de code posant problème :

Code PHP :
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
/* création de la connexion à la BD */
$bdgrr = connectGrr();
/* création de la requête */
$requete = $bdgrr->prepare('SELECT id FROM grr_entry WHERE room_id = :idroom AND ((start_time BETWEEN :debut AND :fin) OR (end_time BETWEEN :debut AND :fin))');
/* parcours de chaque élément du tableauvisite */
foreach( $tableauvisite as $key => $atelier ){
	if( $atelier["visite"]==1){ /* on recherche seulement si l'atelier est demandé */
		$resultat = $requete->execute(array(
					'idroom' => $atelier["id"],
					'debut'  => $atelier["hd"],
					'fin'    => $atelier["hf"]
					));
		if( $key > 0 ) $erreur .= ',';
		if( $resultat == true && $resultat->rowCount() > 0 ){
			$atelier["dispo"] = 1;
		}
		else{
			$atelier["dispo"] = 0;
			$erreur .= $atelier["id"];
		}
	}
}
if( $erreur != "" ){
	echo $erreur;
	exit;
}
$requete->closeCursor();
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 15h31   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pourquoi mettre : PDO::ERRMODE_WARNING + PDO::ERRMODE_EXCEPTION

sinon c'est : $requete->rowCount() et pas $resultat->rowCount()

execute ne renvoie qu'un booléen : http://www.php.net/manual/fr/pdostatement.execute.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 15h49   #7
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Bon, il est temps que je me sorte la tête du :derriere:

Merci, j'ai un autre soucis à présent mais plus rien à voir avec du SGBD. Il me retourne un message 1415 o_O

Encore merci pour l'aide accordée.

[EDIT] Je viens de voir ce que sont mes retours 1415. Les codes de mes ressources à réserver ;-) [/EDIT]
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing 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 10h21.


 
 
 
 
Partenaires

Hébergement Web