Champ textarea mysql 5 ne s' affiche pas [Résolu]

Signaler
Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007
-
Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007
-
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

Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007

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
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
14
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.
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
14
Bravo pour la solution.

'select * ...'

Plus nul, tu meures.
Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007

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.