Page 1 sur 1

Récupérer une variable en ajax ?

Posté : 26 janv. 2007, 20:59
par artotal
Bonjour,
pour récupérer une variable je faisait en php
$page=$_GET['page'];
Mais en ajax est ce que c'est similaire ?
Merci
<?php
$page=$_REQUEST['page'];
$requete="select * from article where page='$page' and creer is not null group by titre";
$recule=mysql_query($requete) or mysql_error();

	echo '<span class="dossier_rubrique">Ce lien n\'est assoccié à aucun contenu un email à été envoyé à l\'administrateur, la correction se fera dès sa réception</span>';	
	while($test= mysql_fetch_array($recule)) {
	echo "<div class='dossier'><h4 class=\"anim_dossier\"><p onclick=\"afficher('".$test['id']."', 'pol');\" id='pol'>
	<span class='dossier_dynamique'>".$test['titre']."</span></p></h4><div id=\"".$test['id']."\" style=\"display:block\">";
	echo "<div class=\"article\">".nl2br(stripslashes(ucfirst($test['article_text'])))."</div>";
	}

echo 'fonctionne bien';
?>

Re: Récupérer une variable en ajax ?

Posté : 26 janv. 2007, 22:23
par Truc
Salut,
Mais en ajax est ce que c'est similaire ?
Oui... pourquoi ?

Posté : 26 janv. 2007, 23:35
par artotal
je n'arrive pas à récupérer ma variable.

Posté : 26 janv. 2007, 23:47
par Truc
Dans ce cas montre le script d'envoi (ajax)

Posté : 27 janv. 2007, 00:08
par artotal
Le résultat se trouve ici :
http://creatif-web.be/developpeur/dossi ... ge=qsddddf
je boucle des champs d'une table, mais sa ne m'affiche pas le résultat, dans la source, j'ai :

Code : Tout sélectionner

parameters: 'page=testtesttesttesttest',
5 fois ce qui correspond au nombre d'enregistrement, du menu. On peux voir que c'est la dernière variable du menu qui est répété ?
$query = "SELECT * FROM pages order by page";
 $result = mysql_query($query, $lien);

  for ($i=0; $i < mysql_num_rows($result); $i++)
  {
	$ok = mysql_fetch_array($result);
	echo '<p><li><a onclick="obtenir_php()" href="dossier_ajax0.php?page='.$ok[0].'">['.$ok[0].']</a></li></p>';
	}
?>
<script type="text/javascript">
var ajax = new Ajax.Updater(
         'datestr',        // DIV id (XXX: doesnt work?)
         '/developpeur/dossier_ajax_recu.php',        // URL
         {                // options
         method:'get', parameters: 'page=<?php 
	    for ($i=0; $i < mysql_num_rows($result); $i++)
  		{
  		echo $ok[0];  } ?>',
	    
             onComplete: showResponse, evalScripts:true
             });

function showResponse(req)
{
$('datestr').innerHTML = req.responseText;
new Effect.toggle('datestr','BLIND');
new Effect.Highlight('datestr', { startcolor:'#3366FF', endcolor:'#33CCFF', restorecolor:'#fff', duration: 1});
}
</script>
2/
effet toggle & Highlight
<div id="datestr" style="display:none; width:25em;"></div>
La page que va chercher le XHRrequest :
<?php
$page=$_GET['page'];
if(isset($_GET['page']))
{
$requete="select * from article where page='$page' and creer is not null group by titre";
$recule=mysql_query($requete) or mysql_error();
if(mysql_num_rows($recule) == 0)
	while($test= mysql_fetch_array($recule)) {
	echo "<div class='dossier'><h4 class=\"anim_dossier\"><p onclick=\"afficher('".$test['id']."', 'pol');\" id='pol'>
	<span class='dossier_dynamique'>".$test['titre']."</span></p></h4><div id=\"".$test['id']."\" style=\"display:block\">";
	echo "<div class=\"article\">".nl2br(stripslashes(ucfirst($test['article_text'])))."</div>";
	}
}
echo 'fonctionne bien<br />fonctionne bien<br />fonctionne bien<br />fonctionne bien<br />';
print_r($_GET);
?>

Posté : 27 janv. 2007, 00:20
par artotal
J'ai simplifié mon code
Mais maintenant mes variables sont vide ?
$query = "SELECT * FROM pages order by page";
 $result = mysql_query($query, $lien);
	while($ok = mysql_fetch_array($result))
	{
	echo '<p><li><a onclick="obtenir_php()" href="dossier_ajax0.php?page='.$ok['page'].'">['.$ok['page'].']</a></li></p>';
	}
?>
<script type="text/javascript">
var ajax = new Ajax.Updater(
         'datestr',        // DIV id (XXX: doesnt work?)
         '/developpeur/dossier_ajax_recu.php',        // URL
         {                // options
         method:'get', parameters: 'page=<?php 
	    	while($ok = mysql_fetch_array($result))
		{
  		echo $ok['page'];  } ?>',
	    
             onComplete: showResponse, evalScripts:true
             });

function showResponse(req)
{
$('datestr').innerHTML = req.responseText;
new Effect.toggle('datestr','BLIND');
new Effect.Highlight('datestr', { startcolor:'#3366FF', endcolor:'#33CCFF', restorecolor:'#fff', duration: 1});
}
</script>

<div id="datestr" style="display:none; width:25em;"></div>
$page=$_GET['page'];
if(isset($_GET['page']))
{
$requete="select * from article where page='$page' and creer is not null group by titre";
$recule=mysql_query($requete) or mysql_error();
	while($test= mysql_fetch_array($recule)) {
	echo "<div class=\"article\">".nl2br(stripslashes(ucfirst($test['article_text'])))."</div>";
	}
}
echo 'fonctionne bien<br />Variable passée<br />';
print_r($_GET);
En faite je viens de comprendre que c'est normal puisque sa boucle le résultat

Donc pour les passages de mes paramètres j'ai fais ça :
parameters: 'page=<?php
	    $requette = "SELECT * FROM pages order by page";
 $resultat = mysql_query($requette, $lien);
 while($test = mysql_fetch_array($resultat)) 
	{
	echo $test['page'];
	} ?>',
Et du coup j'ai tout me variable, mais alors comment faire pour avoir la variable qui correspond au click ?

Posté : 27 janv. 2007, 00:40
par Truc
Je sais pas d'où sortent toutes ces fonctions... mais en bouclant sur les résultats de $result et passer à "parameters"... tu as de fortes chances de passer toutes les données collées les unes aux autres. :-k

EDIT : que'est ce que obtenir_php() ?

Posté : 27 janv. 2007, 00:44
par artotal
la logique voudrai que je fasse un test sur l'évenement onclick() puis que je le compare au paramètres passé ?
Comment capturé un évenement ?
Parceque je sais que :

Code : Tout sélectionner

document.captureEvents(Event.onclick);
capture un évenement.

Posté : 27 janv. 2007, 01:36
par artotal
oui effectivement.
http://creatif-web.be/developpeur/dossi ... hp?page=gf
Mais comment faire, puisque je suis obligé de bouclé tout mes champs et que l'ajax se déclenche sur l'événement onclick() ?
Par définition on boucle toujours un champ ?
obtenir_php() c'était pour une autre fonction, je l'avait oubliez. En faite l'objet
new Ajax.Updater
c'est pour des requete au chargement de la page avec prototype enfin je crois tandis que Ajax.Request c'est sur un évenement enfin là encore je n'est pas trop de précision. Sa viens de la librairie "Prototype".

Posté : 27 janv. 2007, 01:52
par Truc
J'avoue ne pas trop être familier avec "Prototype".... sans y aller au tatonnement je vois pas....

Posté : 27 janv. 2007, 02:46
par artotal
En faite mon problème c'est comment récupérer le résultat de la boucle en fonction du click utilisateur. Parce que protoype sa va, il fait se que je lui demande mais c'est bizarre parce que le seul moyen de récupérer un enregistrement c'est en bouclant le champs et il n'y a pas plus basique ?
D'autant que le paramètre doit être de type chaine, avec un tableau sa aurai put le faire. et là je suis dégouter, mais j'ai pu cerner le problème, c'est bien.

Sa va quand même beaucops plus vite avec l'ajax c'est assez terrible pour ça
http://creatif-web.be/developpeur/dossi ... e=aaaaaaaa
D'après Firebug 297ms
:D

Ma conclusion c'est qu'on ne peux pas avoir des paramètres dynamique, je sais pas faire du moins, à moins d'étendre la méthode ?