pb taille chaine ???

Eléphant du PHP | 223 Messages

14 juin 2005, 11:22

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...

Eléphant du PHP | 223 Messages

14 juin 2005, 11:51

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

Eléphant du PHP | 223 Messages

14 juin 2005, 12:12

personne connait la taille max d'une string en Javascript, j'arrive pas à trouver...

Mammouth du PHP | 19672 Messages

14 juin 2005, 12:44

Code : Tout sélectionner

varTexte.length
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 223 Messages

14 juin 2005, 14:29

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

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2005, 19:19


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

Eléphant du PHP | 219 Messages

14 juin 2005, 19:27

si je poste en Invité, je n'arriverai jamais à rejoindre Cyrano :D

daoud

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

14 juin 2005, 20:47

<?
$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.

Eléphant du PHP | 223 Messages

16 juin 2005, 12:01

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: