Erreur Resource id #6

AIDE
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 10:16

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.

Eléphant du PHP | 314 Messages

02 mai 2013, 10:24

Salut,

Tu dois fetcher ta ligne avec mysql_fetch_array, mysql_fetch_assoc...
Cordialement,
Julien - http://laravel.fr/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 mai 2013, 10:27

Il en faut peu pour être heureux ......

AIDE
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 10:46

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.

ViPHP
ViPHP | 2577 Messages

02 mai 2013, 11:18

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).

AIDE
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 11:29

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 mai 2013, 11:42

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 :) )


@+
Il en faut peu pour être heureux ......

AIDE
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 11:57

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);
}
}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 mai 2013, 14:10

Ajoute un else au if($ligne !== false) pour afficher un message dans le cas où la requête ne retourne rien.



@+
Il en faut peu pour être heureux ......

AIDE
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 14:18

Toujours rien...

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

Mammouth du PHP | 619 Messages

02 mai 2013, 14:24

Bonjour,

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

AIDE
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 14:33

Merci de votre aide.

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

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

Mammouth du PHP | 619 Messages

02 mai 2013, 14:46

Bonjour,

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 mai 2013, 14:46

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é.

@+
Il en faut peu pour être heureux ......

AIDE
Invité n'ayant pas de compte PHPfrance

02 mai 2013, 14:53

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)