problème d'affichage dans une zone de texte

Sabrina
Invité n'ayant pas de compte PHPfrance

24 oct. 2006, 15:05

Bonjour,

Voila, j'ai un souci lorsque je fais afficher mes enregistrements, de temps en temps dans les ou la zone de texte j'ai qu'une partie de mon texte qui est afficher. C'est très aléatoire. Quand cela ne m'affiche pas tout je suis obliger de supprimr ma zone puis la récréer.
Es-ce que vous seriez d'ou cela peut venir ?
En général c'est quand il y a un espace dans le mot que cela m'affiche pas tout. Mais je reprécise, cela peut marcher pendant un mois et me le faire d'un seul coup sans toucher au code. Mais cela peut me le faire 3 fois dans la semaine aussi.

Merci d'avance. J'espère que vous allez pouvoir m'éclairer.

Eléphant du PHP | 193 Messages

24 oct. 2006, 18:11

Un petit bout de code, un exemple, quelque chose d'un peu plus concret? :)

Sabrina
Invité n'ayant pas de compte PHPfrance

25 oct. 2006, 09:08

Ben par exemple une de mes zone de texte :
<input name="adrue" type="text" id="adrue" size="40" maxlength="75" value="<?php echo $row[1] ?>">
je précise que dans ma base ils sont bien enregistrer.

merci

Mammouth du PHP | 592 Messages

25 oct. 2006, 09:51

salut

et si on fait comme ça???
<input name="adrue" type="text" id="adrue" size="40" maxlength="75" <?php 
if ($row[1])
{
echo "value=\"$row[1]\"";
}
?>

ViPHP
ViPHP | 3607 Messages

25 oct. 2006, 09:59

je dirais plutôt if(isset($row[1])) ...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 oct. 2006, 10:28

Peux tu donner un exemple concret de ce que contient $row[1] quand il est tronqué dans ton champ ? (voir en base ou dans le code source)
Si jamais il y a une guillemet, l'attribut "value" généré en html sera tronqué si elle n'est pas protégée (htmlspecialchars()), de même un retour charriot pourrait poser problème...

La valeur en base est-elle correcte également ? ce n'est pas un problème de champ trop petit dans lequel le texte aurait été tronqué ?

Le test sur l'existance du champ me semble sans intérêt, la valeur est récupéré en base, le test sera toujours vrai. De toute façon la variable est bien renseignée à priori, c'est son contenu qui est tronqué à l'enregistrement ou à l'affichage..
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Sabrina
Invité n'ayant pas de compte PHPfrance

25 oct. 2006, 11:30

Bon déjà merci pour toutes ces réponses.
Je vais tester se que vous m'avez dit mais je ne peux pas vous dire si cela regle le probleme ou pas. Etant donné que cela aléatoire (comme je vous l'ai dit a chaque fois que j'ai se probleme, j'ai juste a supprimer ma zone de texte et la recrer et ensuite cela marche!!!!jusqu'a......la prochaine fois!!!!!.
Donc ce n'est pas un histoire de champ trop petit.
L'enregistrement est tronqué a l'affichage mais pas a l'enregistrement (le probleme est que lorsque le l'utilisateur veux modifier les enregistrements, si il n'a pas fait attention que le champ etait tronqué et qu'il modifie un autre champ, celui ci sera aussi modifé. Et je peux avoir de terrible perte de données.
Quel type de donnée j'ai, et bien cela est très varié, mais j'ai deja eu le probleme sur des numéro de tel, de fax, adresse. Cela est tronqué que si il y a un espace dans les enregistrements. Sinon, cela fonctionne.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 oct. 2006, 11:36

Quand cela se reproduit regarde directement le code source et vérifie ce qui a été généré :)

tous tes attributs value encadrent ils bien tes données avec des guillemets ? value="...." Si ce n'est pas le cas, la valeur affichée dans le champ s'arrêtera effectivement au premier espace :

Code : Tout sélectionner

value=0123456789 => affichera "0123465789" value=01 23 45 67 89 => affichera juste "01" value="01 23 45 67 89" => affichera bien "01 23 45 67 89"
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Sabrina
Invité n'ayant pas de compte PHPfrance

25 oct. 2006, 13:30

Bon je ne sais pas si cela vien de ça, mais je vais corriger les endroits ou j'ai pas mi les ". Je vous tiendrai au courant si ça me le refait. Merci pour tout c'est conseil et si ça le refait je vous fait signe.