Onmouseover dans un td dans un echo ?

Petit nouveau ! | 9 Messages

07 déc. 2010, 19:57

Salut à tous,

J'ai un bout de code php, qui fait apparaitre des boutons. J' aimerai lui affecter des évènements javascript (onmouseover/out).
Mais voila, cela ne marche pas.

Je crois que c'est un problème de guillemet qui rentre en "colision" avec celles du php, notemment celles du echo.
<?php
function affichePages($nb,$page,$total) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0" ><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td id="numpage" onmouseover=\'mouseOver();\'><a class="numpage" href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo '<br>'."\n";
            }
        }
        echo '</tr></table>'."\n";
}
?>
Comme vous pouvez le voir j'ai testé la technique consistant à mettre des slash, mais rien n'y fait.
Si quelqu'un sait comment contourner ce problème, je suis preneur :mrgreen:

Merci.

ViPHP
xTG
ViPHP | 7331 Messages

07 déc. 2010, 22:20

Pourquoi tout d'un coup des simple quotes ? onMouseOver est un attribut comme un autre, au même titre que id par exemple.

Petit nouveau ! | 9 Messages

07 déc. 2010, 23:59

Ben en fait j'ai tout testé, simple et double guillemet, mais ça reviens au même.

La seule réponse que j'ai trouvé c'est que les quote de l'echo devait géner celle du javascript et qu'il fallait mettre les slash avant.

devlop78
Invité n'ayant pas de compte PHPfrance

08 déc. 2010, 02:17

Je pense qu'il s'agit plutot d'un problème JavaScript. Qu'est censé faire JavaScript à l'appel de mouseOver() ? Comment peut-il savoir qui l'a appelé ?

ViPHP
xTG
ViPHP | 7331 Messages

08 déc. 2010, 09:50

Le code que tu as ne générera aucune erreur PHP (voir la coloration syntaxique qui est correcte).
Donc le seul soucis ne peut venir que de ta fonction js.

Petit nouveau ! | 9 Messages

08 déc. 2010, 12:19

Oui, c'est possible que ça vienne du javascript.

La fonction mouseOver est juste un rollover sur un bouton. En fait j'ai 2 boutons et lorsque je roll dessus je veux qu'ils changent de couleur.
Ils sont gris au départ et je leur ai assigné une couleur orangée.
Je vous met le code entier ci dessous, si des fois ça peut aider.
Merci.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>


<style type="text/css">
#numpage {
	font-family:Arial, Helvetica, sans-serif;
	font-size:14px;
	color:#000000;
	border:thin #CCCCCC solid;
	width:30px;
	height:30px;
	text-align:center;
}

.numpage {
	
	font-family:Arial, Helvetica, sans-serif;
	font-size:14px;
	color:#666666;
}
</style>


<script type="text/javascript">
function mouseOver()
{
document.getElementById("numpage").style.color="#FCO";
}
function mouseOut()
{
document.getElementById("numpage").style.color="#666";
}
</script> 

</head>

<body>




<?php
function affichePages($nb,$page,$total) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0" ><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td id="numpage" onmouseover=\'mouseOver();\'><a class="numpage" href = "'.$page.'?limite='.$limite.'">''.$numeroPages.'</td></a>'."\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo '<br>'."\n";
            }
        }
        echo '</tr></table>'."\n";
}
?>



</body>
</html>