Page 1 sur 2
Donnée tronquée
Posté : 05 févr. 2011, 21:13
par Herve_be
Bonjour,
J'ai un fichier Mysql qui contient un champ texte nommé $Comment, qui contient par exemple "xxx yyy".
Si je fais
$Comment=$row['Comment'];
$Comment contient seulement "xxx" : ça s'arrête dès qu'il rencontre un blanc en fait, bizarre non ?
Re: Donnée tronquée
Posté : 05 févr. 2011, 21:38
par xTG
Peux-tu nous montrer ton code de récupération ?
Re: Donnée tronquée
Posté : 05 févr. 2011, 21:39
par Herve_be
Oui bien sur, voici
$Comment=$row['Comment'];
echo "<abbr title=".$Comment."><u>".$Sep.$row['Name']."</u></abbr>";
Re: Donnée tronquée
Posté : 05 févr. 2011, 21:40
par xTG
Je parlais surtout de la requête et de la construction de la variable $row.

Re: Donnée tronquée
Posté : 05 févr. 2011, 21:52
par Herve_be
J'ai été voir le fichier avec phpadmin; je vois bien la valeur complète "xxx yyy" dans le champ.
Ceci dit, voici d'où ça vient
<form method="post" action="SendMail.php">
<p align=center><input type='text' size='100' name='Comment'>
dans SendMail.php je récupère la variable et l'écris dans le fichier
$Comment = $_POST["Comment"];
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
Plus tard je lis le fichier
$result = mysql_query("SELECT * FROM VTTlog WHERE Date>$DateOYA ORDER BY Date DESC,choice DESC"); /* WHERE Date>=$Date */
while($row = mysql_fetch_array($result))
$Comment=$row['Comment'];
echo "<abbr title=".$Comment."><u>".$Sep.$row['Name']."</u></abbr>";
et le résultat de l'echo il n'y a plus que "xxx"
Re: Donnée tronquée
Posté : 05 févr. 2011, 22:51
par xTG
Si tu ne mets pas d'acolades une seule instruction est prise dans la boucle while.
Donc il faut faire :
while($row = mysql_fetch_array($result))
{
$Comment=$row['Comment'];
echo "<abbr title=".$Comment."><u>".$Sep.$row['Name']."</u></abbr>";
}
Le xxx doit donc être le dernier enregistrement retourné par la requête, et lorsque tu vérifiais tu ne regardais pas tous les n-uplets dans phpmyadmin.

Re: Donnée tronquée
Posté : 05 févr. 2011, 23:08
par Herve_be
Si, il y a bien les accolades, j'ai juste repris ce qui est essentiel pour la question !
Il y a pour l'instant un seul record dans la DB et le champ Comment contient "Parti skier !"
Voici le code complet, mais ça complique inutilement
while($row = mysql_fetch_array($result))
{
if ($ListDate <> $row['Date'])
{
if($row['Date']<date("ymd")) Echo "</TR></Tbody></Table><TABLE BORDER='0' CELLSPACING=1 CELLPADDING=2 WIDTH='600' ALIGN='center' BGCOLOR=Silver><Tbody>";
echo "<TR><TD WIDTH='15%'>".substr($row['Date'],-2)."/".substr($row['Date'],2,2)."/20".substr($row['Date'],0,2)."</TD>" ;
$ListDate = $row['Date'];
$ListChoice=" ";
$lead="<TD WIDTH='15%'>";
}
if ($ListChoice <> $row['choice'])
{
$ListChoice = $row['choice'];
$Sep = "";
switch ($ListChoice)
{
case "V":
echo $lead."VTT</TD><TD WIDTH='70%'>";
break;
case "R":
echo $lead."Route</TD><TD WIDTH='70%'>";
break;
case "N":
echo $lead."Ne roule pas</TD><TD WIDTH='70%'>";
break;
case "A":
echo $lead."Absent</TD><TD WIDTH='70%'>";
break;
default:
echo $lead."? ".$ListChoice;
}
$lead="</TD></TR><TR><TD WIDTH='15%'> </TD><TD WIDTH='15%'>";
}
if($row['Comment']=="")
echo $Sep.$row['Name'] ;
else
{
$Comment=$row['Comment'];
echo "<abbr title=".$Comment."><u>".$Sep.$row['Name']."</u></abbr>";
}
$Sep = ", ";
}
Et cet echo donne seulement "Parti".
Re: Donnée tronquée
Posté : 05 févr. 2011, 23:57
par xTG
Que donnes un var_dump($row) ?
Re: Donnée tronquée
Posté : 06 févr. 2011, 10:54
par Herve_be
J'ai trouvé, au lieu de
echo "<abbr title=".$Comment."><u>".$Sep.$row['Name']."</u></abbr>";
j'ai écrit
echo "<abbr title='".$Comment."'><u>".$Sep.$row['Name']."</u></abbr>";
et ça fonctionne !
Il manquait deux '; c'est vrai qu'on ne voit pas bien un ' suivi d'un "
echo "<abbr title='".$Comment."'><u>".$Sep.$row['Name']."</u></abbr>";
Mais maintenant j'ai un autre problème : supposons que $Comment contienne "J'ai faim" (sans les " évidemment)
le code html généré donne
<abbr title='J'ai faim'><u>, Nom</u></abbr>"
et évidemment ça fait des noeuds car il y a un ' en trop; une idée ?
Re: Donnée tronquée
Posté : 06 févr. 2011, 11:42
par xTG
Le html recommande des " au lieu des ' justement pour ce genre de cas.
echo '<abbr title="'.$Comment.'"><u>'.$Sep.$row['Name'].'</u></abbr>';
Re: Donnée tronquée - Résolu
Posté : 06 févr. 2011, 12:26
par Herve_be
Effectivement, ça fonctionne, merci.
Je ne sais jamais quand je dois mettre des ' ou des "
Re: Donnée tronquée
Posté : 18 févr. 2011, 10:46
par Herve_be
Maintenant j'ai le même problème ici
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
S'il y a un ' dans $Comment ça fait des noeuds !
Re: Donnée tronquée
Posté : 18 févr. 2011, 11:36
par stealth35
Maintenant j'ai le même problème ici
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
S'il y a un ' dans $Comment ça fait des noeuds !
il faut utiliser
mysql_real_escape_string sur tes valeurs
Re: Donnée tronquée
Posté : 18 févr. 2011, 11:56
par Herve_be
Merci pour la réponse.
Comme ça ?
$Comment = mysql_real_escape_string($Comment);
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
Ca ne posera pas de problème pour afficher $Comment quand je vais le récupérer de la DB ?
Ou dois-je utiliser une autre fonction pour décoder ?
Re: Donnée tronquée
Posté : 18 févr. 2011, 11:58
par stealth35
tu dois le faire pour toutes tes valeurs,
tes données sont insérés normalement.