Que les fans de [JAVASCRIPT] me pardonnent !!
elsadelatoundra
Messages postés
126
Date d'inscription
Statut
Membre
Dernière intervention
-
oberion Messages postés 1253 Date d'inscription Statut Membre Dernière intervention -
oberion Messages postés 1253 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un tableau et au passage de ma souris sur les lignes de celui-ci, j'aimerais afficher le contenu dans le formulaire "consulter... en PHP j'arrive à récupérer dans une Array "$contenuLigne" l'ensemble des lignes mais en JS, c'est pas la même chose !
Voici ce que j'aimerais que fasse ma fonction :
Mais je comprends bien que ça ne marche PAS comme ça et je suis quand même bien optimiste !!
Si quelqu'un est moins optimiste ou plus doué que moi, n'hésitez pas à m'aider !!
Merci d'avance !
J'ai un tableau et au passage de ma souris sur les lignes de celui-ci, j'aimerais afficher le contenu dans le formulaire "consulter... en PHP j'arrive à récupérer dans une Array "$contenuLigne" l'ensemble des lignes mais en JS, c'est pas la même chose !
Voici ce que j'aimerais que fasse ma fonction :
<script language=javascript> function focusOn(ligne) { document.forms["consulterRSSI"].champtexte.value = $contenuLigne[ligne] ; } </script>
Mais je comprends bien que ça ne marche PAS comme ça et je suis quand même bien optimiste !!
Si quelqu'un est moins optimiste ou plus doué que moi, n'hésitez pas à m'aider !!
Merci d'avance !
A voir également:
- Que les fans de [JAVASCRIPT] me pardonnent !!
- Action fans - Accueil - Guide arnaque
- Telecharger javascript - Télécharger - Langages
- Fans control - Télécharger - Optimisation
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- Erreur #125 javascript - Forum Mozilla Firefox
14 réponses
Re,
En fait, tu souhaites mélanger le script coté client et le script coté serveur.
Ca ne peut effectivement pas fonctionner comme cela...
Revenons sur le principe d'execution de la page:
1. Le script php est interpreté: php cherche donc tout d'abord à connaitre la valeur de $contenuLigne[ligne] (qu'il ne connait pas puisque "ligne" pour lui n'existe pas)
2. la page html est généré avec dans ta fonction un truc du genre "Array" ou "Null"
3. Lorsque le js est appelé, ca ne fonctionne pas puisque la fonction merdoit !
Il te faut proceder autrement !
Boucle sur le contenu de ton Array pour générer la fonction js. Une ligne de js par ligne dans ton tableau.
En fait, tu souhaites mélanger le script coté client et le script coté serveur.
Ca ne peut effectivement pas fonctionner comme cela...
Revenons sur le principe d'execution de la page:
1. Le script php est interpreté: php cherche donc tout d'abord à connaitre la valeur de $contenuLigne[ligne] (qu'il ne connait pas puisque "ligne" pour lui n'existe pas)
2. la page html est généré avec dans ta fonction un truc du genre "Array" ou "Null"
3. Lorsque le js est appelé, ca ne fonctionne pas puisque la fonction merdoit !
Il te faut proceder autrement !
Boucle sur le contenu de ton Array pour générer la fonction js. Une ligne de js par ligne dans ton tableau.
Oula !!
J'ai changé mon script :
Maintenant j'appelle la fonction focusOn($i,$contenuLigne) où $i est l'indice de la ligne et $contenuLigne est le tableau contenant les lignes ...
Ca ne marche pas !!
Alors, j'ai beau essayé de comprendre, je ne comprends pas ...
Pourant quand je fais :
Et que j'appelle la fonction focusOn($i), à chaque passsage de souris sur une ligne, ça marche !!
J'ai changé mon script :
<script language=javascript> function focusOn(ligne,tableau) { document.forms["consulterRSSI"].champtexte.value = tableau[ligne]; } </script>
Maintenant j'appelle la fonction focusOn($i,$contenuLigne) où $i est l'indice de la ligne et $contenuLigne est le tableau contenant les lignes ...
Ca ne marche pas !!
Alors, j'ai beau essayé de comprendre, je ne comprends pas ...
Pourant quand je fais :
<script language=javascript> function focusOn(ligne) { document.forms["consulterRSSI"].champtexte.value =ligne; } </script>
Et que j'appelle la fonction focusOn($i), à chaque passsage de souris sur une ligne, ça marche !!
Ok, maintenant, c'est un probleme exclusivement js. Il faut voir maintenant ce que contient la variable "tableau". A mon avis, le probleme est la dedans.
Là ça ne bugge plus en fait, mais m'il affiche juste "undefined" alors que j'envoie onMouseOver='focusOn(".$i.",".$contenuLigne.")'
$i est l'indice de la ligne et $contenuLigne le tableau contenant des lignes un peu brutes du style : ";74;1;1;2006-09-25;12:16:20;2007-02-01;2007-09-09;0;0;0;0" mais c'est une string, c'est SÛR !!
$i est l'indice de la ligne et $contenuLigne le tableau contenant des lignes un peu brutes du style : ";74;1;1;2006-09-25;12:16:20;2007-02-01;2007-09-09;0;0;0;0" mais c'est une string, c'est SÛR !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Quand tu affiches la sources du document html generé, tu as quoi dans le tableau ? onMouseOver='focusOn... ?
Voilà ... on ne se moque pas si c'est pourri ce que je fais !! lol ;-)
<?php /* Nom du programme : consulter_RSSI.php * Description : Ce script affiche les instances du RSSI */ ?> <?php // importation des styles require'../require/style.php'; ?> <body marginheight="0" marginwidth="0" leftmargin="10" topmargin="0" BGCOLOR="lavender"> <!-- =================================== En-tête =================================== --> <?php require'../require/en_tete.php'; // connection bdd + variable require'../require/connexionBD.php'; echo"<form name='consulterRSSI' action='traitement_consulterRSSI.php' method='post'>"; // compteur des affichages : on affichera les enregistrements 1 à 10 $a=0; $b=$a+11; ?> <TABLE align='center' cellspacing='1' border='1'> <TR> <td> </td> <td> </td> <td> </td> <td> </td> <td div align="center" class="form_field" colspan="2">Date</td> <td> </td> <td div align="center" class="form_field" colspan="3">Charges</td> <td> </td> <td> </td> </TR> <TR> <td class="form_field">N°</td> <td class="form_field">Activité</td> <td class="form_field">Sous activité</td> <td class="form_field">Création</td> <td class="form_field">Début</td> <td class="form_field">Fin</td> <td class="form_field">Etat</td> <td class="form_field">Prévisionnelles</td> <td class="form_field">Consommées</td> <td class="form_field">Restantes</td> <td> </td> <td> </td> </TR> <?php $requeteRSSI="SELECT * FROM RSSI WHERE ETAT_ID<>4 AND ETAT_ID<>6 ORDER BY DATE_FIN DESC LIMIT ".$a.",".$b; $resultatRSSI=mysql_query($requeteRSSI) or die ("Exécution de la requête impossible".$requeteRSSI."<br />".mysql_error()); $enregistrements=mysql_fetch_row($resultatRSSI); for ($i = 0; $i < mysql_num_rows($resultatRSSI)-1; $i++) { $ligne=""; if ($i%2==0){ $color='B0C4DE'; } else{ $color='F5F5F5'; } echo("<TR BGCOLOR=".$color.">"); $row_array = mysql_fetch_row($resultatRSSI); for ($j = 0; $j < mysql_num_fields($resultatRSSI); $j++) { $ligne=$ligne.";".$row_array[$j]; switch($j){ case 1: $requeteActivite="SELECT a.NOM_ACTIVITE FROM ACTIVITE_RSSI a WHERE a.ACTIVITE_ID='$row_array[$j]'"; $resultatActivite=mysql_query($requeteActivite) or die ("Exécution de la requête impossible".$requeteActivite."<br />".mysql_error()); $nomActivite=mysql_fetch_array($resultatActivite); $reponse=$nomActivite[0]; echo("<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>" . $reponse . "</td>"); break; case 2: $requeteSousActivite="SELECT s.NOM_SOUS_ACTIVITE FROM SOUS_ACTIVITE_RSSI s, ACTIVITE_RSSI a WHERE s.SOUS_ACTIVITE_ID='$row_array[$j]'"; $resultatSousActivite=mysql_query($requeteSousActivite) or die ("Exécution de la requête impossible".$requeteSousActivite."<br />".mysql_error()); $nomSousActivite=mysql_fetch_array($resultatSousActivite); $reponse=$nomSousActivite[0]; echo("<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>" . $reponse . "</td>"); break; case 3: $dateCreation=$row_array[$j]; $anneeCreation=substr($dateCreation, 0, 4); $moisCreation=substr($dateCreation, 5, 2); $jourCreation=substr($dateCreation, 8, 2); echo("<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>Le ".$jourCreation."/".$moisCreation."/".$anneeCreation); break; case 4: echo(" à ".$row_array[$j]."</td>"); break; case 5: $dateDebut=$row_array[$j]; $dateFin=$row_array[$j]; if ($dateDebut == $dateFin){ $anneeInstance=substr($dateDebut, 0, 4); $moisInstance=substr($dateDebut, 5, 2); $jourInstance=substr($dateDebut, 8, 2); echo("<td class='form_text' colspan='2' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>Le ".$jourInstance."/".$moisInstance."/".$anneeInstance."</td>"); } else{ $anneeDebut=substr($dateDebut, 0, 4); $moisDebut=substr($dateDebut, 5, 2); $jourDebut=substr($dateDebut, 8, 2); $anneeFin=substr($dateFin, 0, 4); $moisFin=substr($dateFin, 5, 2); $jourFin=substr($dateFin, 8, 2); echo("<td class='form_text' colspan='2' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>Du ".$jourDebut."/".$moisDebut."/".$anneeDebut." au ".$jourFin."/".$moisFin."/".$anneeFin."/</td>"); } case 6: break; case 7: $requeteEtat="SELECT ETAT_LIBELLE FROM ETAT WHERE ETAT_ID='$row_array[$j]'"; $resultatEtat=mysql_query($requeteEtat) or die ("Exécution de la requête impossible".$requeteEtat."<br />".mysql_error()); $etat=mysql_fetch_array($resultatEtat); $reponse=$etat[0]; echo("<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>" . $reponse . "</td>"); break; case 8: $cph=intval(abs($row_array[$j]/60)); $cpm=$row_array[$j]%60; echo"<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>"; if ($cph<10){ echo("0".$cph.":"); } else{ echo("".$cph.":"); } if ($cpm<10){ echo("0".$cpm); } else{ echo$cpm; } echo"</td>"; break; case 9: $cch=intval(abs($row_array[$j]/60)); $ccm=$row_array[$j]%60; echo"<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>"; if ($cch<10){ echo("0".$cch.":"); } else{ echo("".$cch.":"); } if ($ccm<10){ echo("0".$ccm); } else{ echo$ccm; } echo"</td>"; break; case 10: $crh=intval(abs($row_array[$j]/60)); $crm=$row_array[$j]%60; echo"<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>"; if ($crh<10){ echo("0".$crh.":"); } else{ echo("".$crh.":"); } if ($crm<10){ echo("0".$crm); } else{ echo$crm; } echo"</td>"; break; default: echo("<td class='form_text' onMouseOver='focusOn(".$i.",".$contenuLigne.")'>" . $row_array[$j] . "</td>"); } } echo("<TD align='right'>"); echo'<button type="submit" style="background:'.$color.'; cursor:hand; border:solid 1px '.$color.';">'; echo"<img src='../images/modifier.png'>"; echo"</button>"; echo("</TD>"); echo("<TD align='right'>"); echo'<button type="submit" style="background:'.$color.'; cursor:hand; border:solid 1px '.$color.';">'; echo"<img src='../images/supprimer.png'>"; echo"</button>"; echo("</TD>"); echo("</tr>"); // echo$ligne; $contenuLigne[$i]=$ligne; echo$contenuLigne[$i]; } echo"</table>"; echo"<br><br><br><br>"; echo"test : affiche la ligne 3 du tableau contenuLigne"; echo"<br>"; echo$contenuLigne[3]; echo"<br>"; echo$contenuLigne[3][3]; echo"<br><br><br><br><br><br><br>"; $explodeLigne=explode(";",$contenuLigne[3]); echo$explodeLigne[1]; $a=3; ?> <script language=javascript> function focusOn(ligne,tableau) { // $explodeLigne=explode(";",$contenuLigne[ligne]); document.forms["consulterRSSI"].champtexte.value = tableau[ligne]; //$explodeLigne[1] ; } </script> <table border="1"> <tr> <td><input type="text" name="champtexte"></td> </tr> </table> <TABLE align='center'> <TR> <TD align='right'> <a href='../consulter_RSSI.php'> <img src='../images/fleche_droite.gif' border="0"> </a> </TD> <td class='form_text'> Consulter les instances suivantes </TD> </TR> <TR> <TD align='right'> <a href='../RSSI/RSSI.php'> <img src='../images/nouvelle_instance.gif' border="0"> </a> </TD> <td class='form_text'> Créer une nouvelle instance </TD> </TR> <TR> <TD align='right'> <a href='../RSSI/consulter_RSSI.php'> <img src='../images/consulter.gif' border="0"> </a> </TD> <td class='form_text'> Consulter ou modifier vos instances </TD> </TR> </TABLE> <!-- ======================= End: ======================= --> </form> </HTML>
Hou pinaise... Pas le temps de tout regarder immediatement... Mais à vue de pif, y'a des conneries la dedans.
Je te réponds ce soir.
Je te réponds ce soir.
MERCi BEAUCOUP !!
Je me doutais que y avait des conneries ... Mais bon, si je ne fais rien, ça risque d'être tendu pour moi et pour mon année surtout alors je fais ... même mal !!
Qui tente rien n'a rien !!
Je me doutais que y avait des conneries ... Mais bon, si je ne fais rien, ça risque d'être tendu pour moi et pour mon année surtout alors je fais ... même mal !!
Qui tente rien n'a rien !!
En fait quand tu vas lire mon code, tu vas t'apercevoir que j'essaye de faire l'équivalent d'un tableau de phpMyAdmin (si tu connais) ... avec un bouton permettant de supprimer une instance de mon tableau et un autre permettant de la modifier ...
En fait ce que je veux faire c'est pas vraiment ce pour quoi je poste ... ça c'était une étape dans mon raisonnement : je me disais que si déjà pour chaque ligne j'arrivais à récupérait le contenu de la ligne (et non ce qui s'affiche à l'utilisateur) ce serait bien !
Sur chaque ligne il y a un bouton "supprimer" et un bouton "modifier"et en gros ils font la même action mais pour une valeur différente : l'id correspondant à l'instance. Mais $i n'est pas cet id, il est juste le numéro de la ligne sur laquelle il se trouve !!
Je voudrais que le bouton de modification m'ouvre un formulaire récapitulant les infos d'une instance (si possible avec $_POST, pour l'instant je travaille pas mal avec $_POST et j'arrive à comprendre ce que je fais et pour éviter de ne récup que l'id et de devoir refaire une requête et que certaines zones de ce formulaire soient modifiables et d'autres non (mais ça j'ai fait et je pense que ça marche) ... sauf que je n'arrive pas à l'ouvrir pour une instance en particulier avec mon bouton modifier !
Après le bouton supprimer ce serait une alert et si OK direct une requête sur ma base de données "DELETE FROM MA_TABLE WHERE ID=ID_QUE_J'ESSAYE_DE_RECUP" ! Mais toujours pareil il faut que je récup l'id de l'instance de la ligne sélectionnée ...
Je ne sais pas si je suis bien claire dans mes explications ...
Mais je pense que tu comprendras mieux mon code avec ces quelques lignes d'explication !! Quoiqu'il arrive je suis dispo pour répondre aux éventuelles questions ...
Merci
En fait ce que je veux faire c'est pas vraiment ce pour quoi je poste ... ça c'était une étape dans mon raisonnement : je me disais que si déjà pour chaque ligne j'arrivais à récupérait le contenu de la ligne (et non ce qui s'affiche à l'utilisateur) ce serait bien !
Sur chaque ligne il y a un bouton "supprimer" et un bouton "modifier"et en gros ils font la même action mais pour une valeur différente : l'id correspondant à l'instance. Mais $i n'est pas cet id, il est juste le numéro de la ligne sur laquelle il se trouve !!
Je voudrais que le bouton de modification m'ouvre un formulaire récapitulant les infos d'une instance (si possible avec $_POST, pour l'instant je travaille pas mal avec $_POST et j'arrive à comprendre ce que je fais et pour éviter de ne récup que l'id et de devoir refaire une requête et que certaines zones de ce formulaire soient modifiables et d'autres non (mais ça j'ai fait et je pense que ça marche) ... sauf que je n'arrive pas à l'ouvrir pour une instance en particulier avec mon bouton modifier !
Après le bouton supprimer ce serait une alert et si OK direct une requête sur ma base de données "DELETE FROM MA_TABLE WHERE ID=ID_QUE_J'ESSAYE_DE_RECUP" ! Mais toujours pareil il faut que je récup l'id de l'instance de la ligne sélectionnée ...
Je ne sais pas si je suis bien claire dans mes explications ...
Mais je pense que tu comprendras mieux mon code avec ces quelques lignes d'explication !! Quoiqu'il arrive je suis dispo pour répondre aux éventuelles questions ...
Merci