[php] ouvrir un lien dans une div

Salut,

mon problème n’est pas compliqué, mais ça me rend fou : est-il possible, autrement que par le php (include je crois), de faire ouvrir des liens se situant dans une div dans une autre div ? (barre de menu, liens s’ouvrant dans el bloc du dessous)

mmh… ben ça dépend ce que tu as à afficher dans la div en question. Si c’est des trucs “basiques” tu fait ça en javascript genre :

< a href=# onclick=“mafonction()”>mon lien< / a >

function mafonction()
{
document.getElementById(“monDiv”).innerHTML = “mon tout nouveau texte dans ma div!! youpi”;
}

(en gros, j’écris ça de tête, la syntaxe est peut être pas bonne)

S’il faut afficher des trucs plus complexes, là faut aller chercher plus loin avec AJAX par exemple (en utilisant le framework javascript prototype tu fais ça en 2 temps 3 mouvements par exemple)(je veux pas lancer de débats sur les frameworks javascript, c’est juste le seul que je connais aujourd’hui)

GROS doute après relecture du premier post : le div d’origine c’est le menu et le div de destination c’est tout le reste du site ? tu peux être un peu plus clair ?

edit : langue française

Sinon y’a 5 ans on utilisait des pour afficher des pages à l’intérieur d’autres pages, par exemple.

Bah oui, je connais les iframes, mais bon je voudrais eviter d’utiliser un truc complètement obsolète.

Sur ma homepage, j’ai une div qui me sert de « menu » avec 4 liens menant vers 4 pages qui sont les « sections » de mon site.
je souhaite qu’en clickant sur les liens du menu, la page choisie s’affiche dans une div centrale.

Alors ahah est pour toi, tu mets ahah et ahahDone dans un fichier .js, puis tu fais des liens genre <a href="#" onclick="java script:ahah('page.php','bloc');">lien</a> et un <div id="bloc"></div> dans ta page et zou ! Normalement ça marche …

désolé de la question, mais j’ai du mal a adapter le lien, page.php c’est la page que je souhaite faire apparaitre dans ma div ?
a ce moment la, je remplace le # par quoi ?
peu importe le nom du fichier .js ? (oui je suis pas au top non plus en javascript)

Le premier paramètre de ahah c’est la page à charger, le doit rester tel quel, sinon le lien va être actif et envoyer sur une page au lieu de juste appeler la fonction ahah(). Le fichier .js s’appelle comme tu veux et tu l’appelles de cette façon (perso je l’appelle functions.js parce que j’ai plein de fonctions) : [code]

Titre [/code]

Je pense avoir un code correct, pour aucun résultat :confused:
j’ai fait quelque chose basique pour tester

test est la div qui contient mon lien (le menu), test2 est la div qui est sensée afficher la page que je souhaite appeler. cette page est pagetest.html.
dans la page que je veux appeler, j’ai simplement mis une ligne de texte, pour tester.

[code]

<!--

#test
{
height: 50px;
width: 150px;
background-color: #838383;
float: left;
text-align: center
}

#test2
{
height: 400;
width: 400;
background-color: #bef0b3
}

lien!

[/code]

Petite note, si t’as envie que toutes les pages de ton site soient correctement référencées, dans google par exemple, c’est une très mauvaise idée.

Ce n’est pas vraiment une suggestion puisque j’imagine que tu y as déjà réfléchi, mais pourquoi ne pas juste recharger toute ta page, menu compris ?

Edit : ton div “test” n’est pas correctement fermé. Je sais pas si ça vient de là, mais pour manipuler du HTML avec DOM, c’est mieux si il est bien écrit…

si je referme ma div test, les deux div se chevauchent, donc je n’ai fermé qu’après la seconde div, je ne pensais pas que c’était incorrect

(ceci dit ca ne change rien)

recharger la page entière j’y ai pensé oui, mais en fait j’essaie de faire marcher tout ce bordel pour obtenir un effet “moins lourd”, meme si ce n’est que visuel, le visiteur ne voit qu’une partie de la page se charger. Quand j’ai vu que pas mal de sites récent (donc pas de frames) utilisaient ça, je me suis mis à chercher.

Attention IPB change ‘onclick="javascript’ en ‘onclick="java script’. Il faut supprimer l’espace entre java et script …

Sinon comme dit par Nefasme tu ouvres deux div mais tu n’en fermes qu’un. pagetest.html est situé au même niveau que ta page dans l’arborescence ?

Edit : page simple qui montre l’exemple.

Bon a force de aps arriver a la faire marcher, j’ai cherché longuement sur le net, et trouvé un autre script qui a fonctionné du premier coup :

[code]function envoieRequete(url,id)
{
var xhr_object = null;
var position = id;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject(“Microsoft.XMLHTTP”);

 // On ouvre la requete vers la page désirée
 xhr_object.open("GET", url, true);
 xhr_object.onreadystatechange = function(){
 if ( xhr_object.readyState == 4 )
 {
	// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
	 document.getElementById(position).innerHTML = xhr_object.responseText;
 }
}
 // dans le cas du get

xhr_object.send(null);

}[/code]

Ca marche niquel, mais a temps perdu j essaierai de quand meme faire marcher ce que tu as posté B)
merci pour tout !

Je serais curieux de connaître l’execution de ce bout de code dans Firefox B)

Edit :
Non sans déconner, je sais bien l’accessibilité n’est pas un concept qui émeut beaucoup de webmasters, mais quand même, de là à utiliser ActiveX pour naviguer entre les pages…
Persévère plutôt avec la solution de Moe, bien que je trouve toujours pas ça génial d’utiliser javascript pour ça, elle aura au moins le mérite de fonctionner avec tous les navigateurs/plateformes.

J’ai pas constaté de problème avec firefox pourtant.

[quote=“Nefasme, post:14, topic: 44239”]Je serais curieux de connaître l’execution de ce bout de code dans Firefox B)

Edit :
Non sans déconner, je sais bien l’accessibilité n’est pas un concept qui émeut beaucoup de webmasters, mais quand même, de là à utiliser ActiveX pour naviguer entre les pages…[/quote]C’est un objet ActiveX sur Windows pour une raison historique, ahah fait appel à ActiveX, c’est le même code que celui de CainE à quelques variations près.

Tout fout le camp…
Bon ben du moment que ça correspond à ce que tu veux hein B)

On en revient a XMLHTTPRequest et donc Ajax finalement ;p

La méthode ahah fonctionne, il faut juste écrire javascript attaché.

<a href="#" onclick="javascript:ahah('pagetest.html','test2');">lien!</a>

PS : Merci pour le code, ça va m’aider à faire ce que je veux.