Champ textarea mysql 5 ne s' affiche pas

Résolu
rafou77 Messages postés 65 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 7 février 2007 - 11 nov. 2006 à 14:16
rafou77 Messages postés 65 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 7 février 2007 - 15 nov. 2006 à 13:28
Bonjour,

Voilà j'ai un soucis avec un champ sous Mysql 5.

Code:



<?php


{


$limit_str = "LIMIT ". $cur_page * 9 .",9";  $rec mysql_query("select clients2.id,clients2.nom,clients2.prenom,clients2.email,clients2.password,clients2.etat3,clients5.id,clients5.id_clt,clients5.but_pret,clients5.etat2,clients5.message,clients5.date from clients5,clients2 where clients2.id clients5.id_clt GROUP BY clients5.id_clt ORDER BY clients5.date DESC $limit_str");


    if (mysql_num_rows($rec)==0)
   {
   echo("<tr bgcolor="#ffffff"><td colspan="5">Fin de la recherche !</td></tr>");


   }
   else
 
      while($ligne = mysql_fetch_array($rec))
   {
    $id = $ligne ["id"];
   $id_clt = $ligne["id_clt"];
   $email = $ligne["email"];
   $nom = $ligne["nom"];
   $prenom = $ligne["prenom"];
   $password_clt = $ligne["password"];
 $etat3 = $ligne["etat3"];
 $etat2 = $ligne["etat2"];
 $but_pret = $ligne["but_pret"];
 $message = $ligne["message"];
 
   {
   if ($etat2 == "4")
   {$et4 = "checked";}
      else
       {$et4 = "";}
   {
   if ($etat2 == "1")
   {$et1 = "checked";}
   else
    {$et1 = "";}
  {
   if ($etat2 == "2")
   {$et2 = "checked";}
   else
    {$et2 = "";}
   {
    if ($etat2 == "3")
   {$et3 = "checked";}
   else
    {$et3 = "";}
   
   
    {
     if ($etat2 == "4")
    {$bgcolorref = "#FF9900";}
 
     {
     if ($etat2 == "1")
    {$bgcolorref = "#009933";}
  
       {
     if ($etat2 == "2")
    {$bgcolorref = "#FF0000";}
   
         {
     if ($etat2 == "3")
    {$bgcolorref = "#990000";}




echo("<form name="Formu" method="post" action="clients1.php?id_credit=$id&id_clt=$id_clt"><tr>
   <td bgcolor="$bgcolorref" align="center">$id_clt</td>
      <td bgcolor="$bgcolorref" align="center">$password_clt</td>
      <td bgcolor="$bgcolorref" align="center">$nom</td>
      <td bgcolor="$bgcolorref" align="center">$prenom </td>
      <td bgcolor="$bgcolorref" align="center"> En cours Accepté Refusé Annulé</td>
      <td bgcolor="$bgcolorref" bgcolor="#ffffff" align="center"><textarea name="message" cols="39" rows="3">$message</textarea></td>
 </tr></form>");
   }
   }
}
}
}
}
}
}
}
}



?>





Sous mysql 4 cela marche parfaitement mais par sur mysql 5, j'ai remarqué que le probleme venait du champ clients5.message car quand j'enleve celui ci le resultat s'affiche mais evidement pas le texte qui se trouve dans le textarea.

Quelqu'un aurait il une solution?

Un tout grand merci

4 réponses

rafou77 Messages postés 65 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 7 février 2007
12 nov. 2006 à 14:20
Salut jeca merci pour ta réponse, j'ai déjà essayé ce que tu m'as conseillé mais toujours le meme probleme.

Entre temps j'ai trouvé voici là solution:

<?php{

$limit_str = "LIMIT ". $cur_page * 9 .",9";  $rec mysql_query("select * from clients2,clients5 where clients2.id clients5.id_clt GROUP BY clients5.id_clt ORDER BY clients5.date DESC $limit_str");

    if (mysql_num_rows($rec)==0)
   {
   echo("<tr bgcolor="#ffffff"><td colspan="5">Fin de la recherche !</td></tr>");

   }
   else
 
      while($ligne = mysql_fetch_array($rec))
   {
    $id = $ligne ["id"];
   $id_clt = $ligne["id_clt"];
   $email = $ligne["email"];
   $nom = $ligne["nom"];
   $prenom = $ligne["prenom"];
   $password_clt = $ligne["password"];
 $etat3 = $ligne["etat3"];
 $etat2 = $ligne["etat2"];
 $but_pret = $ligne["but_pret"];
 $message = $ligne["message"];
 
   {
   if ($etat2 == "4")
   {$et4 = "checked";}
      else
       {$et4 = "";}
   {
   if ($etat2 == "1")
   {$et1 = "checked";}
   else
    {$et1 = "";}
  {
   if ($etat2 == "2")
   {$et2 = "checked";}
   else
    {$et2 = "";}
   {
    if ($etat2 == "3")
   {$et3 = "checked";}
   else
    {$et3 = "";}
   
   
    {
     if ($etat2 == "4")
    {$bgcolorref = "#FF9900";}
 
     {
     if ($etat2 == "1")
    {$bgcolorref = "#009933";}
  
       {
     if ($etat2 == "2")
    {$bgcolorref = "#FF0000";}
   
         {
     if ($etat2 == "3")
    {$bgcolorref = "#990000";}

echo("<form name="Formu" method="post" action="clients1.php?id_credit=$id&id_clt=$id_clt"><tr>
   <td bgcolor="$bgcolorref" align="center">$id_clt</td>
      <td bgcolor="$bgcolorref" align="center">$password_clt</td>
      <td bgcolor="$bgcolorref" align="center">$nom</td>
      <td bgcolor="$bgcolorref" align="center">$prenom </td>
      <td bgcolor="$bgcolorref" align="center"> En cours Accepté Refusé Annulé</td>
      <td bgcolor="$bgcolorref" bgcolor="#ffffff" align="center"><textarea name="message" cols="39" rows="3">$message</textarea></td>
 </tr></form>");
   }
   }
}
}
}
}
}
}
}
}

?>

Au lieu de faire appel à des champ spécifique, je les appel tous dans ma requete par une étoile(en rouge), ne me demandé pas pourquoi mais je n'ai trouvé que cette soluce pour que ça passe sous mysql 5, la premiere soluce est bonne aussi mais pas sous mysql 5.

Bizzard

Merci
3
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
12 nov. 2006 à 11:38
Bonjour,

As-tu essayé ça :

$limit_str = 'LIMIT ' . $cur_page * 9 . ', 9';
$sql = 'select clients2.id, clients2.nom, clients2.prenom, clients2.email, clients2.password,
clients2.etat3, clients5.id,clients5.id_clt, clients5.but_pret, clients5.etat2,
clients5.message, clients5.date
from clients5, clients2
where clients2.id = clients5.id_clt
GROUP BY clients5.id_clt
ORDER BY clients5.date DESC ' .
$limit_str;
echo $sql;

$rec = mysql_query($sql) or die(mysql_error());

Tu prends la requête générée et tu la colles dans phpmyadmin ou autre ; tu verras bien s'il te sort quelquechose.
Et ceci : 'die(mysql_error())' t'afficheras des infos s'il y a une erreur.

Ensuite, lorsque la page est chargée dans le navigateur, demande l'affichage de la source.

Outre cela :
- encadrer les chaînes de caractères par des double-quotes est nuisible, car cela force le parseur à analyser la totalité de la chaîne afin de trouver les éventuelles variables. Les simples quotes plus une concaténation sont préférables car plus rapides à l'éxécution ;
- ceci 'onClick="javascript:..."' ne sert à rien car onclick est un évènement javascript, donc 'onClick="..."' suffit ;
- l'imbrication des accolades de ton code est pour le moins bizarroïde.
0
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
12 nov. 2006 à 20:20
Bravo pour la solution.

'select * ...'

Plus nul, tu meures.
0
rafou77 Messages postés 65 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 7 février 2007
15 nov. 2006 à 13:28
Ce n'est pas ça.. et j'espere que tu ne parles pas seulement de moi car tu es dans le meme cas avec ta solution, soit...

Ma premiere soluce était bonne aussi, il n'y avait pas de problemes dans mon script, le seule bémole c'est que mon serveur est passé en mysql 5x et qu'il n'accepte plus le genre
de requete et appel de champs avec tables liés sous la forme de  table.champ pour les formats texte, à mon avis c'est un bug, par contre en enregistrement au format UTF 8  résoud le probleme aussi. en réalité le seul champ qui posait probleme était  "message" venant d'un textarea.
0
Rejoignez-nous