Partage
  • Partager sur Facebook
  • Partager sur Twitter

{{Doublon}} bdd croisées

18 novembre 2010 à 22:32:03

Dans ma base de données j'ai une table:"journées_train" qui a 4 champs 'a', 'b', 'c', 'd' qui sont des ensembles de dates.
j'ai une autre table "ter" qui a trois champs:'id', 'prix', 'jours'. le champ 'jours' ne peut prendre que 4 valeurs: 'a', 'b', 'c', 'd' .
Pour une date proposée aux 4 champs de la table "journées_train" si seul les champs: 'a' et 'b' possèdent cette date, je voudrais ne récupérer de ma table "ter" que les données ou le champ 'jours' avait la valeur 'a' ou 'b'.
Suis je clair? merci pour l'aide.
  • Partager sur Facebook
  • Partager sur Twitter
18 novembre 2010 à 22:56:08

Pas du tout ^^

Mais on va quand meme essayer :

SELECT *
FROM journees_train jt, ter
WHERE (ter.jours=jt.a OR ter.jours=jt.b)
  AND (ter.jour!=jt.c OR ter.jour!=jt.d)


Je verrais quelque chose comme ca.
En cas si j'ai aps compris, un exemple serait sympa :p
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 8:50:26

Voilà mon script suivit du message d'erreur,où est l'erreur?
<h3> numero trains circulant le <?php echo $_POST['heure_depart'];?> </h3>
<p>

	<?php
//on veut les horaires du lendemain
	try
	{
		$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
	catch(Exception $e)
{	
			die('Erreur : '.$e->getMessage());
}	
	$req = $bdd->query("SELECT *, 
	FROM journees_train AS 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'] . "'
	AND ter.jour = jt.a OR ter.jour=jt.b OR ter.jour=jt.c OR ter.jour=jt.d"or die(print_r($bdd->errorInfo()));

	while ($donnees = $req->fetch()  )
	{
	echo  'le train numero '.$donnees['jt.numero']. 'part à ' .$_POST['heure_depart'].  'coute '.$donnees['jt.prix']. '<br />';
	}
	$req->closeCursor();
	?>


Voilà le message d'erreur:
numero trains circulant le

Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM journees_train AS jt, ter WHERE jt.a= '' OR jt.b''OR jt.c''OR jt.d'' AN' at line 2 ) 1
Merci pour votre aide
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 9:21:37

Non ce n'est pas ça, même une fois mise j'ai le message:
numero trains circulant le

Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM journees_train AS jt, ter WHERE jt.a= '' OR jt.b''OR jt.c''OR jt.d'' AN' at line 2 ) 1
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 9:27:42

enleve le AS entre journees et jt, et enleve la virgule avant le FROM !

As tu lu le tutoriel de mateo sur PHP/SQL ??
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 11:38:31

Oui je l'ai. La virgule c'est une erreur, AS je pense que c'est autorisé, faut il des parenthèses au niveau des or ou après le where?.
En tout cas toujours message d'erreur!( que signifie exactement ce message d'erreur):

numero trains circulant le

Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''OR jt.c''OR jt.d'' AND ter.jour = jt.a OR ter.jour=jt.b OR ter.jour=jt.c OR ' at line 3 ) 1
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 12:45:47

en fait il y a plusieurs erreur, le message n'est pas tout le temps le meme, donc j'avance au fur et a mesure.
Oui, il faut des parenthese pour séparer les OR et AND
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 13:17:26

Il manque plusieurs signes "=" dans la succession de OR après le WHERE ...
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 18:52:04

Je n'arrive pas à trouver le script qui me donne le résultat escompté.
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.
  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2010 à 18:52:04

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Sujet en double


Bonjour,

Il est interdit de créer plusieurs sujets pour un même problème. Celui-ci a donc été fermé.

Merci de votre compréhension.
Les modérateurs.
  • Partager sur Facebook
  • Partager sur Twitter
Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »