Rechercher : dans
Par :

( PhP, javascript ) Problème chargement page

Dernière réponse le 5 aoû 2009 à 14:11:51 le_joker_fou, le 5 aoû 2009 à 11:33:19 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « ( PhP, javascript ) Problème chargement page » dans :
Javascript - Coloration syntaxique dans vos pages web VoirSi vous avez un site web contenant des exemples de code (php, javascript, C#, Delphi, Python...), il peut être intéressant d'avoir une coloration syntaxique. C'est parfois pénible à réaliser, mais il existe une librairie Javascript qui permet de...
Introduction à PHP VoirQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La...
Javascript - Implantation du code VoirA quel emplacement insérer le Javascript dans votre page HTML Il existe plusieurs façons d'inclure du JavaScript dans une page HTML : Grâce à la balise En mettant le code dans un fichier Grâce aux événements Dans la balise...

1

kij_82, le 5 aoû 2009 à 13:37:58

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.op­tions.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).

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :)    ~

Répondre à kij_82

2

le_joker_fou, le 5 aoû 2009 à 13:46:47

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.

Répondre à le_joker_fou

3

kij_82, le 5 aoû 2009 à 13:49:42

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.

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :)    ~

Répondre à kij_82

4

le_joker_fou, le 5 aoû 2009 à 14:00:17

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.

Répondre à le_joker_fou

5

kij_82, le 5 aoû 2009 à 14:07:14
  • +1

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');\">";



~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :)    ~

Répondre à kij_82

6

 le_joker_fou, le 5 aoû 2009 à 14:11:51

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.

Répondre à le_joker_fou