Je n'arrive pas à trouver le script qui me donne le résultat escompté j'ai simplifié les données pour rendre compréhensible mon problème.
J'ai dans ma base de donnée 2 tables:
la table journées_train:
a
b
c
d
2011-01-01
2011-01-01
2011-01-01
2011-01-01
2011-01-02
2011-01-02
2011-01-02
2011-01-05
2011-01-03
2011-01-03
2011-01-05
2011-01-06
2011-01-04
2011-01-05
2011-01-06
2011-01-07
et la table ter:
numero
prix
jour
1
10
a
2
20
b
3
30
c
je voudrais pour une date $_POST['date_depart']=2011-01-03 optenir le résultat suivant:
le train numero 1 part le 2011-01-03 coute 10
le train numero 2 part le 2011-01-03 coute 20
voilà mon script qui ne fait pas le tri.
<h3> numero trains circulant le <?php echo $_POST['heure_depart'];?> </h3>
<p>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$req = $bdd->query("SELECT *
FROM journees_train jt, ter
WHERE jt.a= '" . $_POST['heure_depart'] . "' OR jt.b='" . $_POST['heure_depart'] . "'OR jt.c = '" . $_POST['heure_depart'] . "'OR jt.d ='"
. $_POST['heure_depart'] . "' ") or die(print_r($bdd->errorInfo()));
while ($donnees = $req->fetch() )
{
echo 'le train numero '.$donnees['numero']. 'part à ' .$_POST['heure_depart']. 'coute '.$donnees['prix']. '<br />';
}
$req->closeCursor();
?>
</p>
Comme résultat le numero 3 s'affiche alors qu'il ne tourne pas le 2011-01-03
Merci pour votre aide.
Ok. Dans ce cas, il vaudrait mieux que ta table ait un champ date, et un champ numero_train. Plutôt que ces champs a, b, c, d.
J'ai essayé cela implique que chaque date ai son champ dans ce cas là je n'arrive pas à faire la requéte, comment demander $_POST= une valeur pouvant se trouver quelque part dans la table ter, et récupérer ensuite la donnée 'numero' et la donnée 'prix' de ce train qui comporte cette date?
Citation : rotoclap
Faudrait que tu relises un bon coup le cours officiel et compléter par d'autres tutos parce que là, t'as construit ta base complètement à l'envers.
Tu veux dire la table 'journees_train' à l'envers,
en construisant la table 'journees_train' dans l'autre sens sous la forme:
periode
2011-01-01
2011-01-02
2011-01-03
2011-01-04
2011-01-05
2011-01-06
2011-01-07
a
2011-01-01
2011-01-02
2011-01-03
2011-01-04
NULL
NULL
NULL
b
2011-01-01
2011-01-02
2011-01-03
NULL
2011-01-05
NULL
NULL
c
2011-01-01
2011-01-02
NULL
NULL
2011-01-05
2011-01-06
NULL
d
2011-01-01
NULL
NULL
NULL
2011-01-05
2011-01-06
2011-01-07
Dis moi comment faire la requete $_POST= une valeur pouvant se trouver quelque part dans la table journees_train, et récupérer ensuite les données periodes qui contiennent cette date ?
Merci de votre aide
SELECT journees_trains.date_depart, ter.numero, ter.prix
FROM ter
INNER JOIN journees_trains ON ter.numero = journees_trains.numero_train
WHERE journees_train.date_depart = '2011-01-03'
Ta solution fonctionne mais pratiquement c'est trés lourd à mettre en place il y a beaucoup trop de dates et de ter dans la réalité pour appliquer cette méthode.
penses pouvoir exploiter un tableau comme celui qui suit pour arriver au même résultat car pour moi il serait beaucoup plus simple à élaborer.
Oui, si une BDD est bien construite, tu ne touches pas aux champs jusqu'à la prochaine évolution de ton architecture. Et ajouter un TER, c'est pas une évolution.
je n'ai jamais voulu rajouter un champ, c'est pour répondre à une intervention précédente.
Ma demande au depart est simple je recherche un script pour obtenir la solution décrite en bas.
j'ai volontairement simplifié les données pour rendre compréhensible mon problème.
Ce dont je suis sur c'est qu'il faut deux tableaux car les champs de la table 'journees_train' vont servir pour plusieurs 'numero' de la table 'ter'.
Les tables 'ter' et 'journees_train' dans la pratique auront énormément de données .
Je n'arrive pas à trouver le script qui me donne le résultat escompté peut etre faut il présenter la table avec les dates différemment, utiliser des boleens?
J'ai dans ma base de donnée 2 tables:
la table journées_train:
a
b
c
2011-01-01
2011-01-01
2011-01-01
2011-01-02
2011-01-02
2011-01-05
2011-01-03
2011-01-05
2011-01-06
2011-01-04
2011-01-06
2011-01-07
et la table ter:
numero
prix
jours
1
10
a
2
20
b
3
30
c
je voudrais pour une date $_POST['date_depart']=2011-01-03 optenir le résultat suivant:
le train numero 1 part le 2011-01-03 coute 10
le train numero 2 part le 2011-01-03 coute 20
Je fais bien finir par trouver sur ce forum la solution! merci.
Je t'ai donné la meilleure solution. Après, si tu ne veux pas suivre mes conseils, tant pis. Mais la solution, elle est là. Si tu ne fais pas comme ça, ta base de données sera mal conçue, et tôt ou tard, ça te posera problème.
Nope, ça n'a rien d'impossible. C'est toi qui refuse de la mettre en place. Et j'ai toujours pas compris pourquoi d'ailleurs, parce que ça n'implique pas plus de boulot que ce que tu fais pour l'instant.
Je veux simplement savoir si dans mysql, dans une table (ter),je peux avoir une donnée (a ou b ou c ) qui est en réalité un ensemble de données et comment les exploiter avec mysql ou php.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !