Page 1 sur 1

Probleme avec un script d'image

Posté : 21 déc. 2005, 23:08
par cadav0r
Bonjour,

Voici le script incriminé :
	echo "<SCRIPT type=\"text/javascript\">\n";
	echo "<!--\n";
	echo "function showcar() {\n";
	echo "var carsel = document.EditGame.m_game2.options[document.EditGame.m_game2.selectedIndex].value;\n";
	echo "var car = Replace('' + carsel + '',' ','');\n";
	echo "if (!carsel) {\n";
	echo "document.images.carimg.alt='';\n";
	echo "document.images.carimg.src='';\n";
	echo "} else {\n";
	echo "document.images.carimg.alt='' + carsel + '';\n";
	echo "document.images.carimg.src='data/game/gtr/images/' + car + '.gif';\n";
	echo "}\n";
	echo "}\n";
	echo "//-->\n";
	echo "</SCRIPT>\n\n";
Celui-ci est lié a une liste déroulante :
	$mcimgcar = str_replace(" ","","$mc[m_game2]");
	echo "<tr><td>"._MCGTRCAR.":</td>
	<td><select name=\"m_game2\" onChange=\"showcar()\">
		<option value=\"\">"._MCCHOICE."</option>
		<option value=\"BMW\" "; if ($mc[m_game2] == "BMW") { echo "selected"; } echo ">BMW</option>
		<option value=\"Corvette\" "; if ($mc[m_game2] == "Corvette") { echo "selected"; } echo ">Corvette</option>
		<option value=\"Ferrari F550\" "; if ($mc[m_game2] == "Ferrari F550") { echo "selected"; } echo ">Ferrari F550</option>
		<option value=\"Ferrari F575\" "; if ($mc[m_game2] == "Ferrari F575") { echo "selected"; } echo ">Ferrari F575</option>
		<option value=\"Ferrari 360\" "; if ($mc[m_game2] == "Ferrari 360") { echo "selected"; } echo ">Ferrari 360</option>
		<option value=\"Lamborghini\" "; if ($mc[m_game2] == "Lamborghini") { echo "selected"; } echo ">Lamborghini</option>
		<option value=\"Lister\" "; if ($mc[m_game2] == "Lister") { echo "selected"; } echo ">Lister</option>
		<option value=\"Lotus\" "; if ($mc[m_game2] == "Lotus") { echo "selected"; } echo ">Lotus</option>
		<option value=\"Morgan\" "; if ($mc[m_game2] == "Morgan") { echo "selected"; } echo ">Morgan</option>
		<option value=\"Porsche 993 GT2\" "; if ($mc[m_game2] == "Porsche 993 GT2") { echo "selected"; } echo ">Porsche 993 GT2</option>
		<option value=\"Porsche 996 GT3\" "; if ($mc[m_game2] == "Porsche 996 GT3") { echo "selected"; } echo ">Porsche 996 GT3</option>
		<option value=\"Saleen\" "; if ($mc[m_game2] == "Saleen") { echo "selected"; } echo ">Saleen</option>
		<option value=\"Viper\" "; if ($mc[m_game2] == "Viper") { echo "selected"; } echo ">Viper</option>
	</select><br><br><center><img name=\"carimg\" src=\"data/game/gtr/images/".$mcimgcar.".gif\" border=\"0\" alt=\"$mc[m_game2]\"></center></td></tr>";
Le script marche trés bien si on commente la ligne "var car" et si on change la ligne ou est appélé " ' + car + ' "

Le replace sert a supprimer les espace dans le value du select car le nom des images est sans espace...

Le formulaire s'appelle "EditGame".

Merci de votre aide...

Posté : 22 déc. 2005, 01:39
par Truc
Salut, je sais pas vraiment ce que tu veut remplacer dans le code mais regarde toujours comment se passe un "replace" en javascript.

Posté : 22 déc. 2005, 12:21
par cadav0r
J'edite mon premier message pour plus d'explication...

Posté : 22 déc. 2005, 12:40
par cadav0r
Bon grace à Truc le script fonctionne (enfin ne genere plus d'erreur!!!) mais la fonction replace ne fait pas son office... :cry:

Code : Tout sélectionner

echo "<SCRIPT type=\"text/javascript\">\n"; echo "<!--\n"; echo "function showcar() {\n"; echo "var carsel = document.EditGame.m_game2.options[document.EditGame.m_game2.selectedIndex].value;\n"; echo "var car = carsel.replace(' ','');\n"; echo "if (!carsel) {\n"; echo "document.images.carimg.alt='';\n"; echo "document.images.carimg.src='';\n"; echo "} else {\n"; echo "document.images.carimg.alt='' + carsel + '';\n"; echo "document.images.carimg.src='data/game/gtr/images/' + car + '.gif';\n"; echo "}\n"; echo "}\n"; echo "//-->\n"; echo "</SCRIPT>\n\n";

Posté : 22 déc. 2005, 12:53
par Cyrano
J'ai toujours du mal à comprendre ce besoin de mettre du code non PHP dans du PHP : séparer les langages, ça allège le fonctionnement des application et c'est en outre plus clair à lire ensuite.

Pour ce qui est du Replace, attention, JavaScript est parfois sensible à la casse. Proposition de correction globale, première partie:
<?php
//....
?>
<script type="text/javascript">
<!--
function showcar()
{
    var carsel = document.EditGame.m_game2.options[document.EditGame.m_game2.selectedIndex].value;
    var car = carsel.replace(' ','');
    if (!carsel)
    {
        document.images.carimg.alt='';
        document.images.carimg.src='';
    }
    else
    {
        document.images.carimg.alt='' + carsel + '';
        document.images.carimg.src='data/game/gtr/images/' + car + '.gif';
    }
}
//-->
</script>
<?php
Seconde partie:
<?php
$mcimgcar = str_replace(" ", "", $mc['m_game2']);
?>
  <tr>
    <td><?php echo(_MCGTRCAR); ?>:</td>
    <td>
      <select name="m_game2" onChange="showcar()">
        <option value=""><?php echo(_MCCHOICE); ?></option>
        <option value="BMW"<?php if ($mc['m_game2'] == "BMW") { echo " selected"; } ?>>BMW</option>
        <option value="Corvette"<?php if ($mc['m_game2'] == "Corvette") { echo " selected"; } ?>>Corvette</option>
        <option value="Ferrari F550"<?php if ($mc['m_game2'] == "Ferrari F550") { echo " selected"; } ?>>Ferrari F550</option>
        <option value="Ferrari F575"<?php if ($mc['m_game2'] == "Ferrari F575") { echo " selected"; } ?>>Ferrari F575</option>
        <option value="Ferrari 360"<?php if ($mc['m_game2'] == "Ferrari 360") { echo " selected"; } ?>>Ferrari 360</option>
        <option value="Lamborghini"<?php if ($mc['m_game2'] == "Lamborghini") { echo " selected"; } ?>>Lamborghini</option>
        <option value="Lister"<?php if ($mc['m_game2'] == "Lister") { echo " selected"; } ?>>Lister</option>
        <option value="Lotus"<?php if ($mc['m_game2'] == "Lotus") { echo " selected"; } ?>>Lotus</option>
        <option value="Morgan"<?php if ($mc['m_game2'] == "Morgan") { echo " selected"; } ?>>Morgan</option>
        <option value="Porsche 993 GT2"" if ($mc['m_game2'] == "Porsche 993 GT2") { echo " selected"; } ">Porsche 993 GT2</option>
        <option value="Porsche 996 GT3"<?php if ($mc['m_game2'] == "Porsche 996 GT3") { echo " selected"; } ?>>Porsche 996 GT3</option>
        <option value="Saleen"<?php if ($mc['m_game2'] == "Saleen") { echo " selected"; } ?>>Saleen</option>
        <option value="Viper"<?php if ($mc['m_game2'] == "Viper") { echo " selected"; } ?>>Viper</option>
      </select><br>
      <br>
      <center><img name="carimg" src="data/game/gtr/images/<?php echo($mcimgcar); ?>.gif" border="0" alt="<?php echo($mc['m_game2']); ?>"></center>
    </td>
  </tr>
<?php
Un site à garder dans tes favoris : aidejavascript.com

Posté : 22 déc. 2005, 14:20
par cadav0r
Mes pages sont entierement en php donc... :roll:

Pour ce qui est de la sensibilité a la casse je suis d'accord mais je savais qu'il existait un espace minuscule et un espace majuscule... :wink:

Posté : 22 déc. 2005, 20:19
par Cyrano
Mes pages sont entierement en php donc...
Et alors ? Ça ne change rien et faire du code comme celui que tu nous as montré alourdit le fonctionnement de l'application parce que l'interpréteur PHP devrait d'abord tout analyser pour constater que telle partie n'est pas du PHP et le retournera donc tel quel. En faisant comme je te l,ai indiqué, l'intpréteur n'analysera QUE ce qui est entre <?php et ?>, le reste sera directement envoyé au navigateur. Or le HTML et le JavaScript sont interprétés par le navigateur. Une double interprétation serveur puis client est inutile et ralentit les performances globales de ton application.

Posté : 22 déc. 2005, 22:13
par cadav0r
Ok merci pour ces infos je prend note

Mais cela ne resoud pas mon probleme... :wink:

Posté : 22 déc. 2005, 22:15
par Cyrano
As-tu testé ma version de code, j'ai fait une modif dans le JavaScript.

Posté : 23 déc. 2005, 12:19
par cadav0r
Peut-tu me dire où que je vois où est mon erreur???

Posté : 23 déc. 2005, 12:21
par Cyrano
//...
 var car = carsel.replace(' ',''); 
//...

Posté : 23 déc. 2005, 12:34
par cadav0r
Bon effectivement ca marche mais a moitié car il remplace qu'un seul espace donc lorsqu'il y en a plusieurs ca foire...