|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Claire Étudiant Inscription : janvier 2012 Messages : 33 ![]() |
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 ^^ |
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() |
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 |
|
00
|
|
|
#3 |
|
Invité régulier
![]() Claire Étudiant Inscription : janvier 2012 Messages : 33 ![]() |
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 =(
|
|
|
00
|
|
|
#4 | ||
|
Membre expérimenté
![]() |
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 :
|
||
|
00
|
|
|
#5 |
|
Invité régulier
![]() Claire Étudiant Inscription : janvier 2012 Messages : 33 ![]() |
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? ^^)
|
|
|
00
|
|
|
#6 | ||
|
Membre expérimenté
![]() |
Oui dans ce cas fait un :
Code :
|
||
|
10
|
|
|
#7 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
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.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#8 | |
|
Membre expérimenté
![]() |
Citation:
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 |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Claire Étudiant Inscription : janvier 2012 Messages : 33 ![]() |
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 |
|
|
00
|
|
|
#10 | |
|
Membre expérimenté
![]() |
Citation:
Un truc du style "Je pense que le code serait plus optimisé si on ajoutait un champs date pour la date de naissance", et si tu garde les 3 anciens champs le reste du code sera toujours fonctionnel |
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
Si l'outil est à la base est tordu, je ne vois pas le coté bénéfique du stage, car c'est un stage justement, pas un travail. Donc le minimum c'est que le stagiaire apprenne à faire du code correcte, non ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Claire Étudiant Inscription : janvier 2012 Messages : 33 ![]() |
J'ai déjà tenté, j'ai soumis un autre schéma relationnelle mais pas moyen c'est parti direct poubelle donc bon pas moyen ^^
|
|
|
00
|
|
|
#13 |
|
Membre expérimenté
![]() |
Tout à fait d'accord, mais malheureusement beaucoup de boites considèrent les stagiaires comme de la main d’œuvre gratuite et ne se préoccupent pas de ce que ca apportera au stagiaire...
|
|
00
|
|
|
#14 | |
|
Membre expérimenté
![]() |
Citation:
|
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Claire Étudiant Inscription : janvier 2012 Messages : 33 ![]() |
D'accord merciii =)
|
|
|
00
|
|
|
#16 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
Citation:
![]() Bon, et bien tu peux dire à ton tuteur que c'est un imbéc*** Si si, et haut et fort même. La solution d'Amoiraud est une bonne piste à mon sens.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#17 |
|
Invité régulier
![]() Claire Étudiant Inscription : janvier 2012 Messages : 33 ![]() |
Oh non en même temps tout le site est structurer sur ce modèle ça peut se comprendre ^^
En attendant j'ai résolu mon problème =) Au final requête en utilisant les années =) Bonne journée et encore merci =) |
|
|
00
|
|
|
#18 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
On peut reconstituer dynamiquement une vraie date en SQL à partir des 3 champs jour, mois, avec une fonction qui s'appelle généralement TO_DATE(). Le nom exact et la forme des arguments dépendent du SGBD. C'est pareil pour calculer l'âge au jour près.
Donc le fait de ne pas avoir de champ de type date n'est effectivement pas une bonne idée mais ce n'est pas pour autant un problème bloquant pour un filtrage en SQL. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com