Page 1 sur 1
Liste déroulante affichage même page
Posté : 25 mai 2017, 18:14
par JP5601
Bonjour,
J'ai un dossier avec une cinquante de pages php et je voudrais afficher ces pages à l'aide dune liste déroulante mais je voudrais quelle s'affiche en dessous de ma liste déroulante sur la même page. Un peu comme un include mais en sélectionnant dans une liste déroulante.
Actuellement j'ai une liste déroulante mais la page sélectionnée s'affiche à la place de ma liste.
Je ne sais pas si on peux modifié ma liste déroulante je ne pense pas, c'est pour ça que je me tourne vers vous.
le code ma liste déroulante actuelle
<script LANGUAGE="JavaScript">
var target = "blank" //Destination des URL: "blank", "top" "self" ou "nom du cadre"
function envoie(frm){URL = frm.mgros.options[frm.mgros.selectedIndex].value
if (frm.mgros.selectedIndex != 0){
if (target == "blank") mywindow = window.open(''+URL+'');
else if (target == "self") document.location = URL;
else parent.frames[target].location = URL;
}}
//-->
</script>
<form name="Form_1">
<select NAME="mgros"
onChange="envoie(this.form)"
style="font-family: Verdana; font-size: 10pt;background-color:#910000; color:#ffffff" size="1">
<option SELECTED>TITRE DE VOTRE MENU</option>
<option VALUE="http://www.Adresse">Titre de vos liens</option>
<option VALUE="http://www.Adresse">Titre de vos liens</option>
</select>
</form>
Re: Liste déroulante affichage même page
Posté : 26 mai 2017, 03:14
par Robervale
Tes pages ont quelles extensions?? (.php ou .html)
Re: Liste déroulante affichage même page
Posté : 26 mai 2017, 06:23
par JP5601
Toutes mes pages ont l'extension .php
Re: Liste déroulante affichage même page
Posté : 26 mai 2017, 14:16
par kevin254kl
Bonjour,
Je pense qu'il faut utiliser une iframe
Tu vas mettre les liens en statique?
Re: Liste déroulante affichage même page
Posté : 26 mai 2017, 16:32
par JP5601
Ca ne me plait pas trop les iframe
Qu'est ce tu entends par lien en stitiques
Re: Liste déroulante affichage même page
Posté : 26 mai 2017, 21:52
par Aureusms
Peut-être utiliser un ajax après le menu déroulant ?
1. Le menu déroulant récupère la page à afficher
2. Tu interroges la page en AJAX
3. si tu as un retour, tu créé une div dans ta page pour afficher le contenu de ton retour AJAX.
Re: Liste déroulante affichage même page
Posté : 26 mai 2017, 23:22
par JP5601
En faite je ne sais du tout comment faire, j'y connais rien en ajax
Re: Liste déroulante affichage même page
Posté : 27 mai 2017, 09:33
par Aureusms
Ok je vais essaye de t'aider. Si tu prends un formulaire ainsi :
<form>
<select id="mgros" style="font-family: Verdana; font-size: 10pt;background-color:#910000; color:#ffffff" size="1">
<option selected="SELECTED" disabled="disabled">TITRE DE VOTRE MENU</option>
<option value="http://www.Adresse2.html">Titre de vos liens 2</option>
<option value="http://www.Adresse3.php">Titre de vos liens 3</option>
</select>
</form>
Le but, si j'ai bien compris est de récupérer la valeur de l'option ie. "
http://www.Adresse2.html" par exemple et d'afficher le contenu à la suite de la page.
Ce que je ne sais pas : si tu peux aller sur des sites hors d'où est localiser ton script AJAX ie. localhost mais on va tester comme si l'AJAX le pouvait. Ainsi, avec le script AJAX suivant :
<script LANGUAGE="JavaScript">
$(document).on({
change : function(event) {
//ces deux lignes récupèrent le select en tant qu'objet
var element = event.target||event.srcElement;
var select = $(element);
//on récupère la valeur sélectionnée de l'objet select
var value = select.val();
//on lance l'AJAX avec la value récupérée
$.ajax ({
url : value,
data : {},
type : "post",
cache : false,
complete : function (xhr, result) {
//si erreur = on annule la fin du script
if (result != "success") return;
//on récupère ici le retour de l'AJAX
var reponse = xhr.responseText;
//on vérifie qu'une DIV possèdant une classe ajouteParAjax n'existe pas sinon on la créée
if ($('body').find('.ajouteParAjax').lenght == 0) {
var div = document.createElement('div');
$(div).addClass('ajouteParAjax').appendTo('body');
}
//on ajoute le retour de l'AJAX dans la div créée ou récupérée.
$('.ajouteParAjax').html(reponse);
}
});
}
},'#mgros');
</script>
Quand le select est "changé", la fonction est lancée. Lis les commentaires pour comprendre comment cela fonctionne. en fait, c'est hyper simple.
Re: Liste déroulante affichage même page
Posté : 27 mai 2017, 11:57
par JP5601
Merci beaucoup pour ton aide.
Je me suis permis de modifié une ligne car mes fichiers sont .php et non en .html, j'ai modifié cette ligne
//on ajoute le retour de l'AJAX dans la div créée ou récupérée.
$('.ajouteParAjax').php(reponse);
Je ne sais pas s'il fallait le faire ou non.
J'ai mis le script sur ma page, mais en sélectionnant dans le menu déroulant, rien ne s'affiche.
Je pense que ça vient de la localisation du script ajax.
En lisant les commentaires, c'est vrai que ça parait simple, mais juste en apparence

Re: Liste déroulante affichage même page
Posté : 28 mai 2017, 01:16
par Robervale
Salut si c'est en PHP que tu le veux voici un pti script de base pour ce genre de truc... J'espere de cela t'aidera:
<form method="get">
<select name="url_dossier">
<?php
//pour prendre tout les fichiers venant de ce dossier (pages)
$local_files = glob("pages/*");
foreach($local_files as $file){
?>
<option>
<a href="index.php?url=<?= $file; ?>">
<?= $file; ?>
</a>
</option>
<?php
}
?>
</select>
<input type="submit" name="ok">
</form>
<?php
if (!empty($_GET['url_dossier'])) {
$dossier = $_GET['url_dossier'];
include $dossier;
}
?>
Re: Liste déroulante affichage même page
Posté : 28 mai 2017, 08:10
par JP5601
J'ai modifié url_dossier, j'ai mis le nom de mon dossier.
Faut-il que je modifié
<a href="index.php?url=<?= $file; ?>">
Et ou est ce que je mets le nom de toutes ma pages qui se trouvent dans mon dossier
Re: Liste déroulante affichage même page
Posté : 28 mai 2017, 09:46
par Robervale
c'est plutôt $local_files = glob("pages/*"); qu'il faut modifier (ce qui ce trouve dans la paranthèse --- pages/ --)
tu peux mettre $local_files = glob("nom_de_ton_dossier/*");
ou le chemin de celui-ci
Re: Liste déroulante affichage même page
Posté : 28 mai 2017, 11:34
par JP5601
Nickel, ça fonctionne.
Mais dans le menu déroulant s'affiche le nom des fichiers, ce qui est normal, moi j'aurais voulu un autre nom
exemple: mon fichier s'appelle stats-2017-01.php, j'aurais voulu que ça s'affiche Janvier 2017, sans l'extension, de plus j'ai également les dossiers qui se trouvent dans mon dossier qui se trouvent dans le menu déroulant. En faite je voudrais juste que certains fichiers dans mon menu déroulant sans les dossiers.
Re: Liste déroulante affichage même page
Posté : 28 mai 2017, 15:58
par or 1
pour n'avoir que les php :
$local_files = glob("pages/*.php");
Re: Liste déroulante affichage même page
Posté : 28 mai 2017, 16:14
par JP5601
pour n'avoir que les php :
$local_files = glob("pages/*.php");
Oui ça j'avais trouver, mais ça ne règle pas le problème des noms