Bien le bonjour ! Smiley cligne

Tout d'abord je tiens à remercier le forum, qui m'a toujours apporté réponse à mes question. Smiley lol

Cela étant dit, posons le problème :

J'ai fais un petit script vraiment tout simple combinant php et javascript:


<!--on afiche hello au moyen d'une boucle-->
<?php 
$num = 0 ; // la variable qui au début vaut zero pour afficher une première fois hello
while ( $num == 0  ) //la boucle jusque la rien de bien compliqué

{echo ('hello') ; //on affiche hello jusque la rien de bien complex 

 $num = 1 ; //on donne la valeur 1 à num pour éviter d'avoir une boucle infinie
?>


<p id="dada" style="background-color : black ; color : white ; width: 5%"  >dada</p> <!--Paragraphe affichant 'dada' sans rentrer dans les détails, un petit clin d'oeil pour une certaine personne-->
<script> //Un petit script histoire de dire : quand on clique sur dada, on change la valeur de $num

var o = document.getElementById ('dada') //basique du javascript quoi

o.addEventListener ('click' , function () //DOM-2 c'est que du bonheur : quand on click hop on execute la fonction

{ 

o.innerHTML	 = '<?php $num = 0 ;?>' ; //La ca peut paraitre étrange mais je me suis dis que ca marcherais alors je l'ai fait !

}, false ) ; //hop la troisième valeur prend false

</script><!--fini pour le script-->


<?php 
} //ne pas oublier de refermer la fonction while vue au début ! 
 ?>



Tout est clairement expliqué dans le code comme ca personne ne perd de temps a comprendre mon script ( surtout que je suis pas le meilleur codeur au monde non plus Smiley langue )

RESULTAT :

Ca marche sans marcher ! Smiley biggol

On tombe sur une BOUCLE INFINIE directement sans meme cliquer sur le paragraphe ! Smiley bawling

J'ai compris ca comme ca => Le navigateur voit directement le .innerHTML et attribut la valeur directement ( enfin je pense Smiley confused ).

Je me suis dis, bon ba si c'est que ca, peut etre que avec un peu de AJAX (attention vous pouvez me reprendre sur mon script je suis loin d'être un expert dans ce domaine il peut comporter des erreurs !) on peut envoyer une petite requête dans l'URL ! Smiley murf

REBELOTE NOUVEAU CODE :




<!--on afiche hello au moyen d'une boucle-->
<?php 
$num = 0 ; // la variable qui au début vaut zero pour afficher une première fois hello
while ( $num == 0  ) //la boucle jusque la rien de bien compliqué

{echo ('hello') ; //on affiche hello jusque la rien de bien complex 

 $num = 1 ; //on donne la valeur 1 à num pour éviter d'avoir une boucle infinie
?>


<p id="dada" style="background-color : black ; color : white ; width: 5%"  >dada</p> <!--Paragraphe affichant 'dada' sans rentrer dans les détails, un petit clin d'oeil pour une certaine personne-->
<script> //Un petit script histoire de dire : quand on clique sur dada, on change la valeur de $num

var o = document.getElementById ('dada') //basique du javascript quoi

o.addEventListener ('click' , function () //DOM-2 c'est que du bonheur : quand on click hop on execute la fonction

{ 

 var xhr = new XMLHttpRequest () ; //Création de la requête
xhr.open ('GET', 'test.php?num=0' ); //en GET pour mettre dans l'url histoire de bien voir si ca marche + spécification de l'adresse de la page avec comme paramettre en plus nom= 0

xhr.send (null) ; //on envoi les amis ! 

}, false ) ; //hop la troisième valeur prend false

</script><!--fini pour le script-->


<?php 
} //ne pas oublier de refermer la fonction while vue au début ! 
 ?>






Mais la encore rien ne ce passe même la variable n’apparaît pas dans l'url .. Smiley sweatdrop
Le fait que je travaille en localhost perturbe peut etre la commande ? Smiley confus


Est-ce qu'il y aurait une solution pour que le code fonctionne avec ou sans AJAX ?

Je m'en remet à vous et vous souhaite une agréable journée ! Smiley biggrin

Kevin Lourenco Smiley smile
Salut,

o.innerHTML	 = '<?php $num = 0 ;?>' ; //La ca peut paraitre étrange mais je me suis dis que ca marcherais alors je l'ai fait !


En effet, c'est étrange !!! Quoi qu'il en soit, <?php $num = 0; ?>, tu ne peux pas trouver mieux pour remettre la variable $num à 0 et ainsi déclencher ta boucle infinie.

Un chose est sûre : il te manque un "echo". Par exemple, peut-être voulais-tu plutôt écrire cette non moins étrange ligne, mais qui évite la boucle infinie :

o.innerHTML	 = '<?php echo ($num == 0 );?>' ; // Teste la nullité de $num et affiche le résultat 
Cela ne fonctionne pas ! Smiley confus

Mon but n'est pas de tester ou d'afficher la valeur de $num mais juste de donné a $num la valeur 0 pour pouvoir répercuter la boucle.

En claire : Tant que l'on clique sur dada on ajoute du texte

Je sais qu'il est possible de le faire en javascript c'est même assez simple, mais je suis contraint de l'utiliser de cette manière puisque par la suite ce n'est plus du texte qui sera affiché mais des valeurs d'une base de données ! Smiley biggol
Ah, d'accord, je crois que je comprends mieux ton objectif.

Je pense que ton code se fait un peu des noeuds entre JS côté client et PHP côté serveur. C'est la raison de ta boucle infinie. Tu ne peux pas, en Javascript, donner une valeur à une variable PHP !

Ajax, tu as raison, est la solution. Je vais essayer de te proposer un bout de code un peu plus tard. Juste une précision : il y a un seul "dada" sur lequel on clique, n'est-ce pas ? Ou bien à chaque clic un "nouveau dada" à cliquer apparaît ?
Ok, alors je t'ai fait un petit exemple, mais pour faire vite, je suis passé par JQuery. Si ça te gêne, je te laisse traduire en Javascript pur...

La page HTML :
<html>
<head>
<title>dada</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/dada.js"></script>
</head>
<body>
<div id="contenu">
<p class="dada" id="dada_0">dada</p>
</div>
</body>
</html>


Le script "dada.js" :
$(document).ready(function() {
	$("#contenu").on("click", ".dada", function() {
		id = $(this).attr("id");
		num_dada = parseInt(id.substring(5));
		$.ajax({
			type:"get",
			url:"test.php",
			data:"num="+num_dada,
			dataType: "html",
			success: function(data) {
				$("#contenu").append(data);
			},
			error: function(data) {
				alert(data);
			}
		});
	});
});


Et le fichier "test.php" appelé par la requête Ajax (exemple, hein, normalement c'est requête et cie) :
<?php
	$num = $_GET['num'];
	echo "<h1>Salut, voici le commentaire n°".$num."</h1>\n";
	$num += 1;
	echo "<p class='dada' id='dada_$num'>dada</p>\n";


J'espère que ça correspond à ce que tu cherches...
C'est assez complex de cette manière je trouve Smiley sweatdrop

Enfait j'aurais simplement utilisé l'AJAX :



<script>

$numb = 0 ; 

var xhr = new XMLHttpRequest();
 
    xhr.open('GET', 'test.php?numb=1');
	xhr.send('null') ;

	

var numb = $numb ;


if (numb == 0) 

{

alert('ca marche pas') ;

	 }
	
	 
	 
 </script> 

 

 





Le code ci contre devrait fonctionner ! Je pense que il me manque quelque chose d'insignifiant mais je ne sais pas quoi Smiley confused