Comment faire une requête pour des tables en relation?

Mammouth du PHP | 545 Messages

14 janv. 2006, 15:26

Avec une requête du type
SELECT ID_coureur, nom, prenom FROM acrho_participant WHERE ID_coureur = 109
j'ai bien le nom et le prènom de la personne (ID aussi) qui apparaissent endessous de l'affichage

Par contre, si je mets ceci:
SELECT t1.ID_coureur, t1.nom, t1.prenom, t2.id_categorie, t2.nom_categorie, t3.id_club, t3.nom_cub, t4.acrho_club_id_club, t4.acrho_participant_ID_participant, t4.annee, t4.dossard, t4.acrho_categorie_ID_categorie 
FROM acrho_participant AS t1, acrho_categorie AS t2, acrho_club AS t3, acrho_changement AS t4 
WHERE t1.ID_coureur =109 AND t4.acrho_participant_ID_participant = t1.ID_coureur AND t4.acrho_categorie_ID_categorie = t2.id_categorie AND t4.acrho_club_id_club = t3.id_club LIMIT 0 , 30 
Rien mais je pense que c'est normal car la table 'acrho_changement' est vide' Je ferais des quelques entrées ce soir et je vous tiens au courant!

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

14 janv. 2006, 20:08

Donc j'ai fait le remplissage de la table 'acrho_changement' et j'ai lancé les différentes requêtes mais quand j'ai plus d'une table ... comme d'habitude!

Voici la requête

$colname_chang= 26 une erreur à ne pas faire!
SELECT t1.ID_coureur, t1.nom, t1.prenom,  t4.acrho_club_id_club, t4.acrho_participant_ID_participant, t4.annee, t4.dossard, t4.acrho_categorie_ID_categorie FROM acrho_participant AS t1, acrho_changement AS t4 WHERE t1.ID_coureur = 26 AND t4.acrho_participant_ID_participant = t1.ID_coureur
et la réponse de MySQL est
#1064 - You have an error in your SQL syntax near '$colname_chang =26 SELECT t1.ID_coureur, t1.nom, t1.prenom, t4.acrho_club_id_clu' at line 1
Donc, si j'y comprend quelque chose, le liens entre ces 2 tables ne se fait déjà pas?

D'où peut bien venir l'erreur?
Modifié en dernier par Sebe le 15 janv. 2006, 13:06, modifié 2 fois.
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 janv. 2006, 22:35

Une poussière, regarde bien:
#1064 - You have an error in your SQL syntax near '$colname_chang =26 SELECT t1.ID_coureur, t1.nom, t1.prenom, t4.acrho_club_id_clu' at line 1
tu y a inclus l'affectation de la variable que tu as d'ailleurs bien mis hors de l'encadré php pour la requete sur ton post.

refait la meme chose sans cette variable en tete :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

15 janv. 2006, 13:04

Salut,

Ok tout est bon!

Alors le problème venait que ma table 'acrho_changement' était vide?

Si c'est le cas, cela pose problème car je ne pourrais pas faire d'affectation puisque je ne verrais pas les coureurs qui n'ont pas d'affectation?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

15 janv. 2006, 13:10

Par contre dans ma page ... cela pose toujours problème!
$colname_chang= 26

SELECT t1.ID_coureur, t1.nom, t1.prenom, t2.id_categorie, t2.nom_categorie, t3.id_club, t3.nom_cub, t4.acrho_club_id_club, t4.acrho_participant_ID_participant, t4.annee, t4.dossard, t4.acrho_categorie_ID_categorie FROM acrho_participant AS t1, acrho_categorie AS t2, acrho_club AS t3, acrho_changement AS t4 WHERE t1.ID_coureur = 26 AND t4.acrho_participant_ID_participant = t1.ID_coureur AND t4.acrho_categorie_ID_categorie = t2.id_categorie AND t4.acrho_club_id_club = t3.id_club


Affectation de SEBASTIEN DEVOS
{ 
    $colname_chang = (get_magic_quotes_gpc()) ? $_GET['part'] : addslashes($_GET['part']); 
}
est-il mal placé?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 janv. 2006, 14:12

Alors le problème venait que ma table 'acrho_changement' était vide?
biensur si tu récupère des infos sur plusieurs tables dont l'une dépends de l'autre il faut qu'elles soient remplies pour que les liens puissent se faire correctement.


En ce qui concerne l'affichage de la requete et de la variable dans la page n'est pas un problème tu peux enlever les "echo" sur ces variables qui les affichent. Tu dois avoir un:
echo '$colname_chang='.$colname_chang;
et
echo '<p>'.$query_chang.'</p>'; 
juste apres le test "if (isset($_GET['part']))"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

15 janv. 2006, 15:52

Ok cela fonctionne mais j'ai encore 2 problèmes:

1 s'il n'y a pas d'affectation, il ne tient pas compte de de l'ID_coureur pour indiquer son nom! Une 2ème requête n'apporterait-elle pas la solution? Une requête avec une seule table?

2 Pour faire mon tableau, j'employais une 'région répétée' de ce type
 <?php do { ?>
	  <tr>
        <td><div align="center"><?php echo $row_chang['annee']; ?></div></td>
        <td><div align="center"><?php echo $row_chang['dossard']; ?></div></td>
        <td><div align="center"><?php echo $row_chang['nom_categorie']; ?></div></td>
        <td><div align="center"><?php echo $row_chang['nom_cub']; ?></div></td>
        </tr>
    <?php } while ($row_chang = mysql_fetch_assoc($annee)); ?>
Mais malheureusement, il n'y a pas moyen ...
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home.2/kainbuye/www/classements/affect2.php on line 72
Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 janv. 2006, 16:16

1 s'il n'y a pas d'affectation, il ne tient pas compte de de l'ID_coureur pour indiquer son nom! Une 2ème requête n'apporterait-elle pas la solution? Une requête avec une seule table?
ce n'est pas que Mysql ne tient pas compte de l'ID_coureur mais c'est qui ne trouve pas d'enregistrement qui correspond à la requete, si tu fait:

Code : Tout sélectionner

t4.acrho_participant_ID_participant = t1.ID_coureur
Mysql va rechercher les lignes de données ayant les meme "id" or si la table "acrho_changement " est vide il n'y aura pas de correspondance donc pas de résultat.

Si un coureur n'est pas représenté dans la table "acrho_changement " alors il faut en effet faire une requete simple juste pour récupérer son nom et prénom. Mais c'est peut etre un test à faire avant. Par exemple ne pas mettre de lien sur "Affectation" si le coureur n'as pas d'affectation.
2 Pour faire mon tableau, j'employais une 'région répétée' de ce type
(...)
 <?php } while ($row_chang = mysql_fetch_assoc($annee)); ?>
Mais malheureusement, il n'y a pas moyen ...
à quoi correspond $annee ?

d'apres les bouts de codes ce serait plustot "$chang" qu'il faut y mettre.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

15 janv. 2006, 16:41

Si un coureur n'est pas représenté dans la table "acrho_changement " alors il faut en effet faire une requete simple juste pour récupérer son nom et prénom. Mais c'est peut etre un test à faire avant. Par exemple ne pas mettre de lien sur "Affectation" si le coureur n'as pas d'affectation.
Si il faut mettre le lien, si ce n'est pour voir qu'il n'a pas d'affectation! Pour rappel, ces pages ne serviront que pour la création des classements et ne sera vraiment visible que les classements.
à quoi correspond $annee ?

d'apres les bouts de codes ce serait plustot "$chang" qu'il faut y mettre.
Si, ainsi cela fonctionne beaucoup mieux :oops:

En résumé ce post ne reprend que les erreurs d'un vrai débutant qui a sauté quelques étapes!

Merci pour tout (d'ici ce soir je devrais pouvoir mettre [Résolu])
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

20 janv. 2006, 14:25

Salut,

Je reviens aux affaires après de gros soucis informatiques (DD = HS!) Tout n'est pas encore réglè ... l'imprimante me casse les bonbons en écrivant cripté!

La question du jour est:
J'ai 3 pages qui se suivent avec comme lien le même participant. Pour passer de la 1er à la 2éme jutilise la variable 'part' ... puis-je réutiliser la même variable pour passer à la 3ème page? Dois-je lui réafecter une valeur?

Pour rappel: la 1er page est une liste d'individu, la seconde est un individu avec des affectations et la 3ème permet d'ajouter des affectations à cet indivudu!

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 janv. 2006, 15:53

La question du jour est:
J'ai 3 pages qui se suivent avec comme lien le même participant. Pour passer de la 1er à la 2éme jutilise la variable 'part' ... puis-je réutiliser la même variable pour passer à la 3ème page? Dois-je lui réafecter une valeur?
Tu dois remettre cette valeur dans le lien de la page 2 pour passer a la page3

tu dois avoir un lien sur la page 1 qui ressemble à ceci:
<a href="page2.php?part="<?echo $numero; ?>">lien </a>
et sur la page 2 tu dois avoir ceci pour passer à la page 3:
<a href="page3.php?part="<?echo $colname_affect; ?>">lien </a>
avec "$colname_affect" qui vient du test << if (isset($_GET['part'])) >>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

20 janv. 2006, 16:14

Sur le temps, j'avais trouvé une solution qui resemble assez fort à ce que tu me propose sauf que je n'ai pas changé de variable ... j'ai juste reprécisé sa valeur pour passer à la page suivante!

J'ai opté pour cette essayage (sur meusure!) car je me suis dit (comme je perd mon latin et que je n'ai pas d'imprimante pour suivre l'évolution de mon code!) qu'il serait plus facile de retrouver de quoi je parle ... je me demande si cela ne risque pas d'erroner quelque chose à un moment ou à un autre?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 janv. 2006, 16:21

je me demande si cela ne risque pas d'erroner quelque chose à un moment ou à un autre?
Quoi ? :-k

Si tu n'es pas sur de ce que tu as fait, tu peux toujours montrer le code qui va avec. Mais si le résultat est bien celui espéré alors tout va bien :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

20 janv. 2006, 16:29

La 2ème question du jour sera:

Dans ma table 'acrho_changement', je dois faire des entrées sous forme de variable numérique (ex: [id_club] 1 pour Kain B. ; [id_catégorie] 3 pour SE; ...).
Si pour les catégories (14 différentes), c'est encore facile de les retenir pour les clubs cela devient beaucoup plus compliqué! Donc, j'aimerai faire une liste d'enregistrement mais il me semble que je dois faire une requête différente que celle qui servira pour l'enregistrement dans la table 'acrho_changement' ... sinon comment accéder à la liste des noms de club?

Voici ce que j'ai fait une requête club et une requête chang et mon code

<select name="club" id="club">
              <?php
do {  
?><option value="<?php echo $row_club['id_club']?>"<?php if (!(strcmp($row_club['id_club'], $row_chang['acrho_club_id_club']))) {echo "selected=\"selected\"";} ?>><?php echo $row_club['nom_cub']?></option>
              <?php
} while ($row_club = mysql_fetch_assoc($club));
  $rows = mysql_num_rows($club);
  if($rows > 0) {
      mysql_data_seek($club, 0);
	  $row_club = mysql_fetch_assoc($club);
  }
?>
            </select>
Est-ce que ceci peut fonctionner? Certain que je dois encore mettre en place le formulaire d'enregistrement mais pour le reste?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

20 janv. 2006, 16:31

je me demande si cela ne risque pas d'erroner quelque chose à un moment ou à un autre?
Quoi ? :-k

Si tu n'es pas sur de ce que tu as fait, tu peux toujours montrer le code qui va avec. Mais si le résultat est bien celui espéré alors tout va bien :wink:
Oui cela fonctionne mais n'étant qu'un débutant, je me pose des question par rapport à la facilité! [-o<

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!