PHP, boucles while et formulaires

rinpe Messages postés 2 Date d'inscription dimanche 17 juin 2007 Statut Membre Dernière intervention 20 janvier 2009 - 20 janv. 2009 à 18:54
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 21 janv. 2009 à 08:08
Bonjour,

Cela fait maintenant trop de temps que je cherche désespérement une solution en parcourant les forums, mais aucun des cas que j'ai lu ne ressemble (même un petit peu) au mien :(

J'ai créé une page d'administration qui permet de corriger un texte déjà rentré dans ma base de donnée.
Cette base de données contient plusieurs tables dont les 2 suivantes : "articles" et "type".

Mon formulaire est composé d'une liste déroulante proposant les types (table type) et d'un éditeur de texte correspondant au champ "texte2" de l'article (table articles). Ces deux tables sont reliées par l'identifiant du type : "id-type" pour la table type et "Xid_type" pour la table articles.

En bref, je voudrais que lorsqu'on sélectionne un type, s'affiche (dans l'éditeur) le contenu existant du champ "texte2" de l'article correspondant pour que l'administrateur puisse le modifier.

 j'espère être assez claire..

Voici mon code actuel. Je n'ai aucun message d'erreur renvoyé et la liste des types s'affiche normalement.
Mais dans l'éditeur ne s'affiche que le "texte2" correspondant au dernier type de la liste !

<? include ("../../connexion/dbconnect.php"); ?>
 
<form method="post" action="../modifications/insert1.php">
  Modification du texte d'introduction des pages du groupe 1 :

  &nbsp;

                 
            ----

              Type  :
                  <select name="type">
                   
<?

  $sql = "SELECT * FROM type where id_type=15 or id_type=11 or id_type=16 or id_type=18";
 
  $resultat = mysql_query($sql, $connexion);
  $num = mysql_num_rows($resultat);
 
  echo "<option value=\"\" selected>Choisissez</option>";
 
  For ($i=0;$i<$num;$i++)
  {
     $row = mysql_fetch_array($resultat);
     echo "<option value=".$row['id_type'].">".$row['nom_type']."</option>\n";
  
     $sql2 = "SELECT * FROM articles where Xid_type=".$row['id_type']."";
  
     $resultat2 = mysql_query($sql2, $connexion);

     while ($row2 = mysql_fetch_array($resultat2, MYSQL_ASSOC))
        {
         $affichage = $row2['texte2'];
        } 

   }
?>

                      </select>
             

         ,
              &nbsp;,
           
            ----

              &nbsp;,
           
     

   


 


    <textarea name="texte" cols="50" rows="15"><? echo $affichage ?></textarea>
     
 


</form>

Que faire ? Auriez-vous une piste svp ?

Merci d'avance...

3 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 janv. 2009 à 19:28
Salut,

Oui, c'est bien normal que tu n'affiches que la dernière ligne puisque $affichage est réécrit à chaque boucle while.
Il te faut utiliser Javascript.

Quand c'est simple c'est mieux !! :o)
Voici une idée :

$sql = "SELECT type.id_type, type.nom_type, articles.texte2
FROM type, articles
WHERE type.id-type = Xid_type AND id_type=15
or type.id_type=11 or type.id_type=16 or type.id_type=18";

1 fonction JS :

function afficherTexte2(truc) {

   document.getElementById("texte").innerText = truc;

}

<form>
<select>
<option>choississez</option>

$q = mysql_query($sql);
while ($res = mysql_fetch_array($q, MYSQL_ASSOC) {
    echo '<option value='.$res['id_type'].' onclick="afficherTexte2('.$res['texte2'].');">'.$res['nom_type'].'</option>';
}
</select>
</form>

Je te laisse mettre en forme le code.

Kohntark -
0
rinpe Messages postés 2 Date d'inscription dimanche 17 juin 2007 Statut Membre Dernière intervention 20 janvier 2009
20 janv. 2009 à 21:20
merci pour ta réponse rapide,


Je vais tenter ta solution..
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
21 janv. 2009 à 08:08
Excuse moi, j'ai un peu écrit à l'arrache hier.

Fais plutôt un truc comme ça :

$sql = "SELECT type.id_type, type.nom_type, articles.texte2
FROM type, articles
WHERE type.id-type = Xid_type AND id_type=15
or type.id_type=11 or type.id_type=16 or type.id_type=18";

1 fonction JS :
function afficherTexte2(truc) {
   document.getElementById("texte").innerHTML = truc;
}

<form>
<select onchange="afficherTexte2(this.options[this.selectedIndex].value);">
<option value="">choississez</option>
if (false $q mysql_query($sql)) die("traitement de l'erreur");
while ($res = mysql_fetch_array($q, MYSQL_ASSOC) {
   
echo '<option value="'.$res['id_type'].'">'.$res['nom_type'].'</option>';
}
</select>
</form>

C'est encore loin d'être top, mais ça fonctionnera mieux

Kohntark -
0
Rejoignez-nous