Probleme avec un script d'image

Eléphanteau du PHP | 43 Messages

21 déc. 2005, 23:08

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...
Modifié en dernier par cadav0r le 22 déc. 2005, 12:29, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 déc. 2005, 01:39

Salut, je sais pas vraiment ce que tu veut remplacer dans le code mais regarde toujours comment se passe un "replace" en javascript.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 43 Messages

22 déc. 2005, 12:21

J'edite mon premier message pour plus d'explication...

Eléphanteau du PHP | 43 Messages

22 déc. 2005, 12:40

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";

Mammouth du PHP | 19672 Messages

22 déc. 2005, 12:53

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 43 Messages

22 déc. 2005, 14:20

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:

Mammouth du PHP | 19672 Messages

22 déc. 2005, 20:19

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 43 Messages

22 déc. 2005, 22:13

Ok merci pour ces infos je prend note

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

Mammouth du PHP | 19672 Messages

22 déc. 2005, 22:15

As-tu testé ma version de code, j'ai fait une modif dans le JavaScript.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 43 Messages

23 déc. 2005, 12:19

Peut-tu me dire où que je vois où est mon erreur???

Mammouth du PHP | 19672 Messages

23 déc. 2005, 12:21

//...
 var car = carsel.replace(' ',''); 
//...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 43 Messages

23 déc. 2005, 12:34

Bon effectivement ca marche mais a moitié car il remplace qu'un seul espace donc lorsqu'il y en a plusieurs ca foire...