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

Messages postés
511
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
- - Dernière réponse : 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

Afficher la suite 
cs_stailer
Messages postés
511
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
1 -
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).
cs_Tortuegeniale
Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1 -
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
511
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
1 -
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_Clem
Messages postés
282
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
12 février 2007
-
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_Tortuegeniale
Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1 -
:| 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)
matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
wordwrap() existe dans PHP.... (coupe par défaut à 75 caractères)
eax
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007
-
wordwrap() ah oui, je savais pas
g meme pas cherché lol :)
cs_stailer
Messages postés
511
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
1 -
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.
cs_Tortuegeniale
Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1 -
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 :)
eax
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007
-
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
mastervanou
Messages postés
56
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
13 octobre 2008
-
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]));
cs_Tortuegeniale
Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1 -
le javascript c pas sur, on passe trés facilement au travers, par contre le coté serveur on peut pas passer au traver
eax
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007
-
à moins d'aller sur place lol