intégrer une fonction js dans une boucle while

Petit nouveau ! | 1 Messages

27 nov. 2009, 05:37

Bonjour à tous,
je viens d'intégrer une function javascript dans une boucle while pour que la fonction s'applique à tous les passages de la boucle. Ça marche! mais c'est vraiment bizarre j'écris la fonction avec un nouveau nom ainsi que les variable que j'incrémente de 1 à chaque passage de la boucle avec la variable $i.
En php j'apelle la fonction ou j'en ai de besoin et aussi souvent que je le veux et elle s'exécute mais là ouf! je n'arrivais pas à la faire exécuter correctement à chaque passage de boucle parcequ'elle ne veut que s'appliquer au premier élément de la boucle that it.

bon! je vous montre ce que j'ai fait et je vous prie de me proposer une manière plus intelligente d'écrire ce code sans faire une fonctions pour chaque passage de boucle.

merci!
$i=1;
while ($ligne=mysql_fetch_array($resultat)) {
//--------------------------------------javascrip pour ouvrir un block
echo <<<HEREDOC
<script language="javascript">
function toggle$i() {//--------------------------------------------ici le $i change le nom de la fonction comme vous pouvez voir
var ele$i = document.getElementById("toggleText$i");
var text$i = document.getElementById("displayText$i");
if(ele$i.style.display == "block") {
   	 ele$i.style.display = "none";
text$i.innerHTML = "show";
 	}
else {
ele$i.style.display = "block";
text$i.innerHTML = "hide";
}
} 
</script>
HEREDOC;
//--------------------------------------fin du javascript
echo "<tr>";
echo "<input type=hidden name=id[] value=".$ligne['id_boutique'].">";
//-----------pour l'image
if(file_exists("../photo/boutique/petit/".$ligne['id_boutique'].".jpg")){
echo "<td><a id=displayText".$i." href=\"javascript:toggle$i();\"><img src=../photo/boutique/petit/".$ligne['id_boutique'].".jpg width=75 border=0></a>";
echo "<div id=toggleText".$i." style=\"display: none\">";

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 nov. 2009, 10:17

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 453 Messages

02 janv. 2010, 17:43

Hello,

Mélanger css, js et php, :-k C'est peut être pas vraiment judicieux. Pas très propre ce script. La solution serait plutôt de faire de l'AJAX. ;)

Au passage, innerHTML est déprécié.
Au deuxième passage, en lisant vite fait ton code, $i vaudra de toute manière 1. De plus je ne vois pas vraiment l'utilité de $i.
Pour chipoter, la mise en page tableau, c'est vieux et pas glop le code, la maintenance, etc. Après je peux me tromper puisque je ne connais le contexte... Mais bon un formulaire en tableau, hum.

Bonne journée. :)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
ViPHP | 5462 Messages

02 janv. 2010, 18:58

le meilleur moyen de communiquer entre php et javascript c'est le json, suffis de creer un tableau ou un object que tu rempliras avec ta boucle while, et un coup de json_encode et le tour est joué, apres a toi de choisir si tu veux envoiyé l chaine direct dans le code ou la recupérer via ajax