Page 1 sur 1

script javascript dans boucle foreach

Posté : 28 nov. 2006, 15:14
par Maitrepylos
Bonjour, j'essaye de mettre du javascript dans une boucle foreach.

Est_ce possible?

Comme ceci cela ne fonctionne pas
<?php
if ($_POST['drag'])
{

	foreach ($tableauPhrase AS $key=>$valeur)
	{
		if ($_POST['zone'.$key]=="")
		{?>
			<script language="javascript" type="text/javascript">
			<!--
				alert('Désolé mais vous avez oublié au moins une zone!');


				!-->
			</script>
			<?php
			//echo "Désolé mais vous avez oublié au moins une zone!";
			//break;

		}
		$phraseSolution.=$_POST['zone'.$key]." ";
	}

	$phraseSolution = trim($phraseSolution," ");

	if ($phrase==$phraseSolution)
	{

		echo "Bravo";
	}
	else
	{
		echo "Désolé";
	}
}


Posté : 29 nov. 2006, 00:50
par Truc
Qu'est ce qui ne fonctionne pas au juste ?

affiche le message en dehors de la boucle :
<?php

$ok = true;
foreach ($tableauPhrase AS $key=>$valeur)
{
        if ($_POST['zone'.$key]=="")
        {
              $ok = false;        
        }
        $phraseSolution.=$_POST['zone'.$key]." ";
} 
if(!$ok)
{ ?>
<script language="javascript" type="text/javascript">
      alert('Désolé mais vous avez oublié au moins une zone!');
</script>
<?php }
Ceci dit c'est beaucoup plus z'oli un message intégré à la page qu'une vieille boite avec un bouton ok :wink:

Posté : 29 nov. 2006, 11:18
par Maitrepylos
Ceci dit c'est beaucoup plus z'oli un message intégré à la page qu'une vieille boite avec un bouton ok :wink:
Ben, je suis assez d'accord avec toi, mais on me demande de l'interactivité qui fais très web 2.0

Et puis comme je ne connais absolument pas Javascript(merci PhpFrance pour ton aide), cela me permet de faire deux pierres d'un coup.


Bon alors ton exemple ne fonctionne pas non plus, par contre comme j'ai un fichier .js appeller dans les <head> j'ai rajouté une fonction dans ce fichier

Code : Tout sélectionner

function caseVide() { alert('Désolé mais vous avez oublié au moins une zone!'); }
et puis je l'intégre :
<?php
foreach ($_SESSION['tableau'] AS $key=>$valeur)
	{
		if ($_POST['zone'.$key]=="")
		{?>
			<script language="javascript" type="text/javascript">

			caseVide();

			</script>


			<?php
			//echo "Désolé mais vous avez oublié au moins une zone!";
			$ok = true;
			break;

		}
		$phraseSolution.=$_POST['zone'.$key]." ";
	}

?>

Et là b izarement cela foinctionne nickel.

Question : si j'intègre un page src .js, suis-je obliger de passer par elle, pour d'eventuelle action javascript?

Posté : 29 nov. 2006, 11:39
par jojolapine
Le fait de te demander de l'intéractivitée web2.0 n'empêche en rien le fait d'inscrire les erreurs au sein du formulaire
regarde un bel exemple: http://www.rememberthemilk.com/signup/
(fait peut-être un retour sur le site et reviens sur le formulaire, car le ccs avait disparu quand j'y suis aller directement)

Posté : 29 nov. 2006, 11:59
par Maitrepylos
:shock: et tu aurais un petit tuto qui va avec(cela serais méga super gentil)

Posté : 29 nov. 2006, 12:17
par jojolapine

Posté : 30 nov. 2006, 16:20
par Maitrepylos
Bon après plein de lecture et de copier coller, j'arrive à faire ceci

la page PHP
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>AJAX : Exemple de client</title>
<script type="text/javascript" src="./exemple_1.js"></script>
</head>
<body>
<p>
<input type="text" onblur="gestionImage(); return false" name="test1"><span id="ImageCheck"></span><br />
<input type="text" onblur="gestionImage(); return false" name="test2"><span id="ImageCheck"></span><br />
</p>

</body>
</html>


la page .js
var http; // Notre objet XMLHttpRequest

function createRequestObject()
{
    var http;
    if(window.XMLHttpRequest)
    { // Mozilla, Safari, ...
        http = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    { // Internet Explorer
        http = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return http;
}

function gestionImage()
{
    //document.getElementById('ImageCheck').innerHTML = '<em>Chargement...</em>';
    http = createRequestObject();
    http.open('get', './ico_check_blu.gif', true);
    http.onreadystatechange = handleAJAXReturn;
    http.send(null);
}

function handleAJAXReturn()
{
    if(http.readyState == 4)
    {
        if(http.status == 200)
        {
            document.getElementById('ImageCheck').innerHTML = "<img src=\"ico_check_blu.gif\">";
        }
        else
        {
            document.getElementById('ImageCheck').innerHTML = "<strong>N/A</strong>";
        }
    }
}



Malheureusement cela ne fonctionne que pour le premier Input

Posté : 30 nov. 2006, 23:16
par Truc
Tu as deux fois le même id => "ImageCheck" = conflit :-k