8796 sujets

Développement web côté serveur, CMS

Voilà je débute et je souhaitais réaliser une page avec un menu déroulant qui affiche des contenues différents dans une iframe.
Mais en cherchant un peu sur ce forum on réalise vite que l'iframe est une fonction révolue.
Alors j'ai voulus la remplacer par la fonction include.

Déjà ai-je choisie la bonne méthode?

Ensuite je voyais quelque chose comme ça mais c'est loin de fonctionner Smiley decu

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <label>model
  <select name="select">
    <option>Choix</option>
    <option value="1">Outland Jaune</option>
    <option value="2">Outland roulotte</option>
  </select>
  </label>
</form>
<?php
if ($_POST[['option value'] == "1")
	{include("outlandj.php");
if ($_POST['option value'] == "2")
	{include("outlandr.php");
 }
    
    ?>

</body>
</html>


Je me doute qu'il y a des erreurs mais je rappel que je débute de zéro
Si quelqu'un pouvais me guider ça serai avec plaisir.

Cordialement Overcraft
lorsque tu lis la valeur renvoyé par l'élement select tu dois utiliser :


$_POST['select']


au lieu de

$_POST[['option value']



'select' est la valeur de l'attribut name de ton élément de formulaire

<select name="select">


on peut comparer l'utilisation des élements de formulaire a des variables on leur attrtibut un nom et ensuite on lis leur valeur suivant la méthode d'envoie du formulaire get ou post
Modifié par zzs (16 Jan 2009 - 09:22)
Désolé de l'absence j'étais en formation prof.
J'ai modifier la ligne:
$_POST['select']

Une fois hébergé j'ai une page blanche ?

Quelqu'un pourrai me dire pourquoi.
lien de la pagehttp://hdpano.ath.cx/cfaow/fylou/com.php
Hello overcraft,

en voyant ton code je pense qu'il y a une confusion importante : ce n'est pas parce que tu vas placer ton code PHP après le formulaire qu'il va être exécuté après que tu aies sélectionné une option dans la liste déroulante ! Smiley langue

PHP est un langage serveur et en tant que tel il est exécuté avant la génération de ta page html : il faut donc soumettre ton formulaire (typiquement cela se fait à l'aide d'un INPUT de type submit) et c'est seulement à ce moment là que tes variables seront accessibles.

Je t'invite à reprendre les choses du début sur un site dont c'est la vocation (comme par exemple sur phpdebutant.org).

Bonne continuation. Smiley smile
Modifié par Heyoan (24 Jan 2009 - 13:52)
Voilà j'ai avancé un peu
J'arrive désormais à afficher le résultat de mon menu déroulant.
Par contre ma fonction "SI" ne fonctionne pas et je ne voie pas pourquoi

<?php
function choixParDefaut($choix) // Création de la fonction
{
$par_defaut = ''; // On crée une variable (vide par défaut) que l'on retournera à la fin

    if (isset($_POST['choix'])) // Si le visiteur a choisi une couleur
    {
        if ($_POST['choix'] == $couleur) // Si cette couleur correspond à la couleur que l'on est en train de traiter
        {
            $par_defaut='selected="selected"'; // Alors on modifie la variable que l'on retournera et on lui met selected
        }
    }

return $par_defaut; // On ne retourne rien si ce n'était pas la couleur choisie, selected si c'était la bonne couleur
}


// -------------- Fin de la fonction ---------------


if (isset($_POST['choix'])) // On vérifie si le visiteur a déjà choisi une couleur
{
    echo '<p>Vous avez Choisie le modèle : ' . htmlspecialchars($_POST['choix']) . '</p>';
	
}
?>


<p>Quelle modèle avez vous choisie ?</p>

<form method="post">
<p>
    <select name="choix">
      <option value="Outland_J">Outland Jaune</option>
      <option value="Outland_R">Outland Roulotte</option>
      <option value="Outland_P">Outland Pourpre</option>
      <option value="Outland_K">Outland</option>
    </select>
    <input type="submit" value="OK" />
</p>
</form>
<?php
if ($choix == "Outland_J"){
    include $choix."Outland_J.php";
}


elseif ($choix == "Outland_R"){
    include $choix."Outland_R.php";
}

elseif ($choix == "Outland_P"){
    include $choix."Outland_P.php";
}

elseif ($choix == "Outland_K"){
    include $choix."Outland_K.php";
}

?>


Si quelqu'un pouvais m'éclairer je lui en serais fort reconnaissant.
Salut,

tes if sont bien imbriqués... mais il te manque encore quelques bases en PHP. Smiley cligne

Par exemple :
* tu as une fonction choixParDefaut que tu n'appelles jamais.
* la fonction en question n'a d'ailleurs aucune chance de fonctionner car :
1) tu n'utilises pas la variable $choix censée être passée en paramètre.
2) tu utilises une variable $couleur qui n'est jamais initialisée.
* tu testes plus loin la valeur de $choix qui devrait être vide (en supposant que register_globals soit bien à off comme cela est préconisé).
* tu fais ensuite un include mais je serais surpris que les noms des fichiers soient Outland_JOutland_J.php ou Outland_ROutland_R.php ! Smiley langue

Et sinon tu pourrais essayer :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test</title>
</head>
<body>
<?php
function choixParDefaut($option) {
	$par_defaut = '';
    if ( !empty($_POST['choix']) && $_POST['choix'] == $option ) {
		$par_defaut=' selected="selected"';
    }
	return $par_defaut;
}

$choix = !empty($_POST['choix']) ? $_POST['choix'] : '';
$options = array(
	'Outland_J' => 'Outland Jaune',
	'Outland_R' => 'Outland Roulotte',
	'Outland_P' => 'Outland Pourpre',
	'Outland_K' => 'Outland'
);

if ($choix) {
    echo '<p>Vous avez choisi le modèle : ' . $options[$choix] . "</p>\n";
}
?>
<p>Quel modèle avez vous choisi ?</p>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<p>
	<select name="choix" id="choix">
<?php
foreach($options as $option=>$libelle) {
	echo "\t\t".'<option value="'.$option.'"'.choixParDefaut($option).'>'.$libelle."</option>\n";
}
?>
    </select>
    <input type="submit" value="OK" />
</p>
</form>
<?php
if(array_key_exists($choix, $options)) include $choix.".php";
?>
</body>
</html>

Modifié par Heyoan (05 Feb 2009 - 22:36)