boucle en php et js

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : boucle en php et js

par artotal » 29 janv. 2007, 19:02

Donc j'essaie de récupérer une liste en javascript dynamique puisque venant d'une dbb :
<ul id="liste">
<?php
include ("inc/connexion.php");
$query = "SELECT * FROM pages order by page";
 $result = mysql_query($query, $lien);
 $compte=1;
	while($ok = mysql_fetch_array($result))
	{
	echo $compte++;
	echo '<li class="liste"><a href="page='.$ok['page'].'">'.$ok['page'].'</a></li>';
	}

?>
</ul>
<script type="text/javascript">
 function recup() {
var refId=document.getElementById('liste');
var liens=refId.getElementsByTagName('a');
for (i=0; i<liens.length; i++) {
liens[i].onclick=function() {
alert([i]);
var adresse=this;
// Puis on extrait la chaine de caractère commençant à la dernière occurence du caractère =
var elt=adresse.substring(adresse.lastIndexOf("="));
/* Enfin on extrait du résultat une nouvelle chaine de caractère commençant à l'index 1 de la précédente. L'index 0 qui correspond au caractère = est donc exclu. La variable son est maintenant opérationnelle. */
var element=elt.substring(1);
return element;
}
}
}
</script>
fonctionne pas

par artotal » 29 janv. 2007, 17:29

Mais d'ailleurs j'ai fais quelques chose de meiux, qui fonctionne pas c'est sur.
ma valeur est indéfinie, se qui est déjà mieux et sa veux dire qu'une solution existe
http://creatif-web.be/developpeur/ajax_updater.php
Pourtant ce problème est récurent les boucle y'en a partout ?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo $titre ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="./css/imprimer.css" media="print" title="style 1" />
<script src="./js/scriptaculous/prototype.js" type="text/javascript"> </script>
<script src="./js/scriptaculous/scriptaculous.js?load=effects,dragdrop" type="text/javascript"> </script>
</head>
<body>
<?php
include ("inc/connexion.php");
$query = "SELECT * FROM pages order by page";
 $result = mysql_query($query, $lien);
	while($ok = mysql_fetch_array($result))
	{
	echo '<span id="boucle"><p id="'.$ok['page'].'" onclick="obtenir_php()">'.$ok['page'].'</p><span><br />';
	echo "<script type=\"text/javascript\">
	var elt;
	var elt=Event.observe('".$ok['page']."', 'click', ooo);
	function ooo(event) {
	Element.show(Event.element(event));
	}
	</script>";
	}
?>

<script type="text/javascript">
function effet(id_elt)
{
new Effect.Parallel(
		[ new Effect.MoveBy(id_elt, 0, 100,
			{ sync: true }), 
		  new Effect.Opacity(id_elt, 
			{ sync: true, to: 1.0, from: 0.0 } ) ],
		{ duration: 1.5, }
	  );
//new Effect.Grow('placeholder');
}
function obtenir_php()
{
	var url = '/developpeur/salut_php.php';
				
var myAjax = new Ajax.Updater('placeholder', url, {evalScripts:true, 
parameters: 'page='+ elt, 
onFailure: reportError, method: 'get', onComplete:
effet('placeholder')});
}
function reportError(request)
{
	alert('Désolé il y a une erreur');
}

</script>

<!--<div onclick="obtenir_php()">1/ onclick() ici<br /><br /></div>-->
<div id="placeholder" style="display:block;"></div>


<?php include('./pied_page.php'); ?>
Mais j'ai réfléchis et un moyen serait de faire une itération de la boucle php en javascript
dans se style, mais je bloqie pour faire mon tableau.

Code : Tout sélectionner

function montreListe() { var tableaux = ['Homer', 'Marge', 'Lisa', 'Bart', 'Meg']; for(i=0;i<tableaux.length;i++){ alert(simpsons[i]); } }

par artotal » 29 janv. 2007, 16:54

en faite le javascript au milieu me permet de passer les variables, au moment du clic. Et donc d'envoyez les requetes mais en javascript ! Mais sa ne fonctionne pas. J'ai du mal avec se langage. Tout se que je fais ne fonctionne pas
Je vaux faire du web 2.0, en ajax c'est la mode et tout le monde en croque. ;)
Quand on cherche du taff c'est pas mal de préciser dans sont cv, ajax en blind, lol.
Et plus personnellement j'ai développé un cms en php, que je voudrai mettre en open source et je pense qu'il faut être en Ajax pour ne pas ressembler aux autres

par Ryle » 29 janv. 2007, 12:32

Pourquoi ton javascript est-il au milieu de ta boucle while ?

Si jamais tu as deux résultats ou plus, la fonction showResponse sera déclaré plusieurs fois, les appels ajax au serveur se feront pour chaque élément alors que la page n'est pas encore chargée, les réponses seront retournées dans un désordre complet... il n'y a absolument aucune logique séquentielle...

Tu ne devrais avoir qu'une seule fonction d'envoi des données, à laquelle tu passerais la valeur de $ok['page'], de même pour celle de réponse. Tout ça loin du while php... commence par te demander à quoi doit ressembler le code html généré avant de te lancer :)

Dans tous les cas, si ces données doivent être chargées à l'affichage de la page, pourquoi utiliser ajax au lieu de simplement les afficher directement avec php ?

par artotal » 27 janv. 2007, 19:25

Alors j'ai fait un affichage en php de la variable et elle est vide
$page=$_GET['page'];
echo $page.' variable vide<br />';
Pourtant la variable est passé et le contenu aussi ????????
C'est din gue.
Dans paramètre on peux voir que c'est nickel
http://creatif-web.be/screen/firebug0.GIF
et la réponse aussi
http://creatif-web.be/screen/firebug1.GIF
Par contre l'entète tout n'est pas clair :
http://creatif-web.be/screen/firebug2.GIF

par artotal » 27 janv. 2007, 19:15

Alors j'ai pu faire se que je voulait, mais la réponse y est s'affiche mais disparait instentanément
¿¿¿¿¿¿¿¿¿¿¿¿¿
http://creatif-web.be/developpeur/dossier_ajax2.php
On le voit bien avec Firebug [l'extension DOM]
<?
include ("inc/connexion.php");
$query = "SELECT * FROM pages order by page";
 $result = mysql_query($query, $lien);
	while($ok = mysql_fetch_array($result))
	{
	echo '<a id="lien" href="dossier_ajax2.php">';
?>
<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 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>
<?php echo $ok['page'].'</a><br />'; } ?>
<div id="datestr" style="display:none; width:25em;"></div>

par artotal » 27 janv. 2007, 18:53

j'ai compris dans la source il me met

Code : Tout sélectionner

<a id="lien" href="<script type="text/javascript">
Mais comment je pourrai faire pour éviter ça ?

boucle en php et js

par artotal » 27 janv. 2007, 18:49

Bonjour,
j'ai un problème pour boucler le code ci-dessous m'affiche le js en clair ?
http://creatif-web.be/developpeur/dossier_ajax1.php
Je ne me l'explique pas.
<?php
include ("inc/connexion.php");
$query = "SELECT * FROM pages order by page";
 $result = mysql_query($query, $lien);
	while($ok = mysql_fetch_array($result))
	{
	echo '<p><a id="lien" href="';
?>
<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 echo $test['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>
<?php echo '">'.$ok['page'].'</a></p>'; } ?>
<div id="datestr" style="display:none; width:25em;"></div>
D'avance merci