Forum de discussion
Forum « Programmation Javascript » (archives)
Re: A l'aide, comment passer un long texte en paramètre???
Envoyé: 4 juin 2004, 9h48 par wolverine le glouton
/* Pour chaque édition du tournoi, i.e. chaque saison, */
/* construction d'un calque contenant la fiche saison */
for ($i = 0; $i <= count($monTournoi->tabSaison) - 1; $i++) {
$monTournoi->getData($monTournoi->tabSaison[$i]);
$monTournoi->getEtape($monTournoi->tabSaison[$i],1);
$editionContent = '';
if ($monTournoi->description != '') {
$editionContent .= '<strong>descriptif</strong><br>';
$editionContent .= $monTournoi->description.'<br><br>';
}
if ($monTournoi->reglement != '') {
$editionContent .= '<strong>réglement</strong><br>';
$editionContent .= $monTournoi->reglement.'<br><br>';
}
$editionContent .= '<strong>étapes</strong><br>';
$editionContent = addslashes($editionContent);
/* Pour chaque édition on inclut chacune des étape */
for ($j = 0; $j <= count($monTournoi->tabEtape) - 1; $j++) {
$monTournoi->tabEtape[$j]->getData();
$etapeContent = '';
if ($monTournoi->tabEtape[$j]->description != '') {
$etapeContent .= '<strong>descriptif</strong><br>';
$etapeContent .= $monTournoi->tabEtape[$j]->description.'<br><br>';
}
if ($monTournoi->tabEtape[$j]->reglement != '') {
$etapeContent .= '<strong>réglement</strong><br>';
$etapeContent .= $monTournoi->tabEtape[$j]->reglement.'<br><br>';
}
if ($monTournoi->tabEtape[$j]->bilan != '') {
$etapeContent .= '<strong>bilan</strong><br>';
$etapeContent .= $monTournoi->tabEtape[$j]->bilan.'<br><br>';
}
$etapeContent = addslashes($etapeContent);
//$editionContent .= '<a href=javascript:showContent(\'etape'.$monTournoi->id.$monTournoi->tabEtape[$j]->id.'\',\''.$etapeContent.'\')>'.$monTournoi->tabEtape[$j]->nom.' le '.$monTournoi->tabEtape[$j]->dateEtape.'</a><br>';
//$editionContent .= '<div id=etape'.$monTournoi->id.$monTournoi->tabEtape[$j]->id.' class=etape></div>';
}
$fiche->texte .= '<a href="javascript:showContent(\'edition'.$monTournoi->id.$monTournoi->tabSaison[$i].'\',\''.$editionContent.'\')">'.$monTournoi->tabSaison[$i].'</a><br>';
$fiche->texte .= '<div id="edition'.$monTournoi->id.$monTournoi->tabSaison[$i].'" class="tournoi"></div>';
}
Comme tlm peut le remarquer je vais en fait faire un echo d'une variable PHP contenant un appel d'une fonction javascript dans laquelle je veux passer une longue chaine de caractère. J'entends par "longue chaine" un texte provenant d'un champ d'une base mysql de type "text" soit 2^16 caractères à peu près. Le problème est en fait le suivant: chaque navigateur recevant le code HTML va de lui même générer des retour à la ligne (\n) lorsqu'un chaine de caractère est trop longue (diffère suivant les navigateurs). Or JavaScript, contrairement à PHP, ne va pas de lui même à la ligne chercher la suite de la chaine jusqu'au ' ou " de fin. S'il ne rencontre pas le ' ou " de fermeture avant la fin de la ligne il génère une erreur du style "chaine non terminée". Ceci se part lorsque créer la chaine et les sauts de ligne manuelement en fermant chaque fin de ligne comme suit:
"ligne 1" +
"ligne 2" +
ligne 2" +
ou de même avec une apostrophe. On fait une concaténation de chaine pour qu'il comprenne. Seulement voilà, je crée tout ça dynamiquement, je ne sais pas où il fou les passages à la ligne...etc...
Notons enfin que tout ça se trouve en plus dans 2 boucles imbriquées PHP et que la chaine peut en réalité dépasser les 2^16 voir 2^17 caractères ;-)
Je sais c'est de la folie. Je vais d'ailleur surement faire autrement finalement. Mais toute fois, j'aimerai trouver une solution, juste pour le plaisir.
Merci aux amateurs de casse-tête.
Wolverine
Réponses
|