variable dans href trop lourde

eteocle
Invité n'ayant pas de compte PHPfrance

28 sept. 2006, 15:24

Bonjour,

je rencontre un petit problème depuis quelques temps que je ne parvien pas à résoudre. Peut etre avez-vous une solution

J'ai rédigé un script php dans lequel j'ouvre une interface "richtext" (permet de styliser du texte) depuis un bouton. L'ouverture ne peut se faire (compte tenu de la disposition de mon script) que d'après un lien href de la manière suivante

echo"<table>....<td><a href onclick=\"window.open('mon richtext.php'?texte=$texte)\"><img bouton></a></td><td id='texte'>"; if ($texte){echo$texte;}echo"</td>";

Le script est concu pour que lorsque je veux modifier le texte initial affiché dans ma cellule <td>, il puisse s'afficher dans le richtext, d'où la formule mon richtext.php?texte=$texte (je récupère le $texte dans le richtext)

Tout se passe normalement si mon $texte contient une petite quantité de données mais sinon, impossible d'ouvrir le richtext (le onclick est inopérant)..c'est bien sur normal mais voilà..., il y a bien la methode post dans un formulaire qui permet de gérer plus de données mais je ne peux pas sur mon script utiliser le bouton sous forme de formulaire (pour des raisons de suite de script)..alors savez-vous s'il ya une autre facon de procéder..? je ne sais pas..peut ettre un script javascript qui permettrait de stocker dans le href plus de données ?, où bien un aménagement de mon script actuel.?..peut-on transférer par la méthode post depuis le onclick..? je n'ai pas d'idées... merci par avance de votre aide

Mammouth du PHP | 592 Messages

28 sept. 2006, 15:47

salut
ça serai pas plutot ça?? :lol:
echo"<table>....<td><a href onclick=\"window.open('mon richtext.php?texte=$texte')\"><img bouton></a></td><td id='texte'>"; 
if ($texte)
{
echo $texte;
}
echo"</td>";

eteocle
Invité n'ayant pas de compte PHPfrance

28 sept. 2006, 16:00

oui, ben c'est ce que j'ai écrit...

Mammouth du PHP | 592 Messages

28 sept. 2006, 16:11

non pas tout à fait :

si tu regarde bien tes ' était mal placés

eteocle
Invité n'ayant pas de compte PHPfrance

28 sept. 2006, 16:20

ok ! c'est une erreur dans le message..

Mon script est correctement écrit (comme tu l'as rédigé)

mais concernant ma question ??

Mammouth du PHP | 592 Messages

28 sept. 2006, 16:28

il y a un truc que je comprend pas :

c'est la :
<a href onclick=\"window.open('mon richtext.php'?texte=$texte)\"><img bouton></a>

tu clique bien sur une image non???
c'est un lien non???
alors pkoi on a pas un truc du genre :

<a href="mon richtext.php?texte=$texte)"><img src="bouton.jpg"></a>

après peu etre que c'es la fin de journnée et que je suis trop naze pour
comprendre mais peut tu m'éclairer :wink:

Mammouth du PHP | 592 Messages

28 sept. 2006, 16:29

oui il il a une faute sur mon dernier post : :oops:

il faut enlever la ")" du lien :wink:

ViPHP
ViPHP | 2144 Messages

28 sept. 2006, 17:03

Salut,

Je n'ai plus les spécification http en tête, mais il y a en effet une limite de taille à ce qu'on peut envoyé en methode GET (elle n'est d'ailleurs pas faite pour envoyer des données à la base)

En résumé, tu veux pouvoir utiliser la method post, tout en ayant un lien pour valider le formulaire.
Ca devrait pouvoir se faire en utilisant un javascript qui submitera le formulaire lors qu'on clique sur le lien (événement OnClick du <a href>)
Le lien remplacant le bouton submit en quelque sort.

eteocle
Invité n'ayant pas de compte PHPfrance

29 sept. 2006, 10:49

en fait le problème est que j'utilise déjà un formulaire pour envoyer des données à une base, notamment : un titre (champ titre), un texte (issu de mon richtext)

il faudrait donc que j'utilise un deuxième formulaire imbriqué dans le premier (si je peux dire)...ce qui ne m'apparait pas très facile...ne rique t-il pas d'y avoir confusion entre les 2 formulaires ? ou bien faut-il régiger le script d'une certaine façon ?

J'étais plutot parti sur une formule php ou javascript qui me permettrait de compresser peut etre mes données envoyées par href. La fonction rawurlencode est déjà intéressante mais ne suffit pas. Si le texte est très long ou comporte des objets comme des images, il est systématiquement tronqué à la fin.

Alors quelle solution ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 sept. 2006, 11:47

Tu ne peux effectivement pas imbriquer un formulaire à l'intérieur d'un autre... en revanche rien ne t'empêche d'adresser un même formulaire à plusieurs destinataires en changeant simplement l'action. Ce n'est pas forcément ce qu'il y a de mieux (vu que tu enverrais quantité d'information inutile), mais ça peut se faire...

En php tu peux aussi placer ton $texte en session pour éviter d'avoir à le transmettre et l'interroger malgré tout

En javascript, si tu ouvre ton lien dans une popup tu peux interroger depuis la fenêtre ouverte les données contenues par la fenêtre ouvrantes...

eteocle
Invité n'ayant pas de compte PHPfrance

29 sept. 2006, 22:51

ok !

j'ouvre mon lien dans une popup..mais je n'y connais rien en javascript...quel script écrire ? j'ai bien recherché dans le forum mais je n'ai rien trouvé

eteocle
Invité n'ayant pas de compte PHPfrance

30 sept. 2006, 15:35

bon, j'essaye avec les sessions..mais ca ne donne rien

voilà mon script :

sur la page référente :
<?php
if ($PHPSESSID){session_start($PHPSESSID);}else{session_start();}
$rte=isset($_SESSION['rte']);

$sid=session_id();
$sname=session_name();

$rte=$HTTP_REFERER;
session_register("rte");

puis mon lien : <a href = "mapageappelée.php?<?=SID?>"><img src...></a>

ensuite sur ma page appelée :

session_start(); ..


voilà ! et bien rien ne se passe..impossible d'afficher ma variable $rte sur la page appelée...
Où est mon erreur ? pouvez-vous m'aider ..

eteocle
Invité n'ayant pas de compte PHPfrance

30 sept. 2006, 22:24

ok ! j'ai résolu mon problème..en fait, c'est tout bete..j'avais déclaré ma variable de session avant d'afficher $rte

....echo $rte; $_SESSION['var'] = $rte;
c'est la bonne écriture..
et là tout fonctionne

je peux passer une grande quantité de texte par href ...

les sessions, c'est vraiment SUPER !! :D