( PhP, javascript ) Problème chargement page

Résolu/Fermé
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 - 5 août 2009 à 11:33
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 - 5 août 2009 à 14:11
Bonjour,

Mon problème et le suivant, je réalise actuellement une application web pour effectué des rapports qui contient dans l'url une date (exemple : http://monsite/index.php?page=Mapage&Date=01/01/2009 ).

Jusque là tout vas bien, mais je dois créer un formulaire de sélection pour choisir une autre date et je désire une fois cette sélection faite recharger ma page.

Voici le code que j'utilise

<?php
/** On modifie l'url pour un éventuel changement de date **/
/** 1) On récupère tout se qui se trouve après http://monsite **/
/** 2) On récupère le nombre de caractère avant la chaine "&Date=" **/
/**  3) On refait l'url jusqu'à "&Date=" **/
function modif_url($url)
{
	$pos = strpos($url, '&Date=');
	$new = substr ($url,0,$pos);
	return ($new);
}
$url = $_SERVER["REQUEST_URI"];
$url = modif_url($url);
?>


<!-- Script que j'utilise pour recharger la page avec la date -->
<SCRIPT language="Javascript">
function reload_page(text)
{
	var new_url = text + "&Date=" + document.all.select_date.value;
	window.location = new_url;
}
</SCRIPT>


<?php
/** On créer dynamiquement le menu de selection des dates sur les 20 derniers jours. **/
/** Informations extraitent de ma base de données **/
/**  Une fois la date sélectionnée on recharge la page avec la nouvelle date. **/
	echo "<select name='select_date' size='1' 
onChange=\"javascript:reload_page ('$url');\">";			
	while ($tab=mysql_fetch_array($result))
	{
		echo "<option value='".$tab['Date']."'";
		if ($tab['Date'] == $date) {
			echo " selected";
		}
		echo ">".$tab['Date']."</option>";
	}			
?>


Et là mon problème se pose, si dans la première partie de code je rajoute la ligne "print $url;"

<?php
/** On modifie l'url pour un éventuel changement de date **/
/**...**/
function modif_url($url)
{
	...
}
$url = $_SERVER["REQUEST_URI"];
print $url;
$url = modif_url($url);
?>


tout cela fonctionne parfaitement, mais si je ne l'a met pas alors rien ne se passe et je ne comprend pas pourquoi.

Alors s'il vous plait, merci de m'aider à comprendre se phénomène illogique que je ne comprend pas.

Merci d'avance de vos réponses.
A voir également:

6 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
5 août 2009 à 14:07
Alors,

L'instruction : document.getElementById("bidule"), comme son nom l'indique, tu retourne l'objet et non la valeur.

Si tu souhaite récupérer la valeur, il faut alors que tu l'extraie de l'objet. Ceci se fera de plusieurs façon selon le type d'objet que tu récupère. Par exemple si c'est un champ TEXT, tu fera .value sur l'objet pour récupérer la valeur. Si c'est une liste, objet.options[objet.options.selectedIndex].value. Si c'est autre chose, a toi de regarde la manière dont la valeur de ton objet se récupère sur Internet.

Bref, pour commencer, si tu utilise 'getElementById', il faut donner un identifiant 'id' à ton objet dans le code HTML / PHP. Si tu n'as donné qu'un nom, utilise 'getElementByName'. Cela dit, je te conseille fortement de n'utiliser toujours que 'getElementById', à part pour les checkbox où tu utilisera 'getElementsByName' car chaque checkbox possède le même nom (lit de la doc sur Internet si tu as besoin de plus de renseignement là dessus).

Pour ton code, tu devra donc avoir ceci :

var obj = document.getElementById("select_date");
if ( obj ){
   var new_url = text + "&Date=" + obj.options[obj.options.selectedIndex].value;
}


Puis :
echo "<select id='select_date' name='select_date' size='1' 
onChange=\"javascript:reload_page ('$url');\">";


1
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
5 août 2009 à 13:37
Bonjour,

La seule chose qui me choque vraiment dans ton code, c'est cette partie :
document.all.select_date.value

Le mieux est de faire :
document.all.select_date.options[document.all.select_date.options.selectedIndex].value;


Le mieux pour détecter l'erreur, ce serait de visualiser / faire tourner ta page sous FireFox, puis tu ouvre "Outils->Console d'erreur" et tu regarde si tu n'as pas des erreurs sur ta page (après avoir fait tes actions)

Si c'est le cas il faudrait que tu regarde à quelle ligne, et de quel type / libellé d'erreur il s'agit (post le pour nous le faire partager, on trouvera certainement).
0
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
5 août 2009 à 13:46
Bonjour,

Merci pour ta réponse en faisant les modifications que tu m'a donné cela fonctionne. Pour information l'erreur était la suivant

document.all is undefined

<SCRIPT language="Javascript">
function reload_page(text)
{
var new_url = text + "&Date=" + document.all.select_date.value;
window.location = new_url;
}
</SCRIPT>

Mais maintenant cela fonctionne même si je ne sais toujours pas pourquoi avant il fallait que je fasse un print $url.

Merci beaucoup.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
5 août 2009 à 13:49
Erf, effectivement, j'ai repris ton code faux sans voir l'erreur ><

Faut dire que je préfère largement employer la syntaxe suivante pour récupérer un objet dans un document HTML:

document.getElementById("select_date") ou document.getElementByName("select_date" selon la manière dont tu as déclaré l'objet dans ta page.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
5 août 2009 à 14:00
Désolé mais j'ai était trop hatif dans ma joie. En fait une fois la page fermé puis réouvert il recommence la même erreur.

J'ai donc modifié la ligne en :

var new_url = text + "&Date=" + document.getElementById("select_date");

et j'ai rajouté au champ select id='select_date'

Mais dans l'url il me met " [object HTMLSelectElement] " au lieu de la date. La je ne comprend plus.
0
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
5 août 2009 à 14:11
Ok merci pour tous ces détails, maintenant cela fonctionne même après avoir fermé puis ré-ouvert une page ^^.

Je te remercie du temps passé sur mon problème.

Bonne après midi.
0