PHP <Select name="lang">... Need Help !
Résolu
aurelbo
Messages postés
548
Date d'inscription
Statut
Membre
Dernière intervention
-
aurelbo Messages postés 548 Date d'inscription Statut Membre Dernière intervention -
aurelbo Messages postés 548 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant en PHP (encore un) ;) et je dois dire que ça m'éclate (la tête contre le mur ~_~° ) !
Je souhaite faire un site multilingue avec une méthode de select.
Index.php
Et la partie gestion de la langue :
en-lang.php
Le problème dans toute cette histoire.... C'est qu'il y en a un XD (soyez indulgent avec mes blagues à deux balles je craque ^_^° )
Je n'arrive pas à récupérer la valeur (qui me tient à coeur) lang pour faire les tests et gérer la langue en fonction du choix de l'utilisateur.
erreur :
Notice: Undefined index: lang
Si quelqu'un veut bien daigner partager son expérience/savoir pour me tirer de ce pétrin ce serait gentil.
Je suis débutant en PHP (encore un) ;) et je dois dire que ça m'éclate (la tête contre le mur ~_~° ) !
Je souhaite faire un site multilingue avec une méthode de select.
Index.php
<form method="post" action="index.php"> <select name="lang"> <option value="es">Español </option> <option value="fr">Français </option> <option value="en" selected="selected">English </option> <option value="d">Wörterbuch </option> </select> <input type="Submit" value"OK"/> </form> <?php if ($_POST['lang']=="es") { include 'es-lang.php'; } if ($_POST['lang']=="en") { include 'en-lang.php'; } if ($_POST['lang']=="d") { include 'd-lang.php'; } if ($_POST['lang']=="fr") { include 'fr-lang.php'; } ?>
Et la partie gestion de la langue :
en-lang.php
<?php define( "hello" ,"Hello World !"); echo hello; ?>
Le problème dans toute cette histoire.... C'est qu'il y en a un XD (soyez indulgent avec mes blagues à deux balles je craque ^_^° )
Je n'arrive pas à récupérer la valeur (qui me tient à coeur) lang pour faire les tests et gérer la langue en fonction du choix de l'utilisateur.
erreur :
Notice: Undefined index: lang
Si quelqu'un veut bien daigner partager son expérience/savoir pour me tirer de ce pétrin ce serait gentil.
A voir également:
- PHP <Select name="lang">... Need Help !
- Easy php - Télécharger - Divers Web & Internet
- Need for speed network - Télécharger - Jeux vidéo
- Expert php pinterest - Télécharger - Langages
- Télécharger need for speed pc gratuit complet - Télécharger - Jeux vidéo
- Display name c'est quoi - Forum Mobile
3 réponses
Bonjour,
J'ai testé, ça fonctionne. Mon "echo" affiche la valeur.
Pourant je n'ai quasiment rien modifié.
essai à nouveau !
DarkyGammmme
???? Mettez-le sous corticoïdes et faîtes-lui une biopsie cérébrale. ????
Dr.House
J'ai testé, ça fonctionne. Mon "echo" affiche la valeur.
Pourant je n'ai quasiment rien modifié.
<form method="post" action="index.php"> <select name="lang"> <option value="es">Español </option> <option value="fr">Français </option> <option selected value="en">English </option> <option value="de">Wörterbuch </option> </select> <input type="Submit" value"OK"/> </form> <?php if ($_POST['lang']=="es") { include 'es-lang.php'; } if ($_POST['lang']=="en") { include 'en-lang.php'; } if ($_POST['lang']=="d") { include 'd-lang.php'; } if ($_POST['lang']=="fr") { include 'fr-lang.php'; } echo $_POST['lang']; ?>
essai à nouveau !
DarkyGammmme
???? Mettez-le sous corticoïdes et faîtes-lui une biopsie cérébrale. ????
Dr.House
aurelbo
Messages postés
548
Date d'inscription
Statut
Membre
Dernière intervention
82
Effectivement XD ça marche ;) dsl du dérangement XD
Bonjour,
Le problème, c'est que tu places ton formulaire et l'action à réaliser sur la même page. Du coup, à l'affichage du formulaire, avant même que l'utilisateur ait pu lui cliquer dessus, il va déjà aller chercher le $_POST['lang'] ! Qui n'a, évidemment, pas encore été défini.
La meilleure solution dans ce cas-là, c'est de vérifier son existence avant de l'utiliser.
Accessoirement, tu auras également un (petit) soucis avec la sélection de la langue qui restera sur English même si la page sélectionnée et affichée est devenue l'espagnol.
Si on rajoute que l'utilisation de switch()...case... dans ton cas est plus adaptée que la série de if(), même si celle-ci fonctionne, ton code donnerait donc :
Si tu es sûr que tes fichiers s'appelleront toujours comme ça, tu peux même remplacer tout le bloc d'inclusion par cette ligne unique :
include $lang.'-lang.php';
Xavier
Le problème, c'est que tu places ton formulaire et l'action à réaliser sur la même page. Du coup, à l'affichage du formulaire, avant même que l'utilisateur ait pu lui cliquer dessus, il va déjà aller chercher le $_POST['lang'] ! Qui n'a, évidemment, pas encore été défini.
La meilleure solution dans ce cas-là, c'est de vérifier son existence avant de l'utiliser.
Accessoirement, tu auras également un (petit) soucis avec la sélection de la langue qui restera sur English même si la page sélectionnée et affichée est devenue l'espagnol.
Si on rajoute que l'utilisation de switch()...case... dans ton cas est plus adaptée que la série de if(), même si celle-ci fonctionne, ton code donnerait donc :
<?php // Récupération de la langue choisie, avec "en" comme valeur par défaut. $lang = (isset($_POST['lang'])) ? $_POST['lang'] : 'en'; ?> <form method="post" action="index.php"> <select name="lang"> <option value="es">Español <?php echo(($lang == 'es') ? 'selected="selected"' : ''; ?> </option> <option value="fr">Français <?php echo(($lang == 'fr') ? 'selected="selected"' : ''; ?> </option> <option value="en" <?php echo(($lang == 'en') ? 'selected="selected"' : ''; ?> </option> <option value="d">Wörterbuch <?php echo(($lang == 'd') ? 'selected="selected"' : ''; ?> </option> </select> <input type="Submit" value"OK"/> </form> <?php $aInclure = ''; switch ($lang) { case 'es': $aInclure = 'es-lang.php'; break; case 'en': $aInclure = 'en-lang.php'; break; case 'fr': $aInclure = 'fr-lang.php'; break; case 'd': $aInclure = 'd-lang.php'; break; } include $aInclure; ?>
Si tu es sûr que tes fichiers s'appelleront toujours comme ça, tu peux même remplacer tout le bloc d'inclusion par cette ligne unique :
include $lang.'-lang.php';
Xavier