Variable dans Xajax

WRInaute discret
Bonjour,

Je n'arrive pas à faire reconnaitre les variables par Xajax.
Je fait un petit shema pour que ce soit comprehensible :

<?php

Connexion BDD;

Function machin ()
{
Blablabla '. $coucou. '
}

fermeture BDD

?>

Ensuite <html><head> ...etc

Donc voilà ma variable $coucou n'est pas reconnu. (par contre elle marche dans le body)
Je me doute que c'est parcqu'elle n'est pas défini dans cette partie, mais comment faire??

Merci d'avance !
 
WRInaute discret
La goblaliser?

Tu veut dire que je met un $coucou = $_GET['coucou']; quelques part?
Ou ca?

Et ensuite t'entend quoi par passer en paramètre?

Et dans le sens ou ma variable est utilisé plusieurs fois dans ma page (avec des valeurs differentes à chaque fois puisqu'elle est utilisé dans une boucle) comment dans l'ajax on va savoir que c'est bien la bonne vaaluer de la variable?

Oui oui je debute et je sais pas si je suis tres clair...

merci!
 
WRInaute occasionnel
Dans ton exemple en fait je vois pas le rapport avec de l'ajax.
Je répond sur un pur plan php.

1/ Passer en paramètre
Code:
<?php

function machin ($coucou)
{
    print 'blabla '.$coucou;
}


// appel
machin('bli bli');

2/ Global
Code:
<?php

function machin ()
{
   global $coucou;
   print 'blabla '.$coucou;
}

$coucou = 'bli bli';
machin();
 
WRInaute discret
Oui exact c'est du php en fait.

Donc je reexplique mon probleme :
J'ai une boucle avec une variable $id differente pour chaque ligne de la boucle.
Et y'a : onclick="xajax_envoyer(); return false;" dans une ligne en dessous de chaque ligne de la boucle.

Et je voudrait que la function envoyer() fasse des trucs en rapport de l' $id des differentes lignes de la boucle.


Pour l'instant avec une variable fixe (192 par exemple) ça marche :

onclick="xajax_envoyer(192); return false;"

function envoyer($id)

blablabla machin avec $id


Mais moi je voudrait que l' $id de la function soit l'$id qui etait utilisé pour les lignes de la boucle.

Et je n'y arrive pas pourtant j'ai testé un paquet de possibilité...

Merci!
 
WRInaute passionné
Tu as regarde ton code source (ctrl+u sous firefox) car il semble que tu fasses le mélange entre js et php.

Si tu as des liens qui doivent appeller une fonction js (qui fait des appelle en ajax par la suite) un exemple tout simple :
Code:
while ($ligne = mysql_fetch_array($mesProduits)) {
  ?><a href="#" onclick="envoyer(<?php print $ligne['id'];?>)"><?php print $ligne['intitule']; ?></a>
}

Ca te donnera des liens comme ça :
<a href="#" onclick="envoyer(192)">Ton produit</a>

Et envoyer() est une fonction js présente sur ta page qui prend en entrée un entier.
 
WRInaute discret
Oui j'ai fait un truc dans le genre que tu m'a dit. (avec quelques modifs)

Et ben ça marche, alors que je suis sur a 99% de l'avoir déjà testé avant!

Bon j'avais du faire une connerie la dernière fois alors. (bien que ça me semble assez improbable vu le nombre de fois que j'ai vérifié...)

C'est pas grave, ça marche, tant mieux merci a tous!
 
WRInaute discret
<a href="#" onclick="xajax_envoyer(plus, '.$id.'); return false;"> Marrant </a>

Nouveau probleme.
Je veut envoyer 2 arguments mais ça ne marche pas.
J'ai essayé en mettant des ' autour du plus mais ça marche toujours pas!
Avec les " c'est pire.

Je recoit les arguments (c'est bien comme ça que ça s'appel?) avec : function envoyer($kl, $id)
Pour l'instant je n'utilise pas $kl dans la fonction.
Le code source m'a l'air bon (j'ai bien onclick="xajax_envoyer(plus, 137); return false;" )

Comment faire?
 
WRInaute passionné
Alors : onclick="xajax_envoyer(plus, 137); return false;"
Il y a forcément un problème autour de ton plus (sauf si c'est une variable javascript?).

Il faut donc xajax_envoyer('plus', 137);

Et si ta fonction js est :
function xajax_envoyer(prem, deuz) {
alert(prem);
alert(deuz);
}

Ca devrait t'afficher les deux.
 
WRInaute discret
Ma fonction c'est : mysql_query("UPDATE minichat SET voteplus=voteplus + 1 WHERE id='$id'") or die(mysql_error()) ;

Donc la variable $id marche bien, mais quand je met une variable à la place de plus (c'est à dire une variable qui a pour valeur plus...) ça marche pas!

Déja rien que là meme sans utiliser la variable $kl dans la fonction ça devrait marcher non?
Ben non le onclick ne marche plus!

<a href="#" onclick="xajax_envoyer(plus, '.$id.'); return false;"> Coucou </a>

function envoyer($kl, $id)


Et si jamais je met 'plus' et non plus, ça me met :
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/local/apache/htdocs/sites/y/xxxxxxxxx.com/xxxxx.php on line 143
 
WRInaute passionné
Hummm... Xajax fait de la magie et te permet d'accéder aux variable js en gros (si j'ai bien compris la phrase de présentation sur leur site).

Donc la confusion js / php peut encore être plus importante.

Là dans ton code je vois pas ce que fait ta variable "plus" ni même où tu l'utilises. Poste plus de détails.
 
WRInaute discret
Bon finalement j'ai fait 2 fonction differente comme ça plus de probleme avec la variable qui devait mettre plus ^^

Pour info mon site internet est entierement bourré de combine de ce genre là :lol:

Ah oui et sinon autant des fois l'ajax se charge quasi instantanément, autant des fois ça met plus d'une seconde... (presque une et demi!)
Mon code me semble assez leger, ça peut venir de quoi? C'est normal?
 
WRInaute discret
Sur une autre page (alors que sur la premiere ça marche) je me mange un méchant :

Output has already been sent to the browser at /home/local/apache/htdocs/sites/p/xxxxxxxxx.fr/xxxxxxxx.php:2. Please make sure the command $xajax->processRequest() is placed before this.
 
WRInaute passionné
Pour l'ajax : là difficile à répondre, ton serveur peut galérer, ou tes requêtes ne sont pas optimale, ou ta connexion est "full", ... Plein de raison possible soit coté client, soit coté serveur.

Et pour ton erreur : bah tout est dans le message d'erreur la fonction $xajax->processRequest() est appellé après un affichage (un echo, print, print_r ou une sortie du code php pour mettre du code HTML si tu n'utilises pas de template)
 
WRInaute discret
C'est bon c'est resolu mais je ne sais pas trop pourquoi, j'ai juste refait mon code différement.
Je ne sais pas ce que j'ai touché qui a vraiment réparé le truc, quoi.

Il me semblait pourtant que tout etait bon pour ça : $xajax->processRequest() Mais bon ca devait forcément etre un truc tout con.

Et pour la vitesse en fait ça s'améliore, c'est presque instatané a chaque fois (en tout cas ça met jamais plus d'une seconde).

Bon ben merci pour tout!
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut