Affichage de données selon choix du visiteur

Nouveau WRInaute
Bonjour ...

je suis en train de developper un script mais je bloque ...

je voudrais faire un affichage des données d'une table mais en fonction d'un choix possible pour le visiteur ... exemple il a deux listes deroulantes et on affiche selon les options des listes ... avec un affichage par defaut qui n'est pas dans les listes ...

je sais pas du tout comment faire cela ... qqun pourrais me mettre sur la voie ?

mon formulaire d'ajout de données dans la table est deja réalisé et fonctionne parfaitement ...

Code:
<body>
            <form method="post" action="ajout.php">
                  <div align="center">
                    <p>&nbsp;</p>
                    <p class="Style1">Ajout d'une astuce </p>
                    <table align="center" width="80%" border="0">
                      <tr align="right">
                        <td colspan="2" valign="middle"><div align="center">
                          <p>Titre :
                            <input name="titre" type="text" value="Titre de l'astuce ..." size="80" maxlength="255" />
                          </p>
                          </div></td>
        </tr>
                      <tr align="center" valign="middle">
                        <td width="49%" align="right" valign="middle"><div align="center">
                          <p>Catégorie :
                            <select name="categorie">
                              <option value="optimisation">Optimisation</option>
                              <option value="systeme">Système</option>
                              <option value="securite">Sécurité</option>
                              <option value="internet">Internet</option>
                              <option value="reseau">Réseau</option>
                              <option value="personalisation">Personalisation</option>
                              <option value="autres">Autres</option>
                            </select></p>
                          </div></td>
          <td width="51%" align="center" valign="middle"><div align="center">
            <p>O.S. :
                      <select name="os">
                          <option value="winnt">Windows NT</option>
                          <option value="win2k">Windows 2000</option>
                          <option value="winxphome">Windows XP Familial</option>
                          <option value="winxppro">Windows XP Pro</option>
                          <option value="win2003serveur">Windows 2003 Serveur</option>
                          <option value="win98">Windows 98</option>
                          <option value="win95">Windows 95</option>
                    </select></p>
            </div></td>
        </tr>
                <tr align="center">
                        <td colspan="2" valign="middle">
                                <div align="center">
                                <textarea name="preview" rows="5" cols="90">Preview ici.</textarea>
                                </div>
                                </td>
                  </tr>
                      <tr align="right">
                        <td colspan="2" valign="middle"><div align="center">
                          <p>
                            <textarea name="contenu" rows="20" cols="90">Votre astuce ici.</textarea>
                          </p>
            <p><input type="submit" value="Ajouter" /></p>
          </div></td>
        </tr>
                    </table>
              </div>
            </form>
               
                <?php
mysql_connect("******", "*******", "****");
mysql_select_db("*********");

$preview = nl2br($preview); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

$contenu = nl2br($contenu); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

mysql_query("INSERT INTO astuces VALUES('', '" . $titre . "', '" . $preview . "', '" . $contenu . "', '" . $categorie . "', '" . $os . "')");
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
</body>

Merci d'avance
 
WRInaute occasionnel
Si j'ai bien compris, c'est une sorte de moteur de recherche que tu veux faire.
Ce n'est pas compliqué :
- tu crée un formulaire avec les listes pour que l'utilisateur choisisse l'(les)item(s) qu'il veut voir.
- tu récupère les donnée du formulaire
- tu récupère les données voulues via une requète :
Code:
SELECT * FROM table1, table2, ... WHERE param1='donnée_formulaire1', param2='donnée_formulaire2'
- tu affiches les données.

Arnaud
 
Nouveau WRInaute
merci pour cette reponse .. je n'ai pas le temps de voir ca haujourd'hui ... peut etre ce soir ... je te tient au courrant ...
 
Nouveau WRInaute
j'ai essayer de travailler sur mon script mais j'ai encore qques soucis ..

voila le code de la page affichage.php

Code:
<body>
<form method="post" action="affichage.php">
<table width="100%" border="0">
  <tr>
    <td align="center" height="50" colspan="2">Catégorie :
      <select name="choix1">
        <option value="all" selected="selected">toutes</option>
              <option value="optimisation">Optimisation</option>
              <option value="systeme">Syst&egrave;me</option>
              <option value="securite">S&eacute;curit&eacute;</option>
              <option value="internet">Internet</option>
              <option value="reseau">R&eacute;seau</option>
              <option value="personalisation">Personalisation</option>
              <option value="autres">Autres</option>
          </select>
    <br />
      O.S. :
        <select name="choix2">
          <option value="all" selected="selected">tous</option>
              <option value="winnt">Windows NT</option>
              <option value="win2k">Windows 2000</option>
              <option value="winxphome">Windows XP Familial</option>
              <option value="winxppro">Windows XP Pro</option>
              <option value="win2003serveur">Windows 2003 Serveur</option>
              <option value="win98">Windows 98</option>
              <option value="win95">Windows 95</option>
        </select>
		<br />
		<input type="submit" value="Ok" />
      </td>
  </tr>
  <tr>
    <td width="44%" height="287" align="left" valign="middle">
<?php
mysql_connect("localhost", "********", "********");
mysql_select_db("********");

$reponse = mysql_query('SELECT * FROM astuces WHERE $choix1, $choix2');

while ($donnees = mysql_fetch_array($reponse))
{
    echo '<p>' . $donnees['categorie'] . ' <br />' . $donnees['os'] . ' <br />' . $donnees['preview'] . ' <br />' . $donnees['titre'] . ' <br />' . $donnees['contenu'] . '</p>';
}

mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
</td>
  </tr>
</table>
</form>
</body>

suite a ca il me met l'erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\www\optim-pc.com\htdocs\astuces\affichage.php on line 47 qui est la ligne :
Code:
while ($donnees = mysql_fetch_array($reponse))

je ne vois quel argument pourrait etre invalid ... qqun vois mon erreur ?

merci d'avance
 
WRInaute occasionnel
A mon avis, c'est ta requète qui n'est pas bonne. Du coup mysql_query renvoit 'false'.
Dans la clause WHERE, sépare les tests par AND à la place de la virgule.

Arnaud
 
Nouveau WRInaute
j'ai fais ce que tu m'as dit et rien ... toujours une erreur ...

j'ai essayer le code
Code:
$reponse = mysql_query('SELECT * FROM astuces WHERE categorie='$choix1' AND os='choix2' ');

Parse error: syntax error, unexpected T_VARIABLE

et

Code:
$reponse = mysql_query('SELECT * FROM astuces WHERE categorie=$_POST['choix1'] AND os=$_POST['choix2'] ');

Parse error: syntax error, unexpected T_STRING
 
Nouveau WRInaute
j'ai mis la ligne suivante :

Code:
$reponse = mysql_query('SELECT * FROM astuces WHERE categorie="$choix1" AND os="$choix2" ');

et plus d'erreur ...

par contre je n'ai pas d'affichage de mes donnees ...

j'ai ceci juste apres ma requete :

Code:
while ($donnees = mysql_fetch_array($reponse))
{
    echo '<p>' . $donnees['categorie'] . ' <br />' . $donnees['os'] . ' <br />' . $donnees['titre'] . ' <br />' . $donnees['preview'] . ' <br />' . $donnees['contenu'] . '</p>';
}
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>

je vois pas trop ou ca coince non plus lol
 
WRInaute occasionnel
Ok, y'avait un problème avec les " et '. Essaie de te familiariser avec leur emploi, ça t'évitera bien des problèmes par la suite.

Pour le dernier point, je ne vois pas. Ta requète est bien censée donner un résultat non-vide?

Arnaud
 
Nouveau WRInaute
j'ai trouver pourquoi je n'avais pas d'affichage ...

j'ai changer ma requete et ca fonctionne ...

Code:
$reponse = mysql_query("SELECT * FROM `astuces` WHERE `categorie`='".$choix1."' AND `os`='".$choix2."'");

reste a faire l'affichage par defaut qd le visiteur arrive et avant qu'il fasse un choix :)
 
WRInaute discret
après ta requête, met ce code afin de voir ou se trouve l'erreur :

Code:
$reponse = mysql_query("SELECT * FROM `astuces` WHERE `categorie`='".$choix1."' AND `os`='".$choix2."'") OR die ("Impossible d'exécuter la requête : ".mysql_error());

Et vois où est le problème...
 
Nouveau WRInaute
en fait je n'ai plus de probleme a proprement parler :)

pour l'instant tout fonctionne ...

il faut juste que j'affiche tous les champs "titres" sur la page a l'arrivee du visiteur avant qu'il fasse un choix ... ce qui m'amene a la question ...

une variable de formulaire est elle vide par defaut ? avant de faire un choix et valider par le bouton ...

si oui je pense savoir comment faire mon petit shmilblique :p
 
WRInaute occasionnel
GhostShell a dit:
une variable de formulaire est elle vide par defaut ? avant de faire un choix et valider par le bouton ...

si oui je pense savoir comment faire mon petit shmilblique :p

Pour les input, le paramètre value="valeur" est le texte qui sera présent dans la case. P. ex
Code:
<input type="text" name="input1" value="valeur1" />
affichera "valeur1" dans la case.

Pour les textarea, c'est différent et de la forme :
Code:
<textarea name="textarea1">ton texte</textarea>

Et pour les select, il faut ajouter selected dans l'option sélectionnée par défaut :
Code:
<select name="select1">
<option value"valeur1">valeur1</option>
<option value"valeur2" selected>valeur2</option>
<option value"valeur3">valeur3</option>
</select>

L'option 2 sera sélectionnée par défaut.

Arnaud
 
Nouveau WRInaute
pour moi tout ca c'est bon c'est déjà fait ... ce que je voulais savoir c'est lorsque la page est chargée et avant que le visiteur fasse un choix dans les listes et valide, une variable prends elle une valeur ou est-elle vide ? ... ou $variable == NULL si tu préfères ...
 
Discussions similaires
Haut