PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 25/12/2011 00:03:09

Shipping LAN
Membre

Erreur "pg_query(): 5 is not a valid PostgreSQL link resource"

Bonjour à tous et joyeux Noël à tout le monde smile

Après avoir passé 3 jours à éplucher le web, je n'ai toujours pas trouver la solution à mon problème.


Sur mon site, je souhaite afficher la liste de contacts et de DJs stockés dans ma base de données.
J'ai donc une fonction ListerContacts et ListerDjs qui sont sensiblement équivalentes (seuls les noms de quelques variables et fonctions changent). Néanmoins, lors de l'appel de la fonction ListerDjs, j'ai cette erreur qui s'affiche :

Warning: pg_query(): 5 is not a valid PostgreSQL link resource in /homez.***/***/***/***/sql/fonctionsBDD.php on line 204
Warning: pg_close(): 5 is not a valid PostgreSQL link resource in /homez.***/***/***/***/sql/fonctionsBDD.php on line 205

Voilà la fonction où est l'erreur :

function ListerLesDjs($bdd) {
	global $bdd;
	
	$sql="SELECT id,nom,prenom,description,adresseinternet,numerotel,email,date_creation,date_derniere_modification FROM DJ ORDER BY id ASC;";
	$res=pg_query($bdd,$sql);
	pg_close($bdd);
	if(!$res) {
	echo "	La requête ".$sql." a échouée...
			<br/><br/>
			<a href='javascript:history.go(-1)'>Retour</a>";
	}
	$lignes = pg_numrows($res);
	for($i=0; $i<$lignes; $i++) {
		$dj[$i] = pg_fetch_array($res, $i);
		$j=$i+1;
		
		$djs.="	<div style='float:left;padding:8px'>
							DJ #".$j."
							<blockquote>
								Nom : ".$dj[$i]['nom']."<br/>
								Prénom : ".$dj[$i]['prenom']."<br/>
								Description : ".$dj[$i]['description']."<br/>
								Adresse internet : <a href='".$dj[$i]['adresseinternet']."'>".$dj[$i]['adresseinternet']."</a><br/>
								Numéro Tél : ".$dj[$i]['numerotel']."<br/>
								Email : ".$dj[$i]['email']."<br/>
								<br/>
								<form action='djs.php' method='GET'>
									<input type='hidden' name='requete' value='modifier-dj' />
									<input type='hidden' name='id' value='".$dj[$i]['id']."' />
									<input type='submit' value='Modifier' />
								</form>
								<form action='djs.php' method='GET' onclick=\"if(confirm('Êtes-vous sûr de vouloir supprimer ce DJ ?')) this.form.submit();else return false\" >
									<input type='hidden' name='requete' value='supprimer-dj' />
									<input type='hidden' name='id' value='".$dj[$i]['id']."' />
									<input type='submit' value='Supprimer' /> 
								</form>
								
							</blockquote>
							<a href='#djs'>⇑</a>
							<br/><br/>
						</div>";
	}
	
	return $djs;
}

La requête s'exécute bien quand je la tape directement dans PhpPgAdmin.

Le problème provient de pg_query, mais je ne vois pas ce que ça peut être. Je l'utilise de la même manière 3 fois dans mon code et ça ne pose pas de soucis.


Dans le doute, je vous poste mes codes :

Le fichier fonctionsBDD.php où est l'erreur : http://pastebin.com/2Abv9m4q
Le fichier djs.php qui appelle fonctionsBDD.php : http://pastebin.com/4F1eyga6
Le fichier contacts.php qui appelle lui aussi fonctionsBDD.php : http://pastebin.com/8rZQS2gz
Mon index.php qui tape dans les deux fichiers ci-dessus : http://pastebin.com/JegcAF3D




Je vous remercie par avance de l'aide précieuse que vous pourrez m'apportez.

Et encore une fois, JOYEUX NOËL smile

Dernière modification par Shipping LAN (25/12/2011 00:12:25)

Hors ligne

#2 25/12/2011 01:37:54

Shipping LAN
Membre

Re : Erreur "pg_query(): 5 is not a valid PostgreSQL link resource"

Je crois qu'il fallait que je poste mon problème pour enfin le trouver.
Je fermais la connexion à la base sans la rouvrir pour retaper dedans... Du coup il me ressortait cette erreur.

J'ai fait une fonction connectionBdd() qui initialise $bdd pour pouvoir balancer ma commande sql avec pg_query puis fermer la connexion avec pg_close.

function ListerLesDjs() {
	
        $bdd=connectionBdd();
	$sql="SELECT id,nom,prenom,description,adresseinternet,numerotel,email,date_creation,date_derniere_modification FROM DJ ORDER BY id ASC;";
	$res=pg_query($bdd,$sql);
	pg_close($bdd);

        ...
function connectionBdd() {
			$login='****';
			$pass='****';
			$dbname='****';
			$lehost='****';
			$leport=****;

			$bdd=pg_pconnect("host=$lehost port=$leport dbname=$dbname user=$login password=$pass");

		// test de connexion :
			if (!$bdd) {
				echo("Problème de connexion à la base\n");
				exit();
			}
			else {
				return $bdd;
			}
}

C'était simple comme bonjour mais j'avais pas vu.

Sur ce, je vais déballer mes cadeaux wink

Hors ligne

#3 26/12/2011 11:16:26

kenrio
Membre

Re : Erreur "pg_query(): 5 is not a valid PostgreSQL link resource"

effectivement clore votre connexion avant de requeter c'est pas le mieux big_smile

Hors ligne

Pied de page des forums