Page 1 sur 1

Une requete qui s'adapte

Posté : 18 sept. 2010, 18:43
par Jacksons
Salut tout le monde

Voilà mon problème: Sur mon site, arrive un moment où l'utilisateur à le choix entre 2 thèmes:

- Thème X
- Thème Y

Ces 2 thèmes sont choisis aléatoirement parmis ceux que j'ai créés. Pour cela, j'ai fait 2 tables différentes en faisant 2 requêtes différentes. Jusque là pas de soucis.

Seulement voilà, étant donné que je n'ai aucune idée du thème qui va tomber, comment je peux faire pour associer les questions du thème au thème qui va être choisis ?! Exemple:

-Thème 1: les oiseaux
-Thème 2: les villes

Comment je fais pour que si je choisis le thème "oiseaux" j'ai pas des questions de la ville ou autre qui tombe en rappellant que je ne sais jamais quel thème va tomber !

En espérant avoir été clair, merci d'avance pour votre aide !

Re: Une requete qui s'adapte

Posté : 18 sept. 2010, 20:25
par xTG
Je suppose que tu as dans tes enregistrements un champs qui référence le thème de l'enregistrement non ?
Dans ce cas il te suffit de mettre le thème dans la clause where.
// $theme est le thème choisi aléatoirement
$sql = "SELECT id, contenu FROM mesQuestions WHERE theme=$theme";
$req = mysql_query($sql);

Re: Une requete qui s'adapte

Posté : 19 sept. 2010, 11:01
par Jacksons
Oui j'ai ce champs ! ensuite je fais cette requête:

 <?php
   	$reponse = $bdd->query("SELECT themex.theme, theme_tintin.Question, theme_tintin.Rep1, theme_tintin.Repjuste, theme_tintin.Rep3 FROM themex, theme_tintin WHERE theme_tintin.id_themex = themex.id");
   	
   while($donnees = $reponse->fetch()) {
   	echo $donnees['Question'];
   }
   	?>
J'ai mis là chaques question l'id_theme correspondant et résultat quelque soit le theme choisis toutes les questions de tous les themes s'affichent sa ne filtre pas !

Ma requête es fausse ?

Re: Une requete qui s'adapte

Posté : 19 sept. 2010, 12:19
par xTG
Tu ne lui affectes aucune valeur à ton champs. C'est donc normal.
Relis ma requête, j'y affecte une variable.

Re: Une requete qui s'adapte

Posté : 21 sept. 2010, 20:03
par Jacksons
Hmm mon problème persiste malres tout !

J'ai créé un champ id_theme dans les questions en lui mettant 1 pour les questions qui correspondent au theme 1 et 2 pour les questions qui correspondent au theme 2.

Ensuite voilà la requete que je tape :




$reponse = $bdd->query('SELECT theme.themes, theme.id, questions.Question FROM theme, questions WHERE questions.id_theme = themes.id');

$donnees = $reponse->fetch();

?>

<div id = "quest"> <?php echo $donnees['Question']; ?> </div>

Résultat: sa m'affiche toujours la même question quelque soit le theme ! (cette question affichée est la première de ma table). Sa vient de quoi ?

Re: Une requete qui s'adapte

Posté : 22 sept. 2010, 08:18
par xTG
$reponse = $bdd->query('SELECT theme.themes, theme.id, questions.Question FROM theme, questions WHERE themes.id = ' . $theme . ' AND questions.id_theme = themes.id'); 

Re: Une requete qui s'adapte

Posté : 24 sept. 2010, 21:33
par Jacksons
Salut !

Sa ne marche pas pourtant j'ai bien pris soin de récupérer ma variable voici le code complet:
       <?php      

      	            	try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}  
 
?>

<?php
    
   $theme = htmlspecialchars($_GET['theme']);

    
  $reponse = $bdd->query('SELECT theme.themes, theme.id, questions.Question FROM theme, questions WHERE themes.id = ' . $theme . ' AND questions.id_theme = themes.id');

  
    
     $donnees = $reponse->fetch();

?>
 
 <div id = "quest"> <?php echo $donnees['Question']; ?> </div>
Résultat: rien ne s'affiche quelque soit le theme choisi !

Re: Une requete qui s'adapte

Posté : 24 sept. 2010, 22:03
par stealth35

Re: Une requete qui s'adapte

Posté : 25 sept. 2010, 00:20
par Jacksons
Merci mais sa ne change absolument rien... je comprend vraiment pas ce qui peut foirer là...

Re: Une requete qui s'adapte

Posté : 25 sept. 2010, 00:22
par stealth35
Merci mais sa ne change absolument rien... je comprend vraiment pas ce qui peut foirer là...
montre ce que t'as fais

sinon fais
$donnees = $reponse->fetch();
var_dump($donnees);
ta bien les erreur php d'activé avec le niveau au maximum ?

Re: Une requete qui s'adapte

Posté : 25 sept. 2010, 12:02
par Jacksons
Oui j'ai bien les erreurs activées et même avec var_dump je n'ai aucune erreur qui s'affiche ! voici le code complet sachant que $theme c'est le theme que je récupère qui est sur la page précédente:
 <?php      

      	            	try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
	$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}  
 
?>

<?php
    
   $themex = htmlspecialchars($_GET['theme']);
   $id = htmlspecialchars($_GET['id']);

     $reponse = $bdd->query('SELECT themex.theme, themex.id, theme_tintin.Question FROM themex, theme_tintin WHERE theme_tintin.id_themex = themex.id AND themex.id = '. $themex. '');
        
     while($donnees = $reponse->fetch()){
     	var_dump($donnees);

?>
 
 <div id = "quest"> <?php echo $donnees['Question']; ?> </div>
 
    <?php
     }
     ?>

Re: Une requete qui s'adapte

Posté : 25 sept. 2010, 12:04
par Jacksons
Excus eje me suis trompé de code la il y a les bons noms:
<?php      

      	            	try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
	$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}  
 
?>

<?php
    
   $theme = htmlspecialchars($_GET['theme']);
   $id = htmlspecialchars($_GET['id']);

     $reponse = $bdd->query('SELECT themes.theme, themes.id, questions.Question FROM themes, questions WHERE questions.id_themes = themes.id AND themes.id = '. $theme. '');
        
     while($donnees = $reponse->fetch()){
     	var_dump($donnees);

?>
 
 <div id = "quest"> <?php echo $donnees['Question']; ?> </div>
 
    <?php
     }
     ?>

Re: Une requete qui s'adapte

Posté : 25 sept. 2010, 16:35
par stealth35
ta pas mis les bon nom ton pdo il s'appelle $bdd mais pour les erreur ta recopier et ta mis $dbh, si ta pas d'erreur a se niveau c'est que le niveau d'erreur est trop bas