Une requete qui s'adapte

Jacksons
Invité n'ayant pas de compte PHPfrance

18 sept. 2010, 18:43

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 !

ViPHP
xTG
ViPHP | 7331 Messages

18 sept. 2010, 20:25

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);

Jacksons
Invité n'ayant pas de compte PHPfrance

19 sept. 2010, 11:01

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 ?

ViPHP
xTG
ViPHP | 7331 Messages

19 sept. 2010, 12:19

Tu ne lui affectes aucune valeur à ton champs. C'est donc normal.
Relis ma requête, j'y affecte une variable.

Jacksons
Invité n'ayant pas de compte PHPfrance

21 sept. 2010, 20:03

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 ?

ViPHP
xTG
ViPHP | 7331 Messages

22 sept. 2010, 08:18

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

Jacksons
Invité n'ayant pas de compte PHPfrance

24 sept. 2010, 21:33

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 !

ViPHP
ViPHP | 5462 Messages

24 sept. 2010, 22:03


Jacksons
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 00:20

Merci mais sa ne change absolument rien... je comprend vraiment pas ce qui peut foirer là...

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 00:22

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 ?

Jacksons
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 12:02

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
     }
     ?>

Jacksons
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 12:04

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
     }
     ?>

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 16:35

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