Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1844 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  contenu dynamique d'un formulaire suivant une BDD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

contenu dynamique d'un formulaire suivant une BDD

n°1273992
ephagor
Posté le 28-12-2005 à 10:47:58  profilanswer
 

Bonjour,  
j'ai un petit soucis avec un formulaire.
en fait, il possède 2 cahmps. LE 1er représente une catégorie et le 2eme, représente le contenu de cette catégorie.
Je voudrai, que le 2eme champ affiche le contenu correspondant à la catégorie. Pour faire simple, ce formulaire sert à supprimer un mot d'une catégorie. Je voudrai que le 2eme champ m'affiche la liste de smots contenu dans la BD suivant la valeur du 1er champ qui est la catégorie. j'ia fait un script qui m'affiche bine le contenu des catégorie dans le 1er champ mais le 2eme champ ne marche pas:
 

Code :
  1. supprimer un mot<br>
  2. <form method="get" action="<?$PHP_SELF?>" name="editMot">
  3.   <table>
  4.    <tr>
  5.     <td>theme: </td>
  6.     <td>
  7.      <select name=\"theme\">
  8.     <?
  9.     //connexion à la base de données
  10.     include_once("../medias/connexion.inc" );
  11.     //requêtes permettant de selectionner les champs de la table score, à savoir le nom de l'utilisateur et le score qui lui est associé
  12.     $sql = "SELECT DISTINCT theme FROM mot"; 
  13.     $result = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  14.     //permet de boucler l'action echo tant qu'une ligne de tableau existe, fetch arry récupère les données sous forme d'un tableau d'une ligne et deux colonnes
  15.     while ($ligne = mysql_fetch_array($result)) {
  16.      $theme = $ligne['0'];
  17.      echo "
  18.       <option value=$theme>$theme</option>";
  19.     }
  20.     //deconnexion
  21.     /*include_once("../medias/deconnexion.inc" );
  22.     echo "<script langage='javascript'>\n";
  23.     echo "setTimeout(\"location = 'formSupprMot.php'\",1000);";//on recharge la page au bout d'1 seconde
  24.     echo "</script>";*/
  25.     ?>
  26.      </select>
  27.     </td>
  28.     <td>mot à supprimer: </td>
  29.     <td>
  30.      <select name=\"nom\">
  31.     <?
  32.     //connexion à la base de données
  33.     include_once("../medias/connexion.inc" );
  34.     //requêtes permettant de selectionner les champs de la table score, à savoir le nom de l'utilisateur et le score qui lui est associé
  35.     $sql = "SELECT nom FROM mot WHERE theme=\"$theme\""; 
  36.     $result = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  37.     //permet de boucler l'action echo tant qu'une ligne de tableau existe, fetch arry récupère les données sous forme d'un tableau d'une ligne et deux colonnes
  38.     while ($ligne = mysql_fetch_array($result)) {
  39.      $nom = $ligne['0'];
  40.      echo "
  41.       <option value=$nom>$nom</option>";
  42.     }
  43.     //deconnexion
  44.     include_once("../medias/deconnexion.inc" );
  45.     ?>
  46.      </select>
  47.     </td>
  48.     <td><input type="submit" name="valider" value="Valider"></td>
  49.    </tr>
  50.   </table>
  51.  </form>


pour l'instant, le script qui va supprimer le mot n'est pas encore fait. Je cherche just epour l'instant à afficher les mots correspondant à la catégorie choisi dans le 1er champ.
MERci de votre aide


Message édité par ephagor le 28-12-2005 à 10:48:28
mood
Publicité
Posté le 28-12-2005 à 10:47:58  profilanswer
 

n°1273994
ephagor
Posté le 28-12-2005 à 10:55:08  profilanswer
 

auto-réponse: j'ia trouv" une premiere erreur.
elle se trouvait dans le nom de mes champs.

Code :
  1. <select name="nom">


Code :
  1. <select name="theme">


 
le 2eme champ indique maintenant le contenu mais il ne s'agit pas du bon. Dans ma BD j'ai 2 catégories ('informatique' et 'internet'). le 1er m'affiche bien ces 2 catégories. dans le 2eme champ j'ai bien tous le smots correspondant mais uniquement pour la catégorie 'internet'. Lorsque je choisi la catégorie, 'informatique', il ne m'affiche pas la liste correspondante.

n°1274254
Xtina
Posté le 28-12-2005 à 23:18:40  profilanswer
 

Bonjour,
 
Si j'ai bien compris la logique de ton script, tu recharges la page toutes les secondes pour mettre à jour le deuxième champ?
Si c'est bien ça, il faut éviter cette méthode : quitte à utiliser du javascript, il vaut mieux programmer un évènement onChange dans le premier select.
 
Et pour le problème de mauvaise catégorie, c'est parce que dans ta requête de sélection des mots, tu utilises le contenu de la variable $theme. Or à la ligne 18, on voit que comment est affectée cette variable. Et comme il n'y a pas de changement après, $theme garde la dernière valeur qu'on lui a donné, dans ce cas c'est "internet".

n°1274322
remi-san
Posté le 29-12-2005 à 10:37:13  profilanswer
 

Xtina a raison: recharger la page toutes les secondes, c'est très sale. Il vaut mieux utiliser l'évenement OnChange.
 
Pour la deuxième requête, utilise plutôt "document.editMot.theme.value" que $theme.

n°1274533
ephagor
Posté le 29-12-2005 à 16:56:49  profilanswer
 

ok merci je vais tester tout ça. le rechargement d epage était just eune solution temporaire pour voir déjà si le contenu de mon 2e champ évolue en fonction du 1er mais je ne conaissais pas le onchange donc je vais tester cette fonction.
merci
 
EDIt: j'ai compris le pb de $theme. en fait , il ne vaut que 'internet', puisque c'est la seule variable ou on affecte les vlaeur de theme. donc $theme='informatique', n'existe plus. Il fuat que je trouve un moyen pour affecter à $theme, toutes les valeurs sans les perdre. Mais dans ce cas, comment réaffecter une valeur à $theme en fonction du choix ?, c'est à dire, comment je peux changer la valeur de $theme, lorsque je choisi mon theme ?


Message édité par ephagor le 29-12-2005 à 17:07:30
n°1274549
ephagor
Posté le 29-12-2005 à 17:27:08  profilanswer
 

don j'ai fait quelques modifications concernant la valeur de $theme.

Code :
  1. <select name="theme">
  2.     <?
  3.     //connexion à la base de données
  4.     include_once("../medias/connexion.inc" );
  5.     //requêtes permettant de selectionner les champs de la table score, à savoir le nom de l'utilisateur et le score qui lui est associé
  6.     $sql = "SELECT DISTINCT theme FROM mot"; 
  7.     $result = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  8.     $theme=array();
  9.     $i=0;
  10.     //permet de boucler l'action echo tant qu'une ligne de tableau existe, fetch arry récupère les données sous forme d'un tableau d'une ligne et deux colonnes
  11.     while ($ligne = mysql_fetch_array($result)) {
  12.      $theme[$i] = $ligne['0'];
  13.      echo "
  14.       <option value=$theme|$i]>$theme[$i]</option>";
  15.      $i++;
  16.     }
  17.     //deconnexion
  18.     include_once("../medias/deconnexion.inc" );*/
  19.     ?>
  20.      </select>


ainsi $theme devient un tableau dont chaque indice prend les valeurs des différents themes. c'est à partir d elà que je peux faire intervenir le onchange je pense mais je sais pas vraiment comment faire. en fait, à chaque changement de la valeur du 1er champs, je veux la stocker dans une nouvelle variable (appelons-là $tmp). Ainsi, mon 2eme champ afficherai tous le smots correspondant à la valeur de cette variable $tmp.

n°1274654
remi-san
Posté le 29-12-2005 à 21:08:19  profilanswer
 

Ton premier select, change-le comme ceci:
 

Citation :

<select name="theme" onChange="javascript:this.form.submit()" >


 
Ensuite pour ta deuxième requête, affecte ta variable $theme comme ceci:
 

Citation :

if(isset($_GET["theme"])) $theme=$_GET["theme"];


 
En faisant cela, à chaque fois que tu sélectionnes un nouveau thème dans ta liste, la page se rechargera en envoyant ton formulaire (via un GET comme tu as défini) et la variable $theme de la seconde requete devrait correspondre au champs selectionné. Donc, inutile de créer un array $theme[]. Par rapport à ton premier code, il n'y a pas grand chose à changer.


Message édité par remi-san le 29-12-2005 à 21:09:32
n°1274755
ephagor
Posté le 30-12-2005 à 00:38:27  profilanswer
 

ok merci beaucoup.
j'essaye ça demain et je vous tient au courant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  contenu dynamique d'un formulaire suivant une BDD

 

Sujets relatifs
comment gerer l'IHM d'un site dynamique??Faire apparaître un statut grâce à un menu déroulant/formulaire
[VBA]Tableau croisé dynamique sur plage variableproblème avec formulaire
Gérer une BDD en C++ sous Visual StudioConnexion Active Directory en dynamique
contenu de type inline et block dans <li>[ VC++ ] Les timers sont-ils "locaux" à un formulaire
Sécurisation des envois de formulaire ? + expressions régulièresImage dynamique
Plus de sujets relatifs à : contenu dynamique d'un formulaire suivant une BDD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR