PHP, boucles while et formulaires

Signaler
Messages postés
2
Date d'inscription
dimanche 17 juin 2007
Statut
Membre
Dernière intervention
20 janvier 2009
-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
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

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
2
Date d'inscription
dimanche 17 juin 2007
Statut
Membre
Dernière intervention
20 janvier 2009

merci pour ta réponse rapide,


Je vais tenter ta solution..
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -