IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] La bonne condition


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut [Conception] La bonne condition
    Bonjour,

    Je voudrais savoir comment je dois opérer pour récupére le bon classement!
    J'ai 3 page qui se suivent:
    La 1er où je définis l'année (pour passer vers la 2ème) qui m'intéresse de cette manière: <form action='class.php' name="form1" method=get> à savoir que name est une année!
    La 2ème où je retrouve une liste de course! Je passe sur la 3ème vers le classement qui m'intéresse de cette façon : classement.php?class=<?php echo $row_class['id_course']; ?>
    Le problème est sur la 3ème: Ici s'affiche un classement de coureurs ... les données sont prise dans 'acrho_classement' (les champs sont ID_classement, acrho_course_id_course, ref_dossard, temps, moyenne, point. Grâce aux champs dossard et à l'année, j'essaye de récupérer les affectations des coureurs ... les affectations (club, dossard et catégorie) changent chaque année. Je n'ai aucun problème pour récupérer les données si l'affectation est faîte sur une saison mais si je fais sur plusieurs la page affiche la 1er affectation encodée ... en gros les propriètaires du dossard ne change pas de saison en saison!

    Comme un petit dessin vaut mieux que de grandes explications http://www.kain-buyere.be (classements/2004/jogging du printemps)! Comment puis-je régler ce problème?

    Merci

  2. #2
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Grâce aux champs dossard et à l'année, j'essaye de récupérer les affectations des coureurs ... les affectations (club, dossard et catégorie) changent chaque année. Je n'ai aucun problème pour récupérer les données si l'affectation est faîte sur une saison mais si je fais sur plusieurs la page affiche la 1er affectation encodée ... en gros les propriètaires du dossard ne change pas de saison en saison!
    Désolé je n'ai pas compris à partir de là.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Salut,

    J'ai plusieurs table pour afficher ces classements. Voici la requête, tu verras plus clair (c'est vrai que mes explications ... !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?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.point".
    				"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 ".
    						"AND YEAR(t5.date) = t4.annee".
    						" ".
    				"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);
    ?>
    Grâce à la table 'acrho_changement' donc 't4', j'ai une affectation pour chaque coureur ... chaque année! Ainsi cela me premet (dans l'absolut) pour un classement de 2005 de savoir que le dossard 138 appartient à un coureur (moi) qui fait partit de tel club et court dans tel catégorie (ce quii fait référence à d'autres tables. Si le dossard 138 n'est affecté qu'un un seul coureur, il n'y pas de problème mais chaque année, il est affecté à un autre coureur! Dans le cas de mon script, cela ne fonctionne pas!

    Question: comment puis-je m'arranger pour que mon script tient compte de l'année pour trouver le proprio?

    Merci

  4. #4
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Mais si le dossard 188 est pour deux joueurs la même année, pourquoi tu veux tenir compte de l'année?

    J'y arrive, j'y arrive

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Non! Un seul proprio par année ... jamais 2 personnes sur la même année n'auront le même dossard!
    En 2005 j'avais le dossard 138 et en 2006 le 133 ... en 2006, le dossard 138 est affecté à un autre!

    Donc si je fais une recherche sur le dossard 138, j'aurais 23 proprios différents du dossard ... c'est problème car mon script m'affiche toujours le même proprio car je ne sais pas comment faire une requête sur l'année! J'y ai bien mis ceci [YEAR(t5.date)] mais je ne sais pas comment l'utiliser dans mon script.

    Merci

  6. #6
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Lol ca y est capté
    Par contre je ne vois pas ta requête YEAR dans ton code. Tu peux le rajouter pour voir? Et quel est le type de ton champ date?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Citation Envoyé par Anduriel
    Lol ca y est capté
    Par contre je ne vois pas ta requête YEAR dans ton code. Tu peux le rajouter pour voir?
    Ben si, juste avant le FROM

    Citation Envoyé par Anduriel
    Et quel est le type de ton champ date?
    Champs/date Type/date Null/Non Défaut/0000-00-00

    Voilà

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Par défaut
    Dans ton where, essayes ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE blablbalbla
    AND YEAR(t5.date) = "le parametre qui te donne l année de la course choisie"
    ?

    EDIT1 : hum j'ai repondu trop vite je pense que m'a réponse ne t'aide pas du tout lol ...

    EDIT 2 : Donnes une description des champs de tes tables, ca sera plus clair pour moi.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Salut,

    Merci pour ton aide, j'ai malgré tout fait l'essayage ...

    Donc voici ce que j'ai ajouter à ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "AND YEAR(t5.date) = t4.annee".
    Mais cela ne fonctionne pas:
    You have an error in your SQL syntax near 'AS t1, acrho_categorie AS t2, acrh' at line 24
    Je ne vois pas ce qu'il y a!

    Voici la structure de mes tables

    - une table pour déterminer la catégorie. A noter que seul ID et le Nom serviront! Cette table intervient dans la conception d'une autre page ... voilà pourquoi!


    - une table avec tous les clubs existants qui ont déjà participé à l'une de nos courses


    - une table pour faire l'inventaire de tous les participants. Vous notez qu'il y a un champs 'date de naissance' et 'sexe' qui ne seront pas employé dans un premier temps (pas certain d'avoir toutes les dates de naissance) mais qui servent pour déterminer la catégorie.


    - une table qui dira en fonction des années ce que sont devenus les joggeurs (club, catégories et le dossard)


    - une table pour définir la course


    - un dernière table qui tiendra compte de toutes les données pour avoir les classements

    juste un petit changement pour plce qui est devenue point !


    Merci pour tout

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Par défaut
    Tu l'as bien mise dans ton WHERE la condition et non dans le SELECT ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Oui, c'est bien ce que j'ai fait

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Je n'ai pas recopié la requête donc j'ai refait une édition d'un peu plus haut pour voir un ensemble cohérent!
    Merci

  13. #13
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Moi je verrai plutôt pour l'année actuelle un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE YEAR(t5.date) = YEAR(NOW())
    et normalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE YEAR(t5.date) = $_POST['date']; // enfin la façon dont la date est récupérée
    devrait marcher...

    PS: t5 correpond à archo_courses, et il n'y a pas de champ date mais date_course seulement.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Citation Envoyé par Anduriel
    Moi je verrai plutôt pour l'année actuelle un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE YEAR(t5.date) = YEAR(NOW())
    Salut,
    Ce n'est pas l'année actuelle que je désire mais l'année du classement

    Citation Envoyé par Anduriel
    et normalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE YEAR(t5.date) = $_POST['date']; // enfin la façon dont la date est récupérée
    devrait marcher...

    PS: t5 correpond à archo_courses, et il n'y a pas de champ date mais date_course seulement.
    En te lisant, je pense que je me suis mal exprimé!
    J'ai besoin de l'année pour trouver le proprio du dossard mais je n'utilise pas celle-ci pour passer de la page 2 à 3 (je l'ai fait de 1 à 2) donc il m'est difficille de l'utiliser. Voici une autre vu de mes tables avec quelques adaptations depuis qui n'interviennent pas dans le script que j'essaye d'éditer:


    Voici l'objectif

    en entrant seulement le dossard, le temps, les points.

    Est-ce que les scripts actuels de mes pages seraient utiles, est-ce que cela apporterait un complément d'explication?

    Merci pour ce gros coup de main

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Par défaut
    Salut,
    Ce n'est pas l'année actuelle que je désire mais l'année du classement
    donc c'est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND YEAR(t5.date) = t4.annee
    puisque tu cherches les dossards de l'année de la course.

    tu as laissé le YEAR(t5.date) dans le select de ta requete ? Mes poussiereuses connaissances SQL me disent YEAR(t5.date) AS date.

    Ca semble venir juste d'un problème de syntaxe, après la requete me semble correct.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Citation Envoyé par Slein
    tu as laissé le YEAR(t5.date) dans le select de ta requete ?
    Erreur de réédition ... je l'avais déjà enlevé de mon script.

    Citation Envoyé par Slein
    Mes poussiereuses connaissances SQL me disent YEAR(t5.date) AS date.
    Tu veux que j'ajoute cela dans ma requête? Et où? FROM?

    Citation Envoyé par Slein
    Ca semble venir juste d'un problème de syntaxe, après la requete me semble correct.
    Je suis bien content que certain passe leur temps à essayer de m'aider car j'en ai grandement besoin ... cela fait trop longtemps que je cherche une solution qui ne vient pas! Qu'est-ce tu essayerais si tu étais moi?

    Merci

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $query_course = "SELECT course.*,
           classement.*,
           chgt.*,       
           cat.*,
           part.*,
           club.*
     
    FROM acrho_course course,
         acrho_classement class,
         acrho_changement chgt,
         acrho_categorie cat,
         acrho_participant part,
         acrho_club club
     
    WHERE course.id_course= '$colname_course'
    AND class.acrho_course_id_course = course.id_course
    AND chgt.annee = YEAR(course.date)
    AND chgt.dossard = class.dossard
    AND cat.ID_categorie = chgt.acrho_categorie_ID_categorie
    AND part.ID_participant = acrho_categorie_ID_categorie
    AND club.id_club  = acrho_club_id_club
     
    ORDER BY course.temps ASC";
    Bien sur tu remplaceras les * par ce qu'il te faudra ...

    Si la requete ne marche pas (après correction des erreurs de syntaxe, orthographe etc .... ... ) ... bah je vois pas

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    C'est bon l'erreur de syntax est corrigé ... il manquait un espace là: et forcément maintenant tout va bien!

    Merci beaucoup pour ce gros coup de pouce et @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bonne condition pour XPath??
    Par Mathew77 dans le forum Général Dotnet
    Réponses: 12
    Dernier message: 04/09/2009, 12h02
  2. [Conception] condition et empty
    Par carelha dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 04/12/2006, 10h29
  3. Cherche la bonne condition sur une requête
    Par Tchupacabra dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/11/2006, 14h52
  4. Réponses: 3
    Dernier message: 11/06/2006, 12h09
  5. [jsp] Bonne conception pour une pagination ?
    Par chriswest dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 13/12/2005, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo