script javascript dans boucle foreach

Mammouth du PHP | 1029 Messages

28 nov. 2006, 15:14

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é";
	}
}

L'expérience est la somme de toutes nos erreurs.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 nov. 2006, 00:50

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1029 Messages

29 nov. 2006, 11:18

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?
L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 3607 Messages

29 nov. 2006, 11:39

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)

Mammouth du PHP | 1029 Messages

29 nov. 2006, 11:59

:shock: et tu aurais un petit tuto qui va avec(cela serais méga super gentil)
L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 3607 Messages

29 nov. 2006, 12:17


Mammouth du PHP | 1029 Messages

30 nov. 2006, 16:20

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
L'expérience est la somme de toutes nos erreurs.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 nov. 2006, 23:16

Tu as deux fois le même id => "ImageCheck" = conflit :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute