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 :

Problème de requête après une première requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 42
    Par défaut Problème de requête après une première requête
    Hello!!
    Alors voila depuis 2 jours je bloque je fais donc appel a vous ^^

    J'ai une base de données regroupant des clients une pour les infos de la personnes l'autre pour son habitation. Les tables sont reliés entre elles via le champs id_adresse.
    Dans les données sur la personne j'ai 3 champs regroupant la date d’anniversaire de la personne (jour, mois et années). Je doit effectuer différentes requêtes afin de filtrer les clients et de n'afficher que ceux qui correspondent aux critères demandés dans un tableau j'ai donc fait mes requêtes en forme de conditions imbriqués et jusque la aucun soucis. Mais par la suite dans mon while j'ai calculer l'age qui s'affiche également parfaitement. Mais le gros problème c'est que j'ai des conditions sur l'age, l'age n'apparaissant qu'a partir de mon While je n'arrive pas a exécuter les bonne requête et je suis un peu perdu.
    Le projet n'avance plus, je continue de chercher et j’espère que vous pourrais m'aider ^^

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut,

    Je te conseil d'utiliser un champ Date pour la date de naissance, car la ca va pas être possible de filtrer sur l'age si le jour, le mois, et l'année sont stockés dans des champs séparés.

    A la limite tu peut t'en sortir avec des trucs du style "WHERE anneeNaissance <= '" . (date('Y') - $ageRequis) . "'" pour sélectionner les clients en fonction de l'âge mais ca ne prendra pas en compte le jour et le mois, enfin bref je pense qu'il vaut mieux que tu repense un peu la base de données, quitte à refaire une partie de ton code, plutôt que de bidouiller et de te prendre la tête pour un code qui sera bancal.

    Et si ta table client comporte déjà pas mal d'enregistrement, tu peut faire un petit script de migration pour mettre à jour ton nouveau champs date de naissance

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 42
    Par défaut
    Je voudrais bien pouvoir modifier la table mais je ne peux pas =( en fait je suis en stage dans une entreprise et je dois améliorer un site alors j'ai pas trop le choix au niveau de la base =(

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Et simplement ajouter un champ dans le base sans toucher aux champs existant t'a pas le droit ?
    Sinon tu doit faire quoi exactement au niveau de l'âge ?
    A la limite si c'est simplement une recherche par rapport à l'âge tu peut exclure les résultats qui ne correspondent pas au bon âge dans ton while, un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ($ageRequis != $ageClient) { 
      continue;
    } else {
      $listeResultats[] = $idClient;
    }
    Bon c'est pas propre du tout étant donné qu'il va récupérer une grosse liste de résultats inutilement, mais bon je crois que t'a pas trop le choix si tu peut pas toucher à la structure de la base

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 42
    Par défaut
    En fait le projet c'est la génération d'impression de documents en fonction des critères de sélection, donc dans les résultats du tableau je dois absolument afficher l'age a partir d'un calcul que j’exécute dans mon while, mais au niveau des critères de sélection j'ai age minimum et age maximum or je ne vois pas comment faire des recherche dessus avant le calcul de l'age (impossible je suppose) mais la je pensée passer par l’année de naissance, puisque j'ai la donnée dans la table je calcul l’année mini et l’année maxi et je base ma recherche sur cette condition (possible ça non? ^^)

  6. #6
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Oui dans ce cas fait un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req .= 'WHERE annee_naissance BETWEEN "' . (date('Y') - $ageMax) . '" AND "' . (date('Y') - $ageMin) . '"';
    Mais pour avoir un truc précis par rapport au jour et mois de naissance, tu peut ajouter le traitement que j'avais mis dans mon message précédent.

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Je voudrais bien pouvoir modifier la table mais je ne peux pas =( en fait je suis en stage dans une entreprise et je dois améliorer un site alors j'ai pas trop le choix au niveau de la base =(
    Comment ça tu ne peux pas ?

    Si tu fais des requêtes telles que des UPDATE ou des INSERT normalement tu dois pourvoir le faire (bon, faudra pouvoir créer un nouveau champ, et supprimer les 3 anciens quand même, mais ça reste quand des requêtes SQL).

    Ce ne serait pas plutôt qu'on t'interdise de le faire ?
    Dans ce cas n'y a t-il pas moyen de rencontrer la personne en question et lui expliquer que sa Bdd à ce niveau là est mal conçue, car c'est une erreur de faire ça en 3 champs alors que c'est un type DATE, soit 1 champ.

    Le problème c'est tout ce que tu feras sur cette donnée sera tordue.
    Quel intérêt il y t-il de faire un stage dans le développement si ce qu'on va faire va être tordu ?
    Modifier cette partie là n'est il pas une amélioration ?


    Enfin, je dis ça ... mais j'ai rien dis.

  8. #8
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Comment ça tu ne peux pas ?

    Si tu fais des requêtes telles que des UPDATE ou des INSERT normalement tu dois pourvoir le faire (bon, faudra pouvoir créer un nouveau champ, et supprimer les 3 anciens quand même, mais ça reste quand des requêtes SQL).

    Ce ne serait pas plutôt qu'on t'interdise de le faire ?
    Dans ce cas n'y a t-il pas moyen de rencontrer la personne en question et lui expliquer que sa Bdd à ce niveau là est mal conçue, car c'est une erreur de faire ça en 3 champs alors que c'est un type DATE, soit 1 champ.

    Le problème c'est tout ce que tu feras sur cette donnée sera tordue.
    Quel intérêt il y t-il de faire un stage dans le développement si ce qu'on va faire va être tordu ?
    Modifier cette partie là n'est il pas une amélioration ?


    Enfin, je dis ça ... mais j'ai rien dis.

    Ah oui moi j'avais compris qu'on lui interdisait de toucher à la base, mais si c'est qu'une question de droit d'accès à la base de données, c'est sur qu'un ALTER TABLE marche aussi bien dans un mysql_query que dans phpMyAdmin

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 42
    Par défaut
    Bah je suis en lien direct avec celui qui a fais la base si je lui dit "mon développement est tordu parce que votre base de 72 tables est tordu et en plus les 3 seules tables que j'utilise sont mal foutu...." je sais pas pourquoi mais je le sent mal ^^
    Au début en analysant la base j'ai demander si je pouvais modifier mais vu sa tête a ce moment je touche pas ><' et en plus toutes les pages déjà créé se base dessus et vu le code avant je préfère pas y mettre mon nez j'y perd mon PHP ^^

    Oui j'ai vu le traitement précédent je vais tenter les 2 solutions a voir maintenant ce qui sera le plus correct ^^ Merciii

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

Discussions similaires

  1. Une seconde requête si la première ne donne rien
    Par Kaori dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2011, 16h12
  2. Réutilisation d'un Statement après la première requète
    Par JeanNoel53 dans le forum InterBase
    Réponses: 6
    Dernier message: 15/06/2010, 20h26
  3. Réponses: 4
    Dernier message: 25/02/2009, 14h22
  4. Réponses: 3
    Dernier message: 19/05/2008, 10h36
  5. Réponses: 2
    Dernier message: 10/02/2006, 14h46

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