Jointure qui marche pas

Résolu
Bonjour,

mon problème est le suivant:
j'essaye de récupérer des données d'une table avec des conditions issues d'une autre table c pourquoi j'utilise une jointures et voici le code:
$s=mysql_query("SELECT * FROM tablecc, manager_approve WHERE manager_approve.ref_no='".$row['ref_no']."' AND tablecc.manager='receiving_manager'");
$data=mysql_fetch_array($s);
echo $data['nom'];
if(!empty($data['nom'])){
echo '<a href="stock/BSK'.$row['ref_no'].'.pdf">bsk'.$row['ref_no'].'</a>';}
else
{echo'
<form name="remplir" method="POST" action="pending.php"> 
<input type="hidden" name="ref_no" value="'.$row['ref_no'].'" class="envoi">
<input type="submit" name="pending" value="pending_'.$row['ref_no'].'" class="envoi">
</form>';}

mais la condition que j'ai posé ne marche pas (tablecc.manager='receiving_manager')
est ce que vous avez une idée?

13 réponses

  1. re,
    voilà j'ai résolue le problème est effectivement j'ai utilisé la requête que tu m'a proposé acron et ça a marché et en faite j'avais oublié une condition..
    donc voilà la requéte juste:

    $s=mysql_query("SELECT * FROM tablecc JOIN manager_approve ON (tablecc.manager='receiving_manager') WHERE manager_approve.ref_no='".$row['ref_no']."' AND tablecc.name=manager_approve.nom");


    donc c bon merci beaucoup
    1. cool. oublie pas de mettre "résolu" !
      a+
  2. je vois pas de name dans manager_approve..

    D'ailleurs qu'est ce qui te fait dire que ca foire ?

    Et es-tu sur d'avoir les bonnes entrées dans tes tables, post un select * des 2 tables stp... ca devient bizarre là...
    1. ah oui là j'ai oublier de dire que je l'ai modifier ce name par nom j'ai croyé moi aussi que c ça le poblème pour ne pas mélanger le name de tablecc avec le name de manager_approve ..ms bon ça reste le méme problème..
      1. au fait je viens de voir un truc mais tu fais $data['nom'] alors que dans ta table c'est 'name'...
        1. oui mais le fichier qui contient mon code c lui méme qui contient le fichier stock alors c un chemin relatif..
          1. et bien tu mets: stock/BSK1.pdf dans le lien, hors c'est une chemin relatif, si ton site à une URL du style http://site.com/truc/ et que tes PDF sont à http://site.com/stock/BSK1.pdf tu ne les auras pas, vu que tu va taper dans http://site.com/truc/stock/BSK1.pdf
            1. oui oui $row['ref_no'] contient bien une valeur je l'ai testé par echo ..
              l'url de mon site j'ai pa bien comprie ta question..
              1. ca fait partie des questions que je me posais.. es-tu sûr que $row['ref_no'] contient une valeur ?

                sinon quelle est l'URL de ton site, essaie avec des chemins absolues.
                1. je profite de poser une autre question sur le méme code dans l'URL=href="stock/BSK'.$row['ref_no'].'.pdf" ça c' bien l'emplacement des fichies pdf qui ont pour nom BSK1,BSK2,BSK3....mais qu'on je clique sur l'url rien ne s'ouvre..
                  1. d'accord acron merci pour ta réponse je vai la testé et te répondre plus tard..
                    1. pour faire plus propre tu devrais écrire:

                      "SELECT * FROM manager_approve
                      JOIN tablecc ON (tablecc.manager='receiving_manager')
                      WHERE manager_approve.ref_no='".$row['ref_no']."'"

                      dis moi si ca marche... sinon c'est que tu n'as pas d'entré dans tablecc avec manager='reveiving_manager'... ou pas de "manager_approve.ref_no='".$row['ref_no']."'"
                      1. pour la table manager_approve:
                        CREATE TABLE IF NOT EXISTS 'manager_approve' (
                        'ref_no' int(11) NOT NULL,
                        'mail' varchar(50) NOT NULL,
                        'date_approve' datetime NOT NULL,
                        'remark' text NOT NULL
                        )

                        pour la table tablecc:

                        CREATE TABLE IF NOT EXISTS 'tablecc' (
                        'id' int(11) NOT NULL AUTO_INCREMENT,
                        'cost_center' varchar(11) DEFAULT NULL,
                        'operation' varchar(9) DEFAULT NULL,
                        'manager' varchar(50) NOT NULL,
                        'name' varchar(21) DEFAULT NULL,
                        'email' varchar(27) DEFAULT NULL,
                        PRIMARY KEY ('id')
                        )
                        1. peux-tu poster les structures de tes 2 tables stp ?

                          SHOW CREATE TABLE tablecc;
                          SHOW CREATE TABLE manager_approve;

                          Un conseil, évite les jointure comme ça, écris plutôt "[...] FROM tablecc JOIN manager_approve ON ([...etc...])", plutot que "[...] FROM tablecc, manager_approve WHERE [...]".