petit problème... [php] - Programmation
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é !
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]
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 !
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
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" );
?>
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;
?>
Marsh Posté le 25-09-2001 à 21:24:53
[reponse sans interet]
Salut hector
[/reponse sans interet]
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>
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);
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
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 ...
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....
Marsh Posté le 26-09-2001 à 12:04:11
oui, mais si if (strtolower($reponse)!="cyclone" ) il y aura aussi marqué Non
Marsh Posté le 26-09-2001 à 12:55:32
Citation : [reponse sans interet] |
Citation : <html> |
Ca change rien si je met ça...
Citation : $images = array("stratocaster" => "strat_blue_agave.jpg", |
ça bugge ce script...
Citation : ]<?php |
ça change rien non plus...
Marsh Posté le 26-09-2001 à 12:58:29
tu utiliserais pas un switch défois que ça serait plus claire...
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"...
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...
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...
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 !!!!
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";
?>
Marsh Posté le 26-09-2001 à 15:29:17
: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:
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
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...
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.
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
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
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)
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...
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 ?