( PhP, javascript ) Problème chargement page
Résolu
le_joker_fou
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
le_joker_fou Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
le_joker_fou Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
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
Et là mon problème se pose, si dans la première partie de code je rajoute la ligne "print $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.
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:
- ( PhP, javascript ) Problème chargement page
- Supprimer page word - Guide
- Imprimer tableau excel sur une page - Guide
- Page d'accueil - Guide
- Page privée - Guide
- Telecharger javascript - Télécharger - Langages
6 réponses
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 :
Puis :
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');\">";
Bonjour,
La seule chose qui me choque vraiment dans ton code, c'est cette partie :
Le mieux est de faire :
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).
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).
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.
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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.