3
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Bonjour,
Tu te simplifierais peut-être la vie en utilisant des CSS ?
Le style s'appliquant aux <a> munis de la “class="liens_liste"”, seuls ceux de la liste seront concernés.
Par exemple : a.liens_liste {
color : #fff;
text-decoration : underline overline;
}
a.liens_liste:hover {
color : #000;
text-decoration : none;
}etc. (avec des images c'est aussi possible).
et $page .= "<li><a class="liens_liste" href=\"$link\">$title</a>";
Répondre à Gihef
4
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Merci Gihef, mais ma question porte sur du contenu dynamique, pas sur du style.
D'ailleurs, j'utilise bien les CSS, très pratiques, tu as raison.
Et mes feuilles de styles sont valides W3C ;-) Mon code XHTML 1.1 aussi ;-)) Répondre à Ourse |
5
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Bonsoir,
Tu pourrais nous montrer ce que donne ton code php ?
Et un bout du code html généré ?
Merci,
Xavier Répondre à Reivax962
6
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Bonsoir Xavier,
Voici la portion de code PHP concernée. Elle est dans une <div> :
$page .="<ul>\n";
foreach($recents as $article)
{
$type = $article["type"];
if($type == 0) continue;
$title = $article["title"];
$link = $article["link"];
$page .= "<li><a href=\"$link\">$title</a></li>\n";
}
$page .="</ul>\n";
return $page;
}
Le html retourné est une liste. En voici un extrait :
<ul>
<li><a href="http://www.xxx/">Article 1</a></li>
<li><a href="http://www.yyy/">Article 2</a></li>
[ETC]
</ul>
Je voudrais insérer dans le code PHP un instruction de rollover pour permettre d'afficher au 1er plan, dans un bloc voisin qui contient une image (z-index:0), un autre bloc (z-index=1)avec des informations complémentaires sur l'article dont on survole le titre ; cela permettrait à l'utilisateur de savoir si l'article l'intéresse vraiment avant qu'il ne clique.
Côté code javascript, c'est du tout classique et cela fonctionne très bien sur un lien simple (hors de la liste produite par php )
<script language="javascript">
function montre(id) {
if (document.getElementById) {
document.getElementById(id).style.visibility="visible";
} else if (document.all) {
document.all[id].style.visibility="visible";
} else if (document.layers) {
document.layers[id].visibility="visible";
} }
function cache(id) {
if (document.getElementById) {
document.getElementById(id).style.visibility="hidden";
} else if (document.all) {
document.all[id].style.visibility="hidden";
} else if (document.layers) {
document.layers[id].visibility="hidden";
} }
</script>
Donc, je voudrais insérer, dans le code de chaque ligne de la liste, donc dans le code PHP qui fabrique cette liste :
onMouseOut="cache('map');montre('text')" onMouseOut="cache('text');montre('map')"
map et text sont respectivement les id des zones image et texte qui doivent alterner.
Merci par avance. Répondre à Ourse
7
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Bonjour,
En fait c'est surtout le code qui ne marche pas qui m'intéresse ;)
Xavier Répondre à Reivax962
9
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Dans le fil, j'ai déjà exposé que j'avais essayé la concaténation suivante :
$page .= "<li><a href=\"$link\" onmouseover=\"cache('map');montre('text')\" onmouseout=\"cache('text');montre('map')\">$title</a>";
Dans le html résultant, la partie onmouseover--> onmouseout est ignorée. La ligne s'écrit comme une ligne usuelle de liste. Répondre à Ourse
12
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Ah oui, je l'avais ratée...
Bref, effectivement, il n'y a aucune raison pour que cela ne marche pas.
Si, à la place du bloc complet, tu ne mets que " onmouseout ", sans rien d'autre (je sais, cela n'a aucun sens html, là n'est pas la question), est-ce qu'il apparait en sortie ou pas ? Répondre à Reivax962
13
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Je viens d'essayer :
$page .= "<li><a href=\"$link\" onmouseout>$title</a>";
Le mot "onmouseout" est tout simplement ignoré. C'est exactement là le mystère.
Est-ce un problème de syntaxe ou autre chose ? Répondre à Ourse
16
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Ben... Je ne vois que deux solutions possibles :
- tu n'ouvres pas le même fichier que celui que tu modifies ;
- ton navigateur garde en cache l'ancienne version et ne veut rien savoir. Auquel cas, essaie de bien raffraichir la page, de supprimer tes fichiers temporaires, voire carrément d'accéder à ton site depuis un autre navigateur. Répondre à Reivax962 | | | | |
8
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Est ce qu'une infoBull t'irrai:
Mettre des informations a l'aide d'une bulle lorsque vous passez votre souris sur un lien
Bien souvent vous souhaitez informer l'internaute sur le lien d'une page. Cette information consiste a expliquer par un court texte le contenu de la page avant de cliquer sur le lien:
* <a href="url de votre lien" target="_blank" title="texte souhaité pour expliquer le lien"></a>
* Exemple avec ce lien (Placez juste votre souris sur le lien sans cliquer et attendez que l'infobulle s'affiche ):
* Trucs et Astuces Astwinds
Voici la balise pour obtenir ce résultat:
<a href=" http://www.astwinds.com/" target="_blank" title="Tous les trucs et Astuces pour Windows Xp et la conception de votre site sur http://www.astwinds.com/">Trucs
et Astuces Astwinds</a>
<a href= ouvre la balise du lien
"url de votre lien" lien de la page vers laquelle pointe votre lien. Dans ce cas le lien pointe sur la page d'accueil d'Astwinds
target="_blank" votre page s'ouvrira dans une autre fenêtre
title="Tous les trucs et Astuces pour Windows Xp et la conception de votre site sur http://www.astwinds.com/"> Texte que vous souhaitez afficher lorsque l'internaute passe la souris sur le lien sans cliquer
Le texte en bleu est le texte visible du lien sur votre page
</a> ferme la balise du lien Répondre à Alain42
10
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Merci Alain. Mais non, une infobulle ne convient pas. J'ai besoin d'afficher un texte plus long et mis en forme, qui doit venir dans un bloc prédéfini et positionné à un endroit précis. Répondre à Ourse |
11
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Alors une piste:
ton lien appelle une foncton javascript /Ajax qui va appeler un script php en lui transmetant les valeurs voulues qui irra chercher les infos et chargera ensuite la réponse dans un div à l'endroit que tu veux dans ta page.
pour ça va voir sur google comment se font les appels AJAX Répondre à Alain42 |
14
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
voilà une fonction Javascript /Ajax qui devrait te convenir:
<script language="Javascript"type="text/JavaScript">
// Requette AJAX
function makeRequest(url,valeur,id_ecrire){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
data="val_sel=valeur;
http_request.send(data);
}
function traitementReponse(http_request,id_ecrire) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
obj = document.getElementById(id_ecrire);
obj.innerHTML = affich_list;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}
</script>
dans ta page tu met sur le lien onmouseOver=makeRequest('repPhpAjax.php','la_valeur_du_lien','details');
tu mets un <div id="details">
//la apparaitra la réponse
</div>
tu fais un script php:
repPhpAjax.php
avec $valeur_passee=$_POST['valeur'];
variable que tu utilises pour interroger ta base et obtenir le complément d'info que tu mettra dans la variable $reponse
$reponse="..................................";
$reponse.="................................";
echo $reponse;
Cette reponse envoyée ainsi à Ajax sera affichée dans ton div.
Est ce que ça te va ? Répondre à Alain42
15
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Oui mais là, tu te heurtes à nouveau à son problème, qui est qu'il n'arrive pas à mettre de onmouseover dans son code... Répondre à Reivax962 |
17
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
 Ourse, le dimanche 22 juillet 2007 à 22:19:16 Bonsoir,
Je reviens pour vous dire que j'ai résolu le problème.
Le code suivant marche très bien : $page .="<li><a href=\"$link\"";
$page .= "onmouseover=\"cache('map');cache('map2');cache('map3');montre('text')\"";
$page .= "onmouseout=\"cache('text');montre('map');montre('map2');montre('map3')\">";
$page .= "$title</a></li>\n";
J'ai laissé le problème de côté pendant 48 heures puis j'ai recommencé depuis le début et ça a marché.
Ce qui s'est passé : dans ma bibliothèque de fonctions, je ne mettais pas le code dans la bonne fonction. Il y a en a deux qui se ressemblent beaucoup : une qui fabrique le lien pour le code source et l'autre qui fabrique l'affichage pour le navigateur, je crois. Vraisemblablement, j'ai dû essayer sans m'en rendre compte dans le seconde fonction au lieu de la première.
Merci pour votre aide à tous. Ce qui m'a aidée, c'est que vous ne trouviez pas normal que ça ne marche pas. Cela m'a encouragée à persévérer.
Merci aussi pour la portion de code Ajax. je vais pouvoir l'essayer maintenant, ça m'intéresse. Répondre à Ourse | | | | | |