[php] petit problème...

petit problème... [php] - Programmation

Marsh Posté le 25-09-2001 à 19:22:17    

Salut,
 
J'ai fait un script en php qui est le suivant:
 
<html>
<head>
<title>Torver</title>
</head>
<body>
Entrez en entier et en minuscule le modèle de guitare électrique Fender que vous voulez voir apparaître.
<form type="post" action="fender.php3">
<input type="text" name="reponse" value="<? print $reponse; ?>">
<input type="submit" value="ok"></form>
<?php
if ($reponse!="" )
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );
else print ("Non" );
?>
</body>
</html>

 
 
J'ai mis ce script online sur la page http://www.indolive.ovh.org/php/fender.php3
 
Comme vous pouvez le voir ça foire car quand on arrive sur la page il met directement le "Non" alors que je voudrais que ce "Non" apparaisse que si on met une autre variable que celle que j'ai définie par if (strtolower)...
 
Comment faire ?

Reply

Marsh Posté le 25-09-2001 à 19:22:17   

Reply

Marsh Posté le 25-09-2001 à 19:38:02    

salut
 
tu n'as pas mis d'instruction aprés le premier if (cas où le champ est vide). Donc les if qui suivent sont interprétées comme des sous-boucles et donc finalement le else est toujours vrai donc exécuté !

Reply

Marsh Posté le 25-09-2001 à 20:04:38    

rajoute then apres le premier if ou { [je c plus trop c quoi la synthax sous php]

Reply

Marsh Posté le 25-09-2001 à 20:25:34    

si tu met une { ça va faire pareille non ???
 
je pense plutôt qu'il faut mettre une instruction style print ("Non" );  
aprés le premier if !

Reply

Marsh Posté le 25-09-2001 à 20:30:30    

ben s'il ferme ca boucle } avant le else ca devrait etre bon, car s'il remonte le esle il fera tjs les tests et perdra en optimisation de test

Reply

Marsh Posté le 25-09-2001 à 20:45:52    

donc je dois faire ça ?
 
<?php  
if ($reponse!="" )  
{
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );  
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );  
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );  
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" )  
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );  
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );  
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );  
}
else print ("Non" );  
?>

Reply

Marsh Posté le 25-09-2001 à 20:50:00    

si je met le truc du desus le script foire.
 
Mais ce qui est bbizarre c que avec ce script par exemple c nickel:
 
Quelles sont les initiales en minuscules du nom des 2 tours qui se sont écroulés à NY ?
<form type="post" action="index.php3">
<input type="text" name="reponse" value="<? print $reponse; ?>">
<input type="submit" value="ok">
</form>
<?
if ($reponse!="" )
if (strtolower($reponse)=="wtc" ) print("Bingo" );
else print ("Non ce n'est pas " ).$reponse;
?>

Reply

Marsh Posté le 25-09-2001 à 21:24:53    

[reponse sans interet]
Salut hector :hello:
[/reponse sans interet]

Reply

Marsh Posté le 25-09-2001 à 22:32:08    

Salut !
Voilà ce que tu dois mettre :  
 
<html>
<head>
<title>Torver</title>
</head>
<body>
Entrez en entier et en minuscule le modèle de guitare électrique Fender que vous voulez voir apparaître.
<form type="post" action="fender.php3">
<input type="text" name="reponse" value="<? print $reponse; ?>">
<input type="submit" value="ok"></form>
<?php
 
if ($reponse)
{
 
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );
 
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );
 
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );
 
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );
 
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );
 
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );
}
else
{  
print ("Non" );
}
 
?>
</body>
</html>

Reply

Marsh Posté le 25-09-2001 à 22:54:44    

le mieux c'est de factoriser tout ça quand même ...
 
par ex, faire un tableau associatif qui s'occupe de stocker les noms et images correspondantes. enfin le mieux reste une table sql évidemment.
 
$images = array("stratocaster" => "strat_blue_agave.jpg",
    "telecaster" => "tele_blue_agave.jpg",
    "jaguar" => "jag.jpg" );
function check($s)
{
global $images;
 
 $s = strtolower($s);
 if ($images[$s]) echo '<img src="http://www.fender.com/electricguitars/images/' . $images[$s] . '">';
 else echo "aucune entrée trouvée";  
}
 
$input = "jaguar";
check($input);
 
$input = "blahblah";
check($input);

Reply

Marsh Posté le 25-09-2001 à 22:54:44   

Reply

Marsh Posté le 25-09-2001 à 23:22:45    

youdontcare a écrit a écrit :

le mieux c'est de factoriser tout ça quand même ...
 
par ex, faire un tableau associatif qui s'occupe de stocker les noms et images correspondantes. enfin le mieux reste une table sql évidemment.
 
$images = array("stratocaster" => "strat_blue_agave.jpg",
    "telecaster" => "tele_blue_agave.jpg",
    "jaguar" => "jag.jpg" );
function check($s)
{
global $images;
 
 $s = strtolower($s);
 if ($images[$s]) echo '<img src="http://www.fender.com/electricguitars/images/' . $images[$s] . '">';
 else echo "aucune entrée trouvée";  
}
 
$input = "jaguar";
check($input);
 
$input = "blahblah";
check($input);  




 
oui mais ca l'oblige a nommer ses images comme la requete

Reply

Marsh Posté le 25-09-2001 à 23:29:57    

Skylight a écrit a écrit :

 
 
oui mais ca l'oblige a nommer ses images comme la requete  



qu'est ce que tu veux dire ? comprends pas ...

Reply

Marsh Posté le 26-09-2001 à 00:13:38    

bon OK je suis un débutant en php mais je comprend pas pourquoi ne pas mettre ça :  
[i]<?php
if ($reponse!="" )
{
  print ("Veillez entrer un nom !" );
  }

if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );
else print ("Non" );
?>

 
je n'y connais rien en algo mais il me semble que comme ça si le champs est vide, ça s'arréte au début et donc c'est rapide....

Reply

Marsh Posté le 26-09-2001 à 12:04:11    

oui, mais si if (strtolower($reponse)!="cyclone" ) il y aura aussi marqué Non

Reply

Marsh Posté le 26-09-2001 à 12:55:32    

Citation :

[reponse sans interet]  
Salut hector    
[/reponse sans interet]

:hello:  

Citation :

<html>  
<head>  
<title>Torver</title>  
</head>  
<body>  
Entrez en entier et en minuscule le modèle de guitare électrique Fender que vous voulez voir apparaître.  
<form type="post" action="fender.php3">  
<input type="text" name="reponse" value="<? print $reponse; ?>">  
<input type="submit" value="ok"></form>  
<?php  
 
if ($reponse)  
{  
 
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );  
 
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );  
 
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );  
 
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );  
 
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );  
 
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );  
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );  
}  
else  
{  
print ("Non" );  
}  
 
?>  
</body>  
</html>

Ca change rien si je met ça...

Citation :

$images = array("stratocaster" => "strat_blue_agave.jpg",  
   "telecaster" => "tele_blue_agave.jpg",  
   "jaguar" => "jag.jpg" );  
function check($s)  
{  
global $images;  
 
$s = strtolower($s);  
if ($images[$s]) echo '<img src="http://www.fender.com/electricguitars/images/' . $images[$s] . '">';  
else echo "aucune entrée trouvée";  
}  
 
$input = "jaguar";  
check($input);  
 
$input = "blahblah";  
check($input);

ça bugge ce script...

Citation :

]<?php  
if ($reponse!="" )  
{  
 print ("Veillez entrer un nom !" );  
 }  
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );  
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );  
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );  
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );  
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );  
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );  
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );  
else print ("Non" );  
?>

ça change rien non plus...

Reply

Marsh Posté le 26-09-2001 à 12:58:29    

tu utiliserais pas un switch défois que ça serait plus claire...

Reply

Marsh Posté le 26-09-2001 à 13:05:43    

j'ai modifié le script avec { } et ça marche presque:
 
Entrez en entier et en minuscule le modèle de guitare électrique Fender que vous voulez voir apparaître.
<form type="post" action="fender.php3">
<input type="text" name="reponse" value="<? print $reponse; ?>">
<input type="submit" value="ok"></form>
<?php  
if ($reponse!="" ) {
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );  
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );  
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );  
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );  
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );  
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );  
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );
else echo "Non";
}
?>

 
Maintenant quand je vais sur la page de mon script ça marche très bien, y a pas de "Non" écrit maos,par contre si j'écrit stratocaster dans le champs il me met la photo mais il m'écrit à côté "Non"...

Reply

Marsh Posté le 26-09-2001 à 13:50:25    

sorry, j'avais pas vu que j'était != ""
mais je pensais que c'était == ""
 
Je pense que ça serait mieux que tu mettes } avant le else...

Reply

Marsh Posté le 26-09-2001 à 14:03:59    

oloide a écrit a écrit :

sorry, j'avais pas vu que j'était != ""
mais je pensais que c'était == ""
 
Je pense que ça serait mieux que tu mettes } avant le else...  



ça change rien...
 
 :cry:

Reply

Marsh Posté le 26-09-2001 à 14:10:03    

fait un code propre :  
 
if ($truc == "truc" )
{
  instruction1;
}
if ($truc == "truc2" )
{
  instruction2;
}
....
 
et je sais pas peut être que tu trouvera une erreure quelque part !
 
utilise des trucs plus simples du style :  
 
print ("<img src='http://www.fender.com/electricguitars/images/strat_blue_agave.jpg'>");  
 
essayes avec echo() à la place de print ...............
 
je sais pas quoi d'autre moi !!!!

Reply

Marsh Posté le 26-09-2001 à 14:15:18    

hectoras a écrit a écrit :

j'ai modifié le script avec { } et ça marche presque:
 
Entrez en entier et en minuscule le modèle de guitare électrique Fender que vous voulez voir apparaître.
<form type="post" action="fender.php3">
<input type="text" name="reponse" value="<? print $reponse; ?>">
<input type="submit" value="ok"></form>
<?php  
if ($reponse!="" ) {
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );  
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );  
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );  
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );  
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );  
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );  
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );
else echo "Non";
}
?>

 
Maintenant quand je vais sur la page de mon script ça marche très bien, y a pas de "Non" écrit maos,par contre si j'écrit stratocaster dans le champs il me met la photo mais il m'écrit à côté "Non"...  




Normal, quand if ($reponse!="" )
est vrai, tu fait tes tests ensuite il arrive à la ligne
else echo "Non"; qui est directement précédé d'un ; ce quif ait que le else ne corespond à aucune condition et la suite est exécuté à tout les coups.
Voilà une corection qui a des chances de marcher :
 
Entrez en entier et en minuscule le modèle de guitare électrique Fender que vous voulez voir apparaître.
<form type="post" action="fender.php3">
<input type="text" name="reponse" value="<? print $reponse; ?>">
<input type="submit" value="ok"></form>
<?php  
if ($reponse!="" ) {
if (strtolower($reponse)=="stratocaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">" );  
if (strtolower($reponse)=="telecaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">" );  
if (strtolower($reponse)=="jaguar" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">" );  
if (strtolower($reponse)=="jazzmaster" ) print ("<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">" );  
if (strtolower($reponse)=="sub-sonic" ) print ("<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">" );  
if (strtolower($reponse)=="toronado" ) print ("<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">" );  
if (strtolower($reponse)=="cyclone" ) print ("<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">" );
}
else echo "Non";
?>

Reply

Marsh Posté le 26-09-2001 à 15:29:17    

:sarcastic::crazy::crazy::crazy::crazy::crazy::cra
zy::crazy::crazy::crazy::crazy::crazy::crazy::craz
y:
 
ben oui, c'est ce que je dis depuis hier, mais apparemment ça marche pas!!!!:cry::cry:

Reply

Marsh Posté le 26-09-2001 à 16:44:00    

non ça marche pas

Reply

Marsh Posté le 26-09-2001 à 18:25:47    

je pense que c'est ça que tu veux:
http://philgauthier.free.fr/essai/test.php3
source
http://philgauthier.free.fr/essai/test.txt


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 26-09-2001 à 18:38:55    

rowelle ton ficheir txt foire mais merci d'avoir pris la peine de me metre un exemple etc...
 
Mais j'ai enfin trouvé la solution:
 
<html>
<head>
<title>Torver</title>
</head>
<body>
<font face="verdana" size="2">Ecrivez le modèle fender guitare électrique dont vous voulez voir la photo.</font>
<form type="post" action="fender.php3">
<input type="text" name="modele" value="<? echo $modele; ?>">
<input type="submit" value="ok">
</form>
<?php
if ($modele!="" )
if (strtolower($modele)=="stratocaster" ) echo "<img src=\"http://www.fender.com/electricguitars/images/strat_blue_agave.jpg\">";
else if (strtolower($modele)=="telecaster" ) echo "<img src=\"http://www.fender.com/electricguitars/images/tele_blue_agave.jpg\">";
else if (strtolower($modele)=="jaguar" ) echo "<img src=\"http://www.fender.com/electricguitars/images/jag.jpg\">";
else if (strtolower($modele)=="jazzmaster" ) echo "<img src=\"http://www.fender.com/electricguitars/images/jazz.jpg\">";
else if (strtolower($modele)=="sub-sonic" ) echo "<img src=\"http://www.fender.com/electricguitars/images/sub.jpg\">";
else if (strtolower($modele)=="toronado" ) echo "<img src=\"http://www.fender.com/electricguitars/images/toro_orange.jpg\">";
else if (strtolower($modele)=="cyclone" ) echo "<img src=\"http://www.fender.com/electricguitars/images/clone_yellow.jpg\">";
else if (strtolower($modele)=="" ) echo "<font face=\"verdana\" size=\"2\">Veuillez ne pas laisser le champ vide.</font>";
else echo "<font face=\"verdana\" size=\"2\">$modele n'est pas un modéle de guitare électrique fender écrit en minuscule.</font>";
?>
</body>
</html>

 
En fait c parce qu'on peut pas mettre 2 if, il faut metre else if...
 
Merci à tous ceux qui ont posté dans ce topic, c sympa de votre part...

Reply

Marsh Posté le 26-09-2001 à 19:58:24    

hectoras a écrit a écrit :

En fait c parce qu'on peut pas mettre 2 if, il faut metre else if...
 
Merci à tous ceux qui ont posté dans ce topic, c sympa de votre part...  



Bizare ça. Chez moi, j'ai plusieurs scripts qui contiennent plusieurs if imbriqué et qui marchent.

Reply

Marsh Posté le 26-09-2001 à 19:58:46    

tout pareil

Reply

Marsh Posté le 26-09-2001 à 22:50:10    

idem...

Reply

Marsh Posté le 27-09-2001 à 08:31:29    

:??:  :pt1cable:

Reply

Marsh Posté le 27-09-2001 à 09:03:52    

Ben si c'est normal il veut que le 'non' ne s'affiche que s'il l'utilisateur tape quelque chose ne correspondant à aucun modele.
Donc il faut bien mettre des else apres chaque if.
Normalement pour ce cas de figure il vaudrait mieux utiliser l'instruction switch


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 29-09-2001 à 00:15:42    

Oula deja faire 40  if c pas tres propre je trouve... G pas trop matté ton code (la flemme et il est tard lol) mais il me semble k1  switch serai plus approprié et moins lourd.
 
Si tu veux tester si le mec n a rien entré comme marque , utilise un if (empty($reponse))
 
Voila j espere pas avoir dit de conneries lol.
 
++ ninja

Reply

Marsh Posté le 29-09-2001 à 19:01:43    

else if c'est pour la condition exclusive....
 
sinon faut un switch (depuis le temps que je le dis)

Reply

Marsh Posté le 29-09-2001 à 19:23:24    

c comment quon fait un switch ?
 
Sibnon jenregsitre pas les imahges car c aps pour mes sites que je fais ça c pour mentrainer à programmer en php...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed