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   -
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 :
<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:

14 réponses

oberion Messages postés 1253 Date d'inscription   Statut Membre Dernière intervention   248
 
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.
0
elsadelatoundra Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   14
 
Oula !!

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 !!
0
oberion Messages postés 1253 Date d'inscription   Statut Membre Dernière intervention   248
 
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.
0
elsadelatoundra Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   14
 
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 !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oberion Messages postés 1253 Date d'inscription   Statut Membre Dernière intervention   248
 
Quand tu affiches la sources du document html generé, tu as quoi dans le tableau ? onMouseOver='focusOn... ?
0
elsadelatoundra Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   14
 
onMouseOver='focusOn... n'est pas dans la source !!

C'est normal ?
0
oberion Messages postés 1253 Date d'inscription   Statut Membre Dernière intervention   248
 
??? Non, ce n'est pas normal... :)

Tu peux mettre le script complet de la page, stp ?
0
elsadelatoundra Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   14
 
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>&#160;</td>
<td>&#160;</td>
<td>&#160;</td>
<td>&#160;</td>
<td div align="center" class="form_field" colspan="2">Date</td>
<td>&#160;</td>
<td div align="center" class="form_field" colspan="3">Charges</td>
<td>&#160;</td>
<td>&#160;</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>&#160;</td>
<td>&#160;</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>


0
elsadelatoundra Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   14
 
J'allais oublier le plus important : "bon courage à toi et surtout un grand merci !!"
0
oberion Messages postés 1253 Date d'inscription   Statut Membre Dernière intervention   248
 
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.
0
elsadelatoundra Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   14
 
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 !!
0
elsadelatoundra Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   14
 
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
0
oberion Messages postés 1253 Date d'inscription   Statut Membre Dernière intervention   248
 
Re,
Pour commencer, repasse ta fonction focusOn() dans le head de ta page.

Cdlt.
0
oberion Messages postés 1253 Date d'inscription   Statut Membre Dernière intervention   248
 
A bien y réflechir, je me demande si on peut passer un Array comme ça...
Il va peut etre falloir trouver une autre solution.
0