Page 1 sur 3

Erreur Resource id #6

Posté : 02 mai 2013, 10:16
par AIDE
Bonjour à tous,

J'ai besoin de votre aide.
Voici mon problème :

Code : Tout sélectionner

<?php include("connexion.php"); $idSalarie=isset($_POST['idSalarie'])?$_POST['idSalarie']:""; $req="SELECT nomEntreprise from Entreprise where idEntreprise = (select idEntreprise from Travaille where idSalarie= '$idSalarie')"; $ligne=mysql_query($req); echo "Entreprise : ".$ligne; ?>
J'ai comme résultat ceci :
Resource id #6

Pourtant la requête fonctionne en ligne de commande.
Je suis un peu paumé, pourriez-vous m'aider.

Merci d'avance.

Re: Erreur Resource id #6

Posté : 02 mai 2013, 10:24
par AoSiX
Salut,

Tu dois fetcher ta ligne avec mysql_fetch_array, mysql_fetch_assoc...

Re: Erreur Resource id #6

Posté : 02 mai 2013, 10:27
par moogli

Re: Erreur Resource id #6

Posté : 02 mai 2013, 10:46
par AIDE
Merci d'avoir répondu aussi rapidement.

J'ai suivi le tuto...

Code : Tout sélectionner

<?php include("connexion.php"); if (isset($_POST['idSalarie'])) $req='SELECT nomEntreprise from Entreprise where idEntreprise = (select idEntreprise from Travaille where idSalarie= "'.$_POST['idSalarie'].'"'; $ligne= mysql_query($req) or die(mysql_errno()); $result=mysql_fetch_array($ligne); mysql_free_result($ligne); echo "Entreprise : ".$result['nomEntreprise']; ?>
Pourtant j'ai cette notification :
Notice: Undefined variable: req in C

Merci de votre aide.

Re: Erreur Resource id #6

Posté : 02 mai 2013, 11:18
par Mazarini
Bonjour,

L'explication la plus simple est que la requête ne retourne pas de ligne.

Il faut tester les codes retour des ordres mysql pour vérifier que ca s'est bien passer (mysql_error() et mysql_errno()). Mais à priori tes requêtes se passent bien sinon il y aurait une erreur sur le fetch.

Pour le fetch, le retour prend la valeur false lorsqu'il n'y a plus d'enregistrements à lire. Dans un cas comme le tien ou tu ne fait pas de boucle, tu peux contrôler le nombre d'enregistrement concernés par le select mysql_num_rows() de mémoire).

Re: Erreur Resource id #6

Posté : 02 mai 2013, 11:29
par AIDE
Merci pour votre réponse.
<?php

if (isset($_POST['idSalarie'])) {
include("connexion.php");
$req='SELECT nomEntreprise from Entreprise where idEntreprise in (select idEntreprise from Travaille where idSalarie= "'.$_POST['idSalarie'].'"';
$ligne= mysql_query($req) or die('Erreur SQL ! '.$req.'<br/>'.mysql_errno());
$result=mysql_num_rows($ligne);
echo "Entreprise : ".$result['nomEntreprise'];}
else{
   echo "La variable idSalarie n'est pas déclarée";
}
?>
J'ai fais comme vous m'avez dit pourtant maintenant ça m'affiche ceci :

La variable idSalarie n'est pas déclarée.

Re: Erreur Resource id #6

Posté : 02 mai 2013, 11:42
par moogli
idSalarier est une info fournit par un formulaire en méthode post

de plus tu as mal mixé ton code avec celui de Mazarini.

mysql_num_rows retourne le nombre de tuple que contient le jeux de résultat.
il te faut utiliser mysql_fetch_array (ou array) pour avoir tes données.
<?php
if (isset($_POST['idSalarie'])) {
include("connexion.php");
$req='SELECT nomEntreprise from Entreprise where idEntreprise = select idEntreprise from Travaille where idSalarie= '.mysql_real_escape_string($_POST['idSalarie']);
// Est ce que l'id du salarier est un entier ? si ou la requete est bonne, si non il te faut utilisre des ' pour délimiter a chaîne de caractère et non des "
// De plus le in est inutile vu que tu ne doit avoir d'un seul résultat (enfin c'est ce que m'indique ton code à l'affichage). 
$result= mysql_query($req); //  or die('Erreur SQL ! '.$req.'<br/>'.mysql_errno());  LE die c'est le mal !
if($result === false) {
echo Erreur SQL ! '.$req.'<br/>'.mysql_error();
}
else {
$ligne = mysql_fetch_assoc($result);
if($ligne !== false){ // j'ai un ou plusieurs résultat
    echo "Entreprise : ".$result['nomEntreprise'];}
    mysql_free_result($result);
}
?>
ps : Merci d'utiliser la balise [PHP] pour ton code (c'est plus simple à lire avec la colorisation du code :) )


@+

Re: Erreur Resource id #6

Posté : 02 mai 2013, 11:57
par AIDE
Merci pour la réponse.

J'ai pris exactement le même code que vous m'avez fourni et je n'ai aucun résultat à l'affichage.
<?php
if (isset($_POST['idSalarie'])) {
include("connexion.php");
$req="SELECT nomEntreprise from Entreprise where idEntreprise = select idEntreprise from Travaille where idSalarie= ".mysql_real_escape_string($_POST['idSalarie']);
// Est ce que l'id du salarier est un entier ? si ou la requete est bonne, si non il te faut utilisre des ' pour délimiter a chaîne de caractère et non des " ==>[color=#40BFFF] il s'agit bien d'un entier donc j'ai bien mis les "[/color]
// De plus le in est inutile vu que tu ne doit avoir d'un seul résultat (enfin c'est ce que m'indique ton code à l'affichage).
$result= mysql_query($req); //  or die('Erreur SQL ! '.$req.'<br/>'.mysql_errno());  LE die c'est le mal !
if($result === false) {
echo 'Erreur SQL ! '.$req.'<br/>'.mysql_error();
}
else {
$ligne = mysql_fetch_assoc($result);
if($ligne !== false){ // j'ai un ou plusieurs résultat
    echo "Entreprise : ".$result['nomEntreprise'];}
    mysql_free_result($result);
}
}
?>

Re: Erreur Resource id #6

Posté : 02 mai 2013, 14:10
par moogli
Ajoute un else au if($ligne !== false) pour afficher un message dans le cas où la requête ne retourne rien.



@+

Re: Erreur Resource id #6

Posté : 02 mai 2013, 14:18
par AIDE
Toujours rien...

Je désespère complètement...

Re: Erreur Resource id #6

Posté : 02 mai 2013, 14:24
par ghost5922
Bonjour,

essaie de faire un print_r($result); savoir se que nous retourne mysql

Re: Erreur Resource id #6

Posté : 02 mai 2013, 14:33
par AIDE
Merci de votre aide.

J'ai également essayé mais toujours rien...

Je suis véritablement paumé parce que ça n'affiche rien du tout...

Re: Erreur Resource id #6

Posté : 02 mai 2013, 14:46
par ghost5922
Bonjour,

pouvez vous me communique la structure de vos tables en question stp

Re: Erreur Resource id #6

Posté : 02 mai 2013, 14:46
par moogli
Toujours rien...

Je désespère complètement...

C'est à dire ?

est ce que tu appel bien ce code ?

est ce que idSalarier est bien dans l’entête http en tant que POST ?
avec ce code tu as forcément quelque chose d'affiché
<?php
var_dump($_POST);
if (isset($_POST['idSalarie'])) {
    include("connexion.php");
    $req = "SELECT nomEntreprise from Entreprise where idEntreprise = select idEntreprise from Travaille where idSalarie= " . mysql_real_escape_string($_POST['idSalarie']);
    if ($result === false) {
        echo 'Erreur SQL ! ' . $req . '<br/>' . mysql_error();
    } else {
        $ligne = mysql_fetch_assoc($result);
        if ($ligne !== false) { // j'ai un ou plusieurs résultat
            echo "Entreprise : " . $result['nomEntreprise'];
        }
        mysql_free_result($result);
    }
} else {
    echo 'information manquante dans le formulair ou le formulaire non posté !';
}
poste nous ce que tu as d'affiché.

@+

Re: Erreur Resource id #6

Posté : 02 mai 2013, 14:53
par AIDE
Voici ce que ça m'affiche :

array (size=0)
empty

information manquante dans le formulair ou le formulaire non posté !

Ensuite pour répondre à ghost5922 :

Entreprise(idEntreprise, nomEntreprise, adresse, codePostal, ville)

Salarie(idSalarie, nomSalarie, prenomSalarie)

Travaille(idEntreprise, idSalarie)