AJAX, iframe et ancre

Eléphanteau du PHP | 40 Messages

25 avr. 2007, 11:19

Bonjour

voila je bosse actuellement sur un site pour un festival: http://solijahfary07.free.fr, et j'ai fait une partie ou on peut voir la programmation, avec la description qui s'affiche avec de l'AJAX, et cette page se trouve dans une iframe de la page centrale.

Hors voila, à chaque fois que l'on clique pour afficher ou cacher une description, la page programmation se remet en haut, et moi je voudrais qu'elle reste au niveau de la description affichée, et meme quand je rajoute un system d'ancre, la page se met au bon niveau, et repar en haut aussitot...

Quelqu'un aurait-il une idée d'ou ça peut venir??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2007, 11:58

Je n'arrive pas à me connecter au site, mais n'aurais tu pas dans tes liens des href="#" qui feraient remonter le navigateur au début de la page ?

Si c'est le cas, tu peux les remplacer par href="javascript:void(0);" qui n'engendre aucune action :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 40 Messages

25 avr. 2007, 13:49

Ouai je sais, aujourd'hui y a free qui a décidé de me faire galérer lol, je vais regarder à ça^^

Sinon ba je pense pas mais je vais vérifier quand même :D

Eléphanteau du PHP | 40 Messages

25 avr. 2007, 14:19

Bon, alors non je vois rien de tout ça, voici mon code si ça vous aide à m'aider lol:

programmation.php:
<html>
<head>
<title>Programmation</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="programmation.css" rel="stylesheet" type="test/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf8-unicode" />
</head>
<body>

<script src="programmation.js" language="javascript" type="text/javascript">
</script>

<?php
	$jours = array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
	$mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");

	require_once("connexion.php");
	connecte();
	

	$sql = mysql_query("SELECT id, nom, resume, lieu, adresse, date FROM programmation ORDER BY date") or die(mysql_error());
	while(($res=mysql_fetch_assoc($sql))!=false)
	{
		$heure = explode(':',strstr($res['date'], ' ')) ; //0=>heure;1=>minutes;2=>secondes

		$date = substr($res['date'], 0, strpos($res['date'],' '));
		
		$dates = explode('-', $date); //0=>annee;1=>mois;2=>jour
		
		$timestamp = mktime($heure[0],$heure[1],$heure[2],$dates[1],$dates[2],$dates[3]);

		echo "<table border='1' width='725'>
				<tr>
					<td>Le ".$jours[date("w",$timestamp)].' '.date("j",$timestamp).' '.$mois[date("n", $timestamp)].' '.date("Y à G:i",$timestamp).", à ".$res['lieu']."</td></tr>
				</tr>
				<tr>
					<a name='prog".$res['id']."'></a><td class='prog_titre'>
						<a href='#' class='click' id='click".$res['id']."' onclick='clique(".$res['id'].");'> (+) </a>".stripslashes($res['nom'])."
					</td>
				</tr>
				<tr>
					<td>
						".stripslashes($res['resume'])."
					</td>
				</tr>
				<tr>
					<td>
						<div id='description".$res['id']."' width='550'></div>
					</td>
				</tr>
			</table>\n";
	}
	fermer();
?>

</body>
</html>
et voila programmation.js:

Code : Tout sélectionner

//variables globales var plein = new Array(); var httpObject = getHttpObject(); //fonctions function getHttpObject() { var httpObject = null; if(window.XMLHttpRequest) httpObject = new XMLHttpRequest(); //pour non-IE else { if(window.ActiveXObject) //pour IE { try { httpObject = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { //pour une autre version d'IE httpObject = new ActiveXObject("Microsoft.WMLHTTP"); } catch(e) { window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest."); } } } } return httpObject; } function clique(i) { if(plein[i]) { fermer(i); plein[i]=false; } else { remplir(i); plein[i]=true; window.location.replace('#prog'+i); } } function remplir(i) { var div = document.getElementById('description'+i); httpObject.open("GET","get_description.php?id="+i, false, '',''); httpObject.send(null); div.innerHTML=httpObject.responseText; var click = document.getElementById('click'+i); click.innerHTML=' (-) '; } function fermer(i) { var div = document.getElementById('description'+i); div.innerHTML=''; var click = document.getElementById('click'+i); click.innerHTML=' (+) '; }
Si quelqu'un voit quelque chose, qu'il n'ésite pas...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2007, 15:35

<tr>
<a name='prog".$res['id']."'></a><td class='prog_titre'>
<a href='#' class='click' id='click".$res['id']."' onclick='clique(".$res['id'].");'> (+) </a>".stripslashes($res['nom'])."
</td>
</tr>
:-*
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 40 Messages

25 avr. 2007, 15:56

Ah ba ouai oups, autant pour moi lol, comme quoi c'est toujours mieux de faire relire son code par qq'un d'autre^^

Aller je vais enlever ça et voir si ça marche mieux^^

Eléphanteau du PHP | 40 Messages

25 avr. 2007, 16:03

Voui bon ba voila c'est bon ça marche, merci beaucoup :D