Expects parameter 1 to be resource, boolean given in

Fermé
Destro08 - 10 nov. 2012 à 01:49
Destro08 Messages postés 3 Date d'inscription samedi 10 novembre 2012 Statut Membre Dernière intervention 12 novembre 2012 - 12 nov. 2012 à 11:51
Bonjour,

J'ai un soucie avec une fonction qui pourtant ma l'air sans faute.

L'erreur, la voici:
- Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in...

Ma fonction:
/* Vérification de l'entrepot */
function verif_place_is($id_sess, $nb_item=1)
{
	if(is_numeric($id_sess))
	{
		$verif_entrepot=mysql_query("SELECT COUNT(*) AS nb_safebox FROM $db_player.safebox WHERE account_id=('". $id_sess ."')");
		$result_entrepot=mysql_fetch_array($verif_entrepot);
		if($result_entrepot['nb_safebox']==1) 
		{
			$pos=0;
			$go=false;
			while($go==false)
			{
				$verif_pos=mysql_query("SELECT COUNT(*) AS nb_pos FROM $db_player.item WHERE owner_id=('". $id_sess ."') AND pos =('". $pos ."') AND window=('MALL')");
				$result_pos=mysql_fetch_array($verif_pos);
				if($result_pos['nb_pos'] >= 1) {$pos++;} else  {$go = true;}
			}
			if($pos > (45-$nb_item)) { return false; } // Si le MALL est plein
			else {return $pos;} // On renvoi le numéro de la position libre
		} 
		else {return false;} //si la personne ne possède pas d'entrepos
	} 
	else {return false;} // Si account n'est pas un chiffre
} 


Le problème est à la ligne ($verif_entrepos).
Cette une vérification qui va ce faire dans la base de donnée Safebox par l'id de compte qui égal à l'id de compte connecté au site.
Cette vérification ce suit ensuite du ( if($result_entrepos['nb_safebox']==1) ) pour vérifier si ce compte possède bien un entrepôt.

Donc quand je fait mon achat l'erreur cité au début ce fait, j'ai essayé plusieurs manière de faire le code mais j'obtiens toujours cette erreur.

Quelqu'un aurais t-il une solution à ce problème ?

6 réponses

pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
10 nov. 2012 à 13:24
Bonjour,

je ne comprends pas ton utilisation des quotes :

$verif_entrepot=mysql_query("SELECT COUNT(*) AS nb_safebox FROM $db_player.safebox WHERE account_id=('". $id_sess ."')");


$verif_entrepot=mysql_query("SELECT COUNT(*) AS nb_safebox FROM $db_player.safebox WHERE account_id=$id_sess");
est plus simple non ?
0
Destro08 Messages postés 3 Date d'inscription samedi 10 novembre 2012 Statut Membre Dernière intervention 12 novembre 2012
10 nov. 2012 à 17:07
Je préfère faire comme cela je trouve ça plus propre, chacun sa façon de faire en tout cas, ça n'a rien a voir avec avec le bug
0
>> Je préfère faire comme cela je trouve ça plus propre, chacun sa façon de faire en tout cas, ça n'a rien a voir avec avec le bug
Si si, ça à voir quelque chose avec le message d'erreur retourné par PHP, d'ailleurs fais un test en ajoutant ceci à ta requête, tu verras bien l'erreur retournée par MySQL :
$verif_entrepot=mysql_query("SELECT COUNT(*) AS nb_safebox FROM $db_player.safebox WHERE account_id=('". $id_sess ."')") or die ("Erreur dans la requête SQL verif_entrepot".mysql_error());
0
Bonjour

Si $dbplayer est vraiment une variable, alors il faut la passer en paramètre ou en global. Moyennant quoi la syntaxe de la requête est correcte.
Telle que la fonction est écrite, $dbplayer n'est pas définie, ce qui rend la requête incorrecte(manque le nom de la base)
0
Destro08 Messages postés 3 Date d'inscription samedi 10 novembre 2012 Statut Membre Dernière intervention 12 novembre 2012
11 nov. 2012 à 16:35
$db_player est défini dans mon fichier config.php

$db_player="player_NomDuServeur";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 nov. 2012 à 08:52
Oui mais ici tu es à l'intérieur d'une fonction : les variables définies à l'extérieur sont inconnues a priori.
Il faut ajouter :
global  $db_player;
au début de ta fonction pour que la variable soit connue.

Note que si ta définition dans config.php est aussi à l'intérieur d'une fonction, il faut aussi ajouter cette ligne dans cette autre fonction.
0
Destro08 Messages postés 3 Date d'inscription samedi 10 novembre 2012 Statut Membre Dernière intervention 12 novembre 2012
12 nov. 2012 à 11:51
j'ai trouver quel était le problème quand je déclarais la fonction

verif_place_is()

j'indiquais ($_SESSION['id'], $nb_item)

comme dans la fonction il demandais account_id pour moi c'était évident que réclamais l'id de la session mais apparemment non il réclamais le login $_SESSION['login'], ca me parrait étrange mais c'est fonctionnel.
0