Page 1 sur 1

pb taille chaine ???

Posté : 14 juin 2005, 11:22
par pierrot
re-bonjour!!! c encore moi, desolé (en meme tps, ya pas foule sur ce forum aujourd'hui...)
J'ai un pb tres bizarre, et tres pénible :
voici mon script (certains le connaissent déjà :D )
<? 
$fichier="E:\\stage\\test\\www\\test\\newtab42.txt";
$handle=fopen($fichier, "r+");
$printablePHP=fread($handle,filesize($fichier));	
?>

<script type='text/javascript'>; 
var printableJS='<? echo $printablePHP; ?>';
document.writeln("le popup affichera : " + printableJS);

function impression(texte){
var pop=window.open("","",""); 
pop.document.open(); 
pop.document.writeln(texte); 
pop.document.writeln("<script type='text/javascript'>"); 
pop.document.writeln("window.print();");
pop.document.writeln("<\/script>"); 
pop.document.close();}

</script> 

<br /><INPUT TYPE="image" src="printer.ico" value="Print" onclick="impression(printableJS);">
Donc ce script est sensé récupérer le contenu d'un fichier texte, proposer un bouton pour ouvrir un popup contenant ce contenu et ouvrir la boite de dialogue d'impression...

Pour tester, je fais afficher dans ma page appelante le contenu du futur popup avec la ligne
document.writeln("le popup affichera : " + printableJS);
Maintenant, le PB : :shock:
si le contenu de mon fichier texte est assez court, pas de pb, ca me l'affiche bien, et ca m'ouvre bien un popup avec ce texte dedans.
Seulement moi, mon fichier.txt il fait 42000 car... et ben là il veut plus rien m'afficher et j'ai le ptit panneau "attention
erreur sur la page" en bas à gauche...

Pour info, ce fichier texte ne fait qu'une seule ligne, cela peut-il venir de là?

Merci d'avance pour toutes vos idées...

Posté : 14 juin 2005, 11:51
par pierrot
bon alors, j'ai fait mes ptits tests, pour que le texte s'affiche, il faut qu'il fasse au max 6144 caracteres (6*1024) .... Ca m'arrange vraiment pas moi ca... Personne connait une bidouille pour declarer une longue chaine (genre long_str ou qqchose comme ca...)
Merci

Posté : 14 juin 2005, 12:12
par pierrot
personne connait la taille max d'une string en Javascript, j'arrive pas à trouver...

Posté : 14 juin 2005, 12:44
par Cyrano

Code : Tout sélectionner

varTexte.length

Posté : 14 juin 2005, 14:29
par pierrot
non, mais je veux pas savoir la taille d'une chaine, je veux savoir en javascript, qd on declare une chaine, combien de caractere celle-ci peut comporter? parce que dans mon exemple, j'ai une variable qui recoit une chaine, mais apparement JS refuse de me l'afficher si celle-ci dépasse 6144 caracteres. voilà...mais bon, merci qd meme

Re: pb taille chaine ???

Posté : 14 juin 2005, 19:19
par Invité

Pour info, ce fichier texte ne fait qu'une seule ligne, cela peut-il venir de là?
Heu, j'ai fait des tests chez moi et ça marche. Ne voulais-tu pas dire "ne fait pas" ?
Peux-tu donner le texte qui fait échouer le script ?

a+
daoud

Posté : 14 juin 2005, 19:27
par daoud
si je poste en Invité, je n'arriverai jamais à rejoindre Cyrano :D

daoud

Posté : 14 juin 2005, 20:47
par naholyr
<?
$fichier="E:\\stage\\test\\www\\test\\newtab42.txt";
$handle=fopen($fichier, "r+");
$printablePHP=fread($handle,filesize($fichier));
?>

<script type='text/javascript'>;
var printableJS='<? echo $printablePHP; ?>';
document.writeln("le popup affichera : " + printableJS);

function impression(texte){
var pop=window.open("","","");
pop.document.open();
pop.document.writeln(texte);
pop.document.writeln("<script type='text/javascript'>");
pop.document.writeln("window.print();");
pop.document.writeln("<\/script>");
pop.document.close();}

</script>

<br /><INPUT TYPE="image" src="printer.ico" value="Print" onclick="impression(printableJS);">
1. As-tu vérifié qu'il n'y avait pas d'apostrophes dans ton fichier texte ? Parce que tu ne fais pas d'addslashes...
2. Tu ne fermes pas ton fichier, ce n'est pas grave, mais ça peut le devenir.

Je ferais ceci (addslashes, et découpe en morceaux par ligne)
<?
$fichier="E:\\stage\\test\\www\\test\\newtab42.txt";
$handle=fopen($fichier, "r+");
$printablePHP=fread($handle,filesize($fichier));
fclose($handle);
$len = strlen($printablePHP); // longueur de la chaine
$lenPerLine = 200; // nb de caractères par ligne
$nbCuts = ceil($len/$lenPerLine); // nombre de segments
?>

<script type='text/javascript'>;
var printableJS='';
<? for ($i=0; $i<$nbCuts; $i++): ?>
printableJS += '<?=addslashes(substr($printablePHP,$i*$lenPerLine,$lenPerLine))?>';
<? endfor ?>
document.writeln("le popup affichera : " + printableJS);

function impression(texte){
var pop=window.open("","","");
pop.document.open();
pop.document.writeln(texte);
pop.document.writeln("<script type='text/javascript'>");
pop.document.writeln("window.print();");
pop.document.writeln("<\/script>");
pop.document.close();}

</script>

<br /><INPUT TYPE="image" src="printer.ico" value="Print" onclick="impression(printableJS);">
?

Edit: il n'y a pas de longueur maximale d'une chaine en javascript, cela dépend de la RAM du client. J'ai déjà utilisé sans trop de problème des chaines de plusieurs centaines de kilo-octets. À mon avis tu as plutot un problème d'apostrophe... Tu devrais exécuter ta page avec firefox, qui te donnera beaucoup plus de détails dans la console javascript.

Posté : 16 juin 2005, 12:01
par pierrot
salut, désolé j'avais zappé mon post... Effectivement j'ai resolu mon pb avec addslashes...En meme tps, j'suis content de voir que j'ai fais de moi meme les conseils donnés par les "pros" que vous etes.... En tout cas merci à tous :pouce: