ÉVITER LA DÉFORMATION D'UN TABLEAU HTML EN DÉCOUPANT UNE CHAINE

cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 - 9 août 2003 à 17:42
eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 - 11 sept. 2003 à 15:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/13422-eviter-la-deformation-d-un-tableau-html-en-decoupant-une-chaine

eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 2
11 sept. 2003 à 15:40
à moins d'aller sur place lol
cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008
11 sept. 2003 à 14:27
le javascript c pas sur, on passe trés facilement au travers, par contre le coté serveur on peut pas passer au traver
mastervanou Messages postés 55 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 13 octobre 2008
11 sept. 2003 à 11:24
bah moi j'utilise une fonction javascript pour vérifier le formulaire

if (document.post.message.value.length !="")
{
mot=document.post.message.value.substring(" "," ");
espace = document.post.message.value.indexOf(" ");
mot2 = document.post.message.value.substring(espace+1," ");
if ((mot2.length > 17 ) || (mot.length > 17 )) {alert("Y'a un mot trop long dans ce commentaire");
return false;}
}

et dans la page qui recoit les données je met ca:

$HTTP_POST_VARS[message]= str_replace("
","
",($HTTP_POST_VARS[message]));
eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 2
10 août 2003 à 08:24
ah ok ben je te remercie
j'y avais pas pensé cette mise en page
mais y'a un truc que j'aurais aimé faire c spécifier une longueur max en pixels et non en nb de caractères c la que ça devient + intéressant mais je sais pas comment faire lol
cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008
10 août 2003 à 01:25
eax>
va voir ça quand je parle du screen lol http://screen.kame-house.org/image.jpg (en haut mon script, en bas le tien)

donc ton script il rend pas la mise en forme. par exemple :
"salut
eax
ça va ?"

il va écrire "salut eax ça va ?" (Regarde sur le screen la ou c écrit "Pour Renaud et Florent" : dans mon script y a retour a la ligne et pas dans le tien)
Manque juste un nl2br() : return nl2br($resultat);

Ensuite sur le screen c une news que j'avais de mon site et j'ai ajouté plein de fois "a" (plus de 200 fois je crois) et ton script le coupe pas.

Sinon tu attaques différement la chose toi, tu t'occupes de la taille de la ligne, moi je m'occupes de la tailles des mots, c 2 approches différentes mais ça marchera quand meme :)
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
10 août 2003 à 01:14
C'est clair. je ne me vois pas passer tous les messages d'un forum à la moulinette de cette énorme fonction.
Mais ceci dit le code est intéressant quand même.
eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 2
9 août 2003 à 23:42
wordwrap() ah oui, je savais pas
g meme pas cherché lol :)
matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004
9 août 2003 à 22:33
wordwrap() existe dans PHP.... (coupe par défaut à 75 caractères)
cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008
9 août 2003 à 19:50
:| c pas le nombre maxi de caractere qu'il limite avec sa source, c le nombre de caractere par ligne

Eax> j'ai fais une source je la poste la, parceque ta source comporte des erreurs (par exemple ça respect pas la mise ne forme)
cs_Clem Messages postés 282 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 12 février 2007
9 août 2003 à 19:01
en tout cas, je préfère utiliser les preg, qui sont beaucoup plus rapide que des boucles caractères par caractères :
function coupemot($m, $l) {
for ($i=0; $i<20; $i+=$l) $r.=substr($m, $i, $l)." ";
return $r;
}
function format_chaine($c,$l) {
return preg_replace("/([^ ]{" . $l . ",})/Ue", "coupemot('\1', $l)", $c);
}
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
9 août 2003 à 18:39
Je ne parlai pas de l'intérêt de la source sur les tableaux mais sur la protection d'un nombre maximal de caractères.

Dans ces cas la il suffit de faire sur la page de réception en php, avant l'insertion, que si le nombre de caractère de la variable "nom" est plus grand que 30 par exemple, ben annuler l'insertion.
Ceci évite les gros lourds comme le dis Eax et les empêche de pourrir la base.
Enfin bon... ca dépend si on veut des lourds ou pas sur son site :)
cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008
9 août 2003 à 17:46
ouah super simple, ensuite suffit de passer le champ par l'url ou par un programme spécial et ta super sécurité marche pas, de plus tu as pas compris la source, ça sert a pas déformer un tableau, et la max lenght ne sert a rien ici :|
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
9 août 2003 à 17:42
Pourquoi pas... Du moins le code source est intéressant.
Sinon au niveau utilité y a beaucoup plus simple :
Sur le formulaire ou l'utilisateur rentre son nom ou son email, il suffit de définir le nombre de caractères maximal à 20 par exemple dans le champ de saisi (propriété maxlength en html).
Rejoignez-nous