Page 1 sur 2
Problême liste déroulante
Posté : 02 déc. 2011, 16:46
par Julie17
Bonjour,
Voila notre problème: Nous devon créer un tableau qui nous donne des observations faite pendant une période. Pour cela l'utilisateur doit sélectionner une date de début d'observation et une date de fin d'observation parmi une liste de toutes les dates où il y a eut des observations.
Seulement lors de la sélection de la date de fin d'observation il doit avoir seulement le choix des dates supérieur à la première date sélectionné (de début d'observation).
Nous n'arrivons pas à créer la deuxième page où il sélectionne la date de fin.
Voici notre script:
Première page:
<html>
<body>
<!--CREATION DE LA PAGE PERMETTANT A L'UTILISATEUR DE SELECTIONNER DEUX DATES-->
<form method="GET" action="deuxiemedate.php">
<?php
// On établit la connexion avec la BDD
$connexion=odbc_connect("oiseaux","","");
// On crée la requête permettant de récupérer les dates d'observation
$req_date_dd="select date from Observations group by date";
//On traite la requête
$result_date_dd=odbc_exec($connexion,$req_date_dd);
echo "Sélectionner la date de début [d'observation]:";
echo "<select name='liste_dd'>";
while (odbc_fetch_row($result_date_dd)==TRUE)
{
echo "<option value=odbc_result($result_date_dd,'id_observation')>";
echo odbc_result($result_date_dd,"date");
echo "</option>";
}
echo "</select>";
echo "<br/>";
odbc_free_result($result_date_dd);
echo"<input type='submit' value='GO' size='3' name='bt_date_dd'>";
?>
</form>
</body>
</html>
2ème page:
<html>
<body>
<?php
if (isset($_POST['liste_dd']))
{
$valeur_dd=$_POST["liste_dd"];
$connexion=odbc_connect("oiseaux","","");
$req_date_df="select date from Observations where date>'$valeur_dd'group by date";
$result_date_df=odbc_exec($connexion,$req_date_df);
require "fonctionsODBC.php";
echo "Sélectionner la date de fin [d'observation]:";
creer_liste($result_date_df,"liste_df","id_observation","date");
odbc_free_result($result_date_df);
echo"<input type='submit' value='GO' size='3' name='bt_date_df'>";
echo "</form>";
}
?>
</body>
</html>
Merci d'avance pour votre aide
Re: Problême liste déroulante
Posté : 02 déc. 2011, 17:47
par Mazarini
Bonjour,
$req_date_df="select date from Observations where date>'$valeur_dd'group by date";
A mon avis il y a un problème dans la comparaison des dates. Tu compares le champ date à la chaine de caractères '$valeur_dd' mais je ne sais pas de quel type est le champ date.
Une solution dans le cas ou le champ date est au format date est de faire une conversion de $valeur_dd au format date dans la requete SQL.
Quelque chose du type : where date > ctod('$valeur_dd','YYYYMMDD')
Re: Problême liste déroulante
Posté : 02 déc. 2011, 17:56
par Julie17
Merci pour votre réponse aussi rapide.
J'ai changé la formulation de ma requête comme vous me l'avez dit mais quand je clique sur le bouton ok de ma première page, il s'affiche une page blanche...
Re: Problême liste déroulante
Posté : 03 déc. 2011, 10:06
par Julie17
Personne n'a de solutions?
Parce que je ne comprend vraiment pas pourquoi quand je clique sur ok de la première page je tombe sur une page blanche. Et comme il n'y a pas de message d'erreur je ne sais pas ce que je dois modifier.
Merci d'avance pour vos réponses.
Re: Problême liste déroulante
Posté : 03 déc. 2011, 10:26
par dix2
salut,
1) Dans tes 2 requetes, il y a "group by date", or ceci n'a de sens que si il y a un 'MAX', 'AVG', COUNT', après ton select
donc les 2 "group by date", il faut les retirer
peut etre, tu veux trier par date auquel cas il faut mettre "ORDER BY date"
2) la 16ème ligne du 1er script doit etre remplacée par :
echo '<option value="'.odbc_result($result_date_dd,'id_observation').'">';
3) il faudrait que tu nous donnes le code de la fonction creer_liste() et que tu nous dises de quel type est le champ 'date' dans la base de données
@+
dix2
Re: Problême liste déroulante
Posté : 03 déc. 2011, 10:34
par sirakawa
Bjr,
Si la deuxième page n'affiche strictement rien, le problème ne vient pas de la requete, mais de la valeur passée.
2ème page:
<html>
<body>
<?php
errror_reporting(E_ALL); // peut aider
//1 pour voir ce qui est reçu (penser à sélectionner une valeur dane la page 1)
print_r ($_POST);
if (isset($_POST['liste_dd']))
{
$valeur_dd=$_POST["liste_dd"];
$connexion=odbc_connect("oiseaux","","");
$req_date_df="select date from Observations where date>'$valeur_dd'group by date";
//2 vérification des valeurs passées et tenter de passer la requete à la base par un autre moyen....
print "<br>requete> $req_date";
/
// 3 serait peut-être mieux avant l'emploi d'une fonction
require "fonctionsODBC.php";
$result_date_df=odbc_exec($connexion,$req_date_df);
echo "Sélectionner la date de fin [d'observation]:";
//4 il faudrait éventuellement examiner creer_liste si $result_date_df est correct
print "<br>result_date ==>$result_date<==";
//4b si result_date_df est incorrect, enlever les quotes
creer_liste($result_date_df,"liste_df","id_observation","date");
odbc_free_result($result_date_df);
echo"<input type='submit' value='GO' size='3' name='bt_date_df'>";
echo "</form>";
}
?>
</body>
</html>
Re: Problême liste déroulante
Posté : 03 déc. 2011, 10:59
par dix2
pour éviter d'avoir plusieurs fois la même date, il faut mettre le mot-clé 'DISTINCT'
ce qui donne pour la 1ère page :
$req_date_dd = "SELECT DISTINCT date FROM Observations";
et pour la 2ème page :
$req_date_df = "SELECT DISTINCT date FROM Observations WHERE date>'$valeur_dd'";
dix2
Re: Problême liste déroulante
Posté : 03 déc. 2011, 12:24
par dix2
Voici un code qui fonctionne sur mon poste avec serveur MySQL :
page 1 :
<html>
<body>
<!--CREATION DE LA PAGE PERMETTANT A L'UTILISATEUR DE SELECTIONNER DEUX DATES-->
<form method="POST" action="deuxiemedate.php">
<?php
// On établit la connexion avec la BDD
$connexion = odbc_connect("DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;Database=mysql", "login", "password");
//$connexion = odbc_connect("Server=localhost;Database=mysql", "root", "");
odbc_exec($connexion, "USE oiseaux");
// On crée la requête permettant de récupérer les dates d'observation
$req_date_dd = "SELECT DISTINCT date FROM Observations ORDER BY date";
//On traite la requête
$result_date_dd = odbc_exec($connexion,$req_date_dd);
echo "Sélectionner la date de début [d'observation]:";
echo "<select name='liste_dd'>";
while(odbc_fetch_row($result_date_dd)){
echo '<option value="'.odbc_result($result_date_dd,'date').'">';
echo odbc_result($result_date_dd,"date");
echo "</option>";
}
echo "</select>";
echo "<br/>";
odbc_free_result($result_date_dd);
echo "<input type='submit' value='GO' size='3' name='bt_date_dd'>";
?>
</form>
</body>
</html>
page 2:
<html>
<body>
<?php
if(isset($_POST['liste_dd'])){
$valeur_dd = $_POST["liste_dd"];
$connexion = odbc_connect("DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;Database=mysql", "login", "password");
odbc_exec($connexion, "USE oiseaux");
$req_date_df = "SELECT DISTINCT date FROM Observations WHERE date>'$valeur_dd' ORDER BY date";
$result_date_df = odbc_exec($connexion,$req_date_df);
echo '<form method="GET" action="troisiemePage.php">';
echo "Sélectionner la date de fin [d'observation]:";
echo "<select name='liste_dd2'>";
while(odbc_fetch_row($result_date_df)){
echo '<option value="'.odbc_result($result_date_df,'id_observation').'">';
echo odbc_result($result_date_df,"date");
echo "</option>";
}
echo "</select>";
odbc_free_result($result_date_df);
echo "<input type='submit' value='GO' size='3' name='bt_date_df'>";
echo "</form>";
}
?>
</body>
</html>
Quel serveur de base de données utilises-tu ?
dix2
Re: Problême liste déroulante
Posté : 03 déc. 2011, 12:27
par Julie17
c'est un serveur de base de donnée fournit par mon école.
Vous pouvez y accéder si je vous donne un mot de passe et un login.
Re: Problême liste déroulante
Posté : 03 déc. 2011, 12:29
par dix2
c'est un serveur de base de donnée fournit par mon école.
Vous pouvez y accéder si je vous donne un mot de passe et un login.
ça, on va éviter
niveau sécurité, c'est moyen
Re: Problême liste déroulante
Posté : 03 déc. 2011, 12:31
par dix2
connecte-toi et regarde si c'est MySQL, Oracle, MS SQL, PostgreSql ...
Re: Problême liste déroulante
Posté : 03 déc. 2011, 12:32
par dix2
ou peut être Access
Re: Problême liste déroulante
Posté : 03 déc. 2011, 12:37
par dix2
en fait, il faut juste remplacer la ligne :
$connexion = odbc_connect("DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;Database=mysql", "login", "password");
par :
$connexion = odbc_connect("oiseaux","","");
mais ça me paraît étonnant que ça fonctionne avec juste "oiseaux" comme 1er paramètre pour la fonction odbc_connect()
dix2
Re: Problême liste déroulante
Posté : 03 déc. 2011, 12:50
par Julie17
Et aujourd' hui je ne suis pas chez moi j ai une connexion internet ou je passe par une borne sfr. Or quand je modifie mes pages php je dois les mettre dans un dossier via filezila pour voir si elle fonctionne mais celui ci ne veut pas se connecter..il y a une solution?
Re: Problême liste déroulante
Posté : 03 déc. 2011, 13:04
par dix2
à priori, avec les bornes SFR, on ne peut pas se connecter à un serveur FTP et FileZila utilise le protocole FTP