Statut : Non résoluPHP probleme sur script pour mise en page
Posté par
louiji, le samedi 2 février 2008 à 09:50:52 Bonjour,
je comprend pas pourquoi ca boucle a l'infini (et plante donc) a cette endroit:
while(strlen($longchaine) >= $nbrmaxcharparligne)
{
$chaineexam = substr($longchaine, 0, $nbrmaxcharparligne);
Merci de votre reponse
ca fait 3 jours que je capte pas
code complet:
function formatforprint($nbrmaxcharparligne, $nbrmaxligneparpage, $chaine){
/*
cette fonction permet de retourner un tableau dont chaque element represente des pages et chaque element pages contient (un tableau) des elements lignes.
$nbrmaxcharparligne : nombre de caractere maximum par ligne
$nbrmaxligneparpage : nombre de ligne maximum par page
$chaine : chaine de caractere a etudier
*/
// 1 /on divise le texte par rapport a ses retour a la ligne dans un tableau
$tableaudeligne=split(chr(13),$chaine);
$nbrligne=0;
//2 / on va regarder pour chaque ligne si elle fait plus que le nombre maximum de caractere max, si oui on la divise en element suivant le nombre de caractere max par ligne (en plus j'ai ajoute le fait de ne pas diviser les mot si cela font moins du nombre de caractere max par ligne) sinon on rajoute juste une ligne tel qu'elle
foreach($tableaudeligne as $nrdeligne => $lignedetexte){
$longchaine=$lignedetexte;
if($longchaine < $nbrmaxcharparligne)
{
$nrpage=floor($nbrligne/$nbrmaxligneparpage)+1; //calcul du numero de la page en cour
$tablpage[$nrpage][]=$lignedetexte;
$nbrligne++;
}else{
while(strlen($longchaine) >= $nbrmaxcharparligne)
{
$chaineexam = substr($longchaine, 0, $nbrmaxcharparligne); //on obtient une chaine avec le nombre de caractere maxi par ligne
if((strrpos($chaineexam, chr(32))==="FALSE")) { $espace = $nbrmaxcharparligne;} else { $espace = strrpos($chaineexam, chr(32));}
// on obtient la position du dernier espace de cette ligne
//1 ajouter dans le tableau representant page ligne la ligne et la page correspondante ( tableau[n° de page][n° de ligne])
$nrpage=floor($nbrligne/$nbrmaxligneparpage)+1; //calcul du numero de la page en cour (sachant qu'il y a 20 ligne par page)
$tablpage[$nrpage][]=substr($longchaine, 0, $espace);
$longchaine=substr($longchaine,($espace ));
$nbrligne++;
}
$nrpage=floor($nbrligne/$nbrmaxligneparpage)+1;
$tablpage[$nrpage][]=$longchaine;
$nbrligne++;
}
}
return $tablpage;
}