Array php (Smarty) vers javascript

loc56
Invité n'ayant pas de compte PHPfrance

16 janv. 2013, 18:37

Hello à tous,
je bloque sur la communication entre un template smarty (.tpl) et une fonction
du script xajax_server.php.

Je souhaite échanger un tableau de dates initialisé dans la fonction getCalendar() du script xajax_server.php:
	$calendrier[0]['line'] = 1;
	$calendrier[0]['training'] = '26/06/2012';
	$calendrier[1]['line'] = 2;
	$calendrier[1]['training'] = '31/07/2012';
j'initialise une variable smarty $ical comme ceci:
$smarty->assign('calendrier', $calendrier);
Dans le template form.tpl je récupère la liste dans une boucle pour modifier les valeurs:
{foreach from=$calendrier item=icalTmp}
    <input name={$icalTmp.line} id={$icalTmp.line} type="text" size="8" value="{$icalTmp.training}"  />&nbsp;
{/foreach}
Je ressort du template avec le bouton Envoyer comme ceci, sans savoir comment passer le tableau modifié comme paramètre:
<input type="button" value="Envoyer" onClick="xajax_submitIcal($('id').value, {$calendrier} );" />
Par quel moyen je peux récupérer le tableau modifié et retourné comme paramètre dans la fonction submitIcal du script xajax_server.php ?

En espérant que quelqu'un pourra m'aider,
Merci d'avance pour votre temps précieux :wink:

ViPHP
ViPHP | 1996 Messages

17 janv. 2013, 00:20

Qu'à tu dans xajax_submitIcal() ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

loc56
Invité n'ayant pas de compte PHPfrance

17 janv. 2013, 02:20

Dans la fonction submitIcal() je voudrais balayer le tableau de date $calendrier pour les
insérer dans une table mysql.
function submitiCal($id, $Calendar ) {    

        for( $i=0; $i<sizeof($Calendar);$i++) {               
               $str .= $Calendar[$i]['training'].', ';
        }
   
Le problème, c'est que je ne retrouve pas la structure du tableau et encore moins les données.
Pourtant, si je charge dans un champ texte pour voir ce qui est passé en paramètre, ainsi :
$form->notes = $Calendar;
Voici ce que le champ $form->notes prend comme valeur : function Array() { [native code]}
est-ce plus clair ?
Merci de ta réponse :roll:

ViPHP
ViPHP | 1996 Messages

17 janv. 2013, 11:37

Hmmm :? Pas trop.
J'ai du mal à comprendre de quel côté tu travailles : côté client ou côté serveur. Je ne connais pas trop Smarty (même pas du tout) mais si je regarde ton code HTML suivant :
<input type="button" value="Envoyer" onClick="xajax_submitIcal($('id').value, {$calendrier} );" />
Tu lui indiques que dès que l'utilisateur clique sur le bouton, javascript lance la fonction xajax_submitIcal qui contient deux paramètres : $('id').value et {$calendrier}. Alors que donne ces deux paramètres côté client ?
Sinon la fonction xajax_submitIcal, à l'état actuel de mes connaissances, est une fonction javascript et donc côté client. J'ai cru comprendre que la fonction que tu m'a donné est une fonction php donc côté serveur. Peut être me trompe-je.
Si tu veux récupérer les paramètres côté client et les renvoyer vers le serveur, une seul salut = > AJAX

Est ce cela que tu cherches à faire ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

loc56
Invité n'ayant pas de compte PHPfrance

17 janv. 2013, 12:43

Oui c'est bien de renvoyer au serveur le tableau de dates éventuellement modifiées côté client.
petite précision, la fonction submitIcal est écrite en php et s'appuie sur la librairie xAjax.

Pour ce qui concerne la variable smarty {$calendrier} c'est un tableau et la balise {foreach} permet d'accéder à chacun des éléments
côté client dans le template et actuellement les variables $id et $calendrier sont parfaitement exploitables côté client.
Le souci ne porte que sur la récupération côté serveur du tableau, d'ailleurs la valeur $id est correcte côté serveur.

Alors Ok, c'est bien AJAX mais via xAjax dans mon cas :?

ViPHP
ViPHP | 1996 Messages

17 janv. 2013, 15:01

Ok.
Bon normalement les données envoyées en AJAX sont envoyées par GET ou POST.
Essaye de faire un
var_dump ($_REQUEST);
pour savoir ce que reçois le serveur.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr