Définir un nom en fonction de plusieurs autres choses

Mammouth du PHP | 545 Messages

01 févr. 2006, 12:46

Salut,
Je suis en phase terminale pour la création de classements et je me demande quel serait la bonne méthode pour donner le nom d'une personne (table acrho_participant) en fonction d'une date et d'un dossard!
Oui, je sais que je ne suis pas très clair mais ... !

Le cheminement vers cette page (http://www.kain-buyere.be - onglet classements), ce fait en 3 page

1) je choisis l'année (de 1983 à 2006), comme il y a des entrées en 2004 ... prenons 2004!
2) je choisis la course qui m'intéresse
3) j'ai devant moi un classement qui est cencé reprendre le nom, prénom, club et catégorie d'une personne. Comme chaque année certain de ces paramétres changent ils existent 1 tables qui fait appel à d'autres:
  • - [acrho_changement] acrho_club_id_club, acrho_participant_ID_participant, annee, dossard, acrho_categorie_ID_categorie
    - [acrho_participant] ID_coureur, nom , prenom
    - [acrho_categorie] id_categorie, nom_categorie
    - [acrho_club] id_club, nom_club
Et enfin 2 tables pour mettre le tout en musique
  • - [acrho_course] id_course, nom_course, date, lieu, kilometrage, nbre_part
    - [acrho_classement] ID_classement, acrho_course_id_course, dossard, temps, moyenne
Question 1:
En fonction de ces tables, je récupére le nom d'un coureur .... les classements sont encodés avec le numéro de dossard ! Pour retrouver le propriètaire du dossard, j'ai besoin de savoir quel est l'année qui m'intéresse et j'ai 2 façons de la determiner:
  • - La variable qui me fait passer de la page 1 vers la 2 que je devrais récupérer! Comment? Ben je suppose que cela pourrait fonctionner de la même façon?
    - Récupérer la date de la course (que j'aurais préalablement transformé en année)
Dans les 2 cas, je ne sais pas comment opérer mais de toutes façons, je voudrais savoir qu'est-ce qui serait le mieux pour mon code.

Merci
Sebe

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

VaN
Mammouth du PHP | 1107 Messages

01 févr. 2006, 12:53

tu peux pas récupérer la date avec $_POST['date'] ?

Mammouth du PHP | 545 Messages

01 févr. 2006, 16:16

Ouf, je vois que j'ai été compris dans ma longue explication!

VaN,
Mes connaissances en PHP frise les paquerettes donc je ne peux pas répondre à ta question ... je ne connais pas
$_POST['date']
et je ne sais pas à quoi cela peut correspondre! Je regarderai ce soir dans les liens que l'on m'a déjà filé pour les tutos et autres afin de savoir à quoi cela correspond!

Ceci dit, à la page précédente, j'ai utilisé ce script pour afficher la date en année
<?php echo makeDateTime($row_class['date'], 'Y'); ?>
mais est-ce que cela peut servir si je récupére la valeur ... est-ce que l'on peut récupérer sa valeur?
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

01 févr. 2006, 23:40

Re,

J'ai un peu bouquiné et si je comprend ce que VaN me dit, je dois récupérer la valeur de l'année définit dans mon formulaire en page 1 donc
<form action='class.php' name="form1" method=get>
      <table width="50%" border="1" align="center">
        <tr>
          <td><div align="center">Quelle est l'ann&eacute;e ? </div></td>
          <td><div align="center">
            <select name="annee" id="annee"> 
              <?php 
                $annee_en_cours = date("Y"); 
                $min_year = 1983; //  définit la borne inferieure 
                for($a=$min_year;$a<=$annee_en_cours;$a++) 
                { 
                echo "<option value=\"$a\">$a</option>\r"; 
                } 
                ?> 
            </select>
            &nbsp;</div></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><div align="center">
            <input name="submit" type='submit' value ='rechercher' />
          </div></td>
        </tr>
      </table>
	  </form>
avec POST plutôt que GET?

OH LA LA, JE SUIS DEPASSE! Je continue mes lectures mais si je me trompe stoppez moi ! ! !

Merci
Sebe

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

Eléphant du PHP | 180 Messages

02 févr. 2006, 01:07

Salut !

Si tu veux récupérer la date sélectionnée par le visiteur ( celle du form qui va de 1983 à l'année en cours [ je reconnais ce script d'ailleurs ;-) ] ) il suffit d'utiliser $_GET['date'] puisque tu utilises la méthode GET dans ton form. Tu aurais pu aussi utiliser la méthode POST auquel cas tu récupères avec $_POST['date'].

Par contre la portée de cette variable sera limitée à la seconde page ( celle ou tu sélectionnes une course ) à moins que tu la rajoutes dans l'url de chaque course genre :

<a href="classement.php?class=une_variable&date=<?php echo $_GET['date']; ?>">lien</a>


Le pb c'est que je ne suis pas sûr que ce soit cette date la que tu souhaites récupérer puisqu'il existe un champ annee dans la table [acrho_changement] et un champ date dans la table [acrho_course]

Quelle est donc la vraie valeur à récupérer ?? That's the question !

A+

Didier
Giant steps are what you take ... walking on the moon ;-)

Mammouth du PHP | 545 Messages

02 févr. 2006, 12:03

Salut didgar,

Les variables date (XXXX-??-??) et année (XXXX) ont plus ou moins la même valeur ... la façon de les exprimer est différente. C'est pour cela que je demande s'il vaut mieux faire passer la variable année "à travers les pages" ou de récupérer la variable date que je "transforme" en année? Donc, je voudrais récupérer une valeur en 4 chiffres qui est l'année (XXXX) qui servira pour la recherche du nom du proriètaire du dossard!

Note: J'ai mis un "!" car je me demande si mes explications sont compréhensibles ... :shock:
je reconnais ce script d'ailleurs
Tout ce que j'ai fait autour de ces classements, je le dois à plusieurs personnes de ce forum (toi compris) qui m'ont tantôt montré la voie tantôt maché le travail ... je ne les remercierais jamais assez! J'espère juste un jour pouvoir devenir assez bon pour aider d'autres ! ! !

Merci
Sebe

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

Eléphant du PHP | 180 Messages

02 févr. 2006, 12:15

Salut !!!

Salut didgar,

Les variables date (XXXX-??-??) et année (XXXX) ont plus ou moins la même valeur ... la façon de les exprimer est différente. C'est pour cela que je demande s'il vaut mieux faire passer la variable année "à travers les pages" ou de récupérer la variable date que je "transforme" en année? Donc, je voudrais récupérer une valeur en 4 chiffres qui est l'année (XXXX) qui servira pour la recherche du nom du proriètaire du dossard!

Note: J'ai mis un "!" car je me demande si mes explications sont compréhensibles ... :shock:

A mon avis, si j'ai bien compris ton application, je récupèrerais annee de la table [acrho_changement]
je reconnais ce script d'ailleurs
Tout ce que j'ai fait autour de ces classements, je le dois à plusieurs personnes de ce forum (toi compris) qui m'ont tantôt montré la voie tantôt maché le travail ... je ne les remercierais jamais assez! J'espère juste un jour pouvoir devenir assez bon pour aider d'autres ! ! !

Merci
C'était juste un clin d'oeil ! Tu ne me dois rien ! Si je le fais c'est de bon coeur ;-)

A+

Didier
Giant steps are what you take ... walking on the moon ;-)

Mammouth du PHP | 545 Messages

02 févr. 2006, 13:44

A mon avis, si j'ai bien compris ton application, je récupèrerais annee de la table [acrho_changement]

Non, la variable est présente dans cette table pour repérer le coureur [ID_participant], le club [ID_club], ... c'est un peu comme un ID qui fait le pont!
En gros une fois que j'ai l'année en question, je retire tous les dossards qui la concerne et je recherche dans cette liste les liens de tables en fonction du dossard ... rie que ça!
C'était juste un clin d'oeil ! Tu ne me dois rien ! Si je le fais c'est de bon coeur ;-)
J'imagine fort bien mais moi je me sens redevable! Je ne pourraiss pas relever un tel défi sans les différents coup de main ... j'aurais déjà abandonné! Donc si un jour, je suis capable de ... c'est bien à tous ces coups de pouce que j'ai reçu sur ce forum!

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

02 févr. 2006, 23:18

J'ai un peu lu les "écritures saintes" que j'avais reçu via mes autres post mais je n'ai pas trouvé de réponse à ma question initiale ... comment récupérer l'année?

Quelqu'un a-t-il une piste pour moi?

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 | 19672 Messages

03 févr. 2006, 01:01

J'ai un peu de mal à m'y retrouver, mais pour extraire l'année d'un champ de type DATE ou DATETIME dans une base, tu fais:

Code : Tout sélectionner

SELECT YEAR(nom_du_champ) FROM etc...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

03 févr. 2006, 20:05

Revenons à nos moutons, j'avais quelques soucis avec ma requête mais c'est arrangé:
<?php require_once('../Connections/kainbuye.php');
$colname_course = "-1";
if (isset($_GET['class'])) {
  $colname_course = (get_magic_quotes_gpc()) ? $_GET['class'] : addslashes($_GET['class']);
}
mysql_select_db($database_kainbuye, $kainbuye);
$query_course = "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,
						t5.id_course, 
                  		t5.nom_course,
						t5.date,
						t5.lieu,
						t5.kilometrage,
						t5.nbre_part,
						t6.ID_classement,
						t6.acrho_course_id_course,
						t6.ref_dossard,
						t6.temps,
						t6.moyenne,
						t6.place ".
				"FROM acrho_participant AS t1, 
                      acrho_categorie AS t2, 
                      acrho_club AS t3, 
                      acrho_changement AS t4,
					  acrho_course AS t5,
				      acrho_classement AS t6 ". 
				"WHERE t5.id_course = ".$colname_course." ".
						"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 ".
						"AND t6.acrho_course_id_course = t5.id_course ".
						"AND t6.ref_dossard = t4.dossard ".
						" ".
				"ORDER BY t6.temps ASC";
$course = mysql_query($query_course, $kainbuye) or die(mysql_error());
$row_course = mysql_fetch_assoc($course);
$totalRows_course = mysql_num_rows($course);
?>
Et temporairement mon script
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php echo $row_course['nom_course']; ?></title>
<link href="../cosmic18.css" rel="stylesheet" type="text/css">
</head>

<body>

<table width="540" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="16" height="34">&nbsp;</td>
    <td width="504">&nbsp;</td>
    <td width="20">&nbsp;</td>
  </tr>
  <tr>
    <td height="38">&nbsp;</td>
    <td valign="top"><table width="100%"  border="1" cellpadding="0" cellspacing="0" class="cosmic18">
      <!--DWLayoutTable-->
        <tr>
          <td><div align="right"><strong>R&eacute;sultats de la course : </strong></div></td>
          <td><?php echo $row_course['nom_course']; ?></td>
          <td><div align="right"><strong>Nombre de participants : </strong></div></td>
          <td><?php echo $row_course['nbre_part']; ?></td>
        </tr>
        <tr>
          <td><div align="right"><strong>A la date du : </strong></div></td>
          <td><?php setlocale (LC_ALL,"fr_FR"); echo strftime("%A %d %B %Y",strtotime($row_course['date'])); ?></td>
          <td><div align="right"><strong>Distance : </strong></div></td>
          <td><?php echo $row_course['kilometrage']; ?></td>
        </tr>
        </table></td>
  <td>&nbsp;</td>
  </tr>
  <tr>
    <td height="16"></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td height="114" colspan="3" valign="top"><table width="100%"  border="1" cellpadding="0" cellspacing="0" class="cosmic18">
      <tr>
        <td><div align="center"><strong>Arr.</strong></div></td>
        <td><div align="center"><strong>Dossard</strong></div></td>
        <td><div align="center"><strong>Nom</strong></div></td>
        <td><div align="center"><strong>Pr&eacute;nom</strong></div></td>
        <td><div align="center"><strong>Club</strong></div></td>
        <td><div align="center"><strong>Cat&eacute;gorie</strong></div></td>
        <td><div align="center"><strong>Temps</strong></div></td>
        <td><div align="center"><strong>Moy/km</strong></div></td>
        <td><div align="center"><strong>Points</strong></div></td>
      </tr>
      <?php do { ?>
      <tr>
          <td><div align="right"></div></td>
          <td><div align="right"><?php echo $row_course['ref_dossard']; ?></div></td>
          <td><div align="right"></div></td>
          <td><div align="right"></div></td>
          <td><div align="right"></div></td>
          <td><div align="right"></div></td>
          <td><div align="right"><?php echo $row_course['temps']; ?></div></td>
          <td><div align="right"><?php echo $row_course['moyenne']; ?></div></td>
          <td><div align="right"></div></td>
      </tr>
      <?php } while ($row_course = mysql_fetch_assoc($course)); ?>
    </table></td>
  </tr>
  <tr>
    <td height="46">&nbsp;</td>
    <td></td>
    <td></td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($course);
?>
Bon, je voudrais afficher le nom du participant, le club, ... comment?
En 2005, il n'y a qu'une seule personne qui posséde le dossard 138 ... moi :wink:
Ce dossard se trouve dans la table t6 (acrho_classement) champs (t6.ref_dossard). Grâce à la date (t5.date) que je transforme en année, je pense qu'il y a moyen de faire une correspondance dans la table (t4.annee)?

Cyrano,
Avec mes nouvelles explications, est-ce que ta proposition de code peut fonctionner? Où dois-je l'introduire dans mon script?

Merci

Mammouth du PHP | 19672 Messages

03 févr. 2006, 21:00

Je dirais à priori dans une clause WHERE du style:

Code : Tout sélectionner

... WHERE YEAR(t5.date) = ...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

03 févr. 2006, 21:09

Ben bêtement, j'ai essayé de remplir ma boucle de cette manière
<?php do { ?>
      <tr>
          <td><div align="right"></div></td>
          <td><div align="right"><?php echo $row_course['ref_dossard']; ?></div></td>
          <td><div align="left"><?php echo $row_course['nom']; ?></div></td>
          <td><div align="left"><?php echo $row_course['prenom']; ?></div></td>
          <td><div align="left"><?php echo $row_course['nom_cub']; ?></div></td>
          <td><div align="center"><?php echo $row_course['nom_categorie']; ?></div></td>
          <td><div align="right"><?php echo $row_course['temps']; ?></div></td>
          <td><div align="right"><?php echo $row_course['moyenne']; ?></div></td>
          <td><div align="right"></div></td>
      </tr>
      <?php } while ($row_course = mysql_fetch_assoc($course)); ?>
et ... cela fonctionne!
Enfin, pas vraiment pour tout. Quand je change de classement, il ne me reprend pas les participants déjà affiché ... l'erreur doit-être ailleurs car j'efface les changements, il m'indique la même chose!

Un petit comparatif: http://www.kain-buyere.be [classement/2004] et comparer le 'Jogging du Printemps' et la 'Gallo Romaine'! Tous les deux ont 10 entrées et pourtant ... !

Cyrano,
Tu as vu j'ai fait quand même quelques progrés depuis le tout début mais là, sur ce truc (sans jeu de mot) j'ai encore besoin de beaucoup d'aide :wink:
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 | 19672 Messages

04 févr. 2006, 00:18

L'affichage dépend de la requête : c'est la requête modifiée qu'il faudrait montrer au lieu du tableau d'affichage... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

04 févr. 2006, 00:30

Non, ma requête n'a plus changé depuis la dernière fois que je l'ai postée!
Ici je regarde si j'ai la bonne correspondance dans mes tables et visiblement oui!
table acrho_classement
Image
table acrho_course
Image
Vois-tu quelque chose d'inhabituel qui pourrait engendrer le problème?

Merci
Sebe

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