IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

between et formulaire [PHP 5.1]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut between et formulaire
    Bonjour
    Je ne vois pas comment intégrer un between avec choix des dates dans un formulaire:
    j'ai ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    $date = date("d/m/Y");
    $heure = date("H:i");
    Print("Nous sommes le $date et il est $heure");
    $iddate=$date;
    ?> 
     <br><a href="abs_index.php">Accueil</a> <br>
    <br><a href="toutesabsbis2dates.php">Afficher TOUTES les ABSENCES !</a> <br>
     <form action="toutesabsbis2dates.php" method="post"><br>
    <input type="text" name="motclef" value="<?php echo $_REQUEST['$motclef%']; ?>"><br>
    <input type="text" name="date1" value="<?php echo $_REQUEST['$date1']; ?>"> 
    <input type="text" name="date2" value="<?php echo $_REQUEST['$date2']; ?>">  
    <input type="submit" value="Rechercher une ABSENCE sur une DATE (format xx/xx/xxxx) ou sur le NOM (3 premières lettres) OU sur le Numéro ABSENCE">
    <form action="toutesabsbis2dates.php" method="post"><br>
    </form>
     
     
    <?php
     
    if (isset($motclef))
    {
    $dateA = $date1;
    $anneeA = substr($dateA, 6, 4);
    $moisA = substr($dateA, 3, 2);
    $jourA = substr($dateA, 0, 2);
    echo $jourA . '-' . $moisA . '-' . $anneeA;
    echo $anneeA . '/' . $moisA . '/' . $jourA; 
    $date3=$anneeA . '/' . $moisA . '/' . $jourA;
     
    $dateB = $date2;
    $anneeB = substr($dateB, 6, 4);
    $moisB = substr($dateB, 3, 2);
    $jourB = substr($dateB, 0, 2);
    echo $jourB . '-' . $moisB . '-' . $anneeB;
    echo $anneeB . '/' . $moisB . '/' . $jourB; 
    $date4=$anneeB . '/' . $moisB . '/' . $jourB;
     
    $clause = " AND (QUAND1 between '$date3' and '$date4' or elenom like '$motclef%' or Numero='$motclef')";
    }
    //SELECT * FROM ges_abs  WHERE `QUAND1`  BETWEEN '2009-09-02'  AND '2009-09-12'   ORDER BY `elenom` ASC       code:$clause = " AND (QUAND1 between '$date3' and '$date4' or elenom like '$motclef%' or Numero='$motclef')";
    $orderby = " ORDER BY elenom";
    //$sql = "SELECT * FROM ges_abs where JUST1='N' " . $clause . $orderby;
    $sql = "SELECT * FROM ges_abs WHERE JUSTIFICATION ='N' " . $clause . $orderby;
    $resultat = mysql_query ($sql);
    $date=$motclef;
    echo "<br>";
    echo $date;
    echo "<br>";
    echo $sql;	
     
    while ($eleve = mysql_fetch_array ($resultat))
    {
     
    ?>
    mais bien sûr ça ne marche pas....une idée ?
    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les dates mysql sont au format AAAA-MM-JJ
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut Je sais bien (c'est même le forum qui m'a appris...)
    Citation Envoyé par sabotage Voir le message
    Les dates mysql sont au format AAAA-MM-JJ
    je sais je pense que le problème ne vient pas de là car si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ges_abs  WHERE `QUAND1`  BETWEEN '2009-09-02'  AND '2009-09-12
    ça fonctionne

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Oui c'est donc ce que je dis : au format AAAA-MM-JJ ca fonctionne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut je reformule ma question
    Citation Envoyé par sabotage Voir le message
    Les dates mysql sont au format AAAA-MM-JJ
    merci Sabotage mais ce qui ne marche pas c'est le passage des deux dates
    j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ges_abs WHERE JUSTIFICATION ='N' AND (QUAND1 between '//' and '//' or elenom like '%' or Numero='') ORDER BY elenom
    si je fais un écho de ma requête.
    donc mes variables date ne passent pas

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu aurais pu commencer par corriger le format de date comme je te l'ai indiqué depuis hier mais bon.

    Plutot que de faire un vilain decoupage avec substr(), tu peux utiliser les fonctions mysql prévues pour.

    Utilise bien $_POST pour lire les données reçues d'un formulaire POST.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $clause = " AND QUAND1 BETWEEN DATE_FORMAT('" . mysql_real_escape($_POST['date1']) . "','%d/%m/%Y') AND DATE_FORMAT('" . mysql_real_escape($_POST['date2']) . "','%d/%m/%Y')
    Au passage egalement tu as deux fois <form>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut fatal error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    $date = date("d/m/Y");
    $heure = date("H:i");
    Print("Nous sommes le $date et il est $heure");
    $iddate=$date;
    ?> 
     <br><a href="abs_index.php">Accueil</a> <br>
    <br><a href="toutesabsbis2dates.php">Afficher TOUTES les ABSENCES !</a> <br>
     <form action="toutesabsbis2dates.php" method="post"><br>
    <input type="text" name="motclef" value="<?php echo $_REQUEST['$motclef%']; ?>"><br>
    <input type="text" name="date1" value="<?php echo $_REQUEST['$date1']; ?>"> 
    <input type="text" name="date2" value="<?php echo $_REQUEST['$date2']; ?>">  
    <input type="submit" value="Rechercher une ABSENCE sur une DATE (format xx/xx/xxxx) ou sur le NOM (3 premières lettres) OU sur le Numéro ABSENCE">
    </form>
     
     
    <?php
     
    if (isset($motclef))
    {
    $dateA = $date1;
    $anneeA = substr($dateA, 6, 4);
    $moisA = substr($dateA, 3, 2);
    $jourA = substr($dateA, 0, 2);
    echo $jourA . '-' . $moisA . '-' . $anneeA;
    echo $anneeA . '/' . $moisA . '/' . $jourA; 
    $date3=$anneeA . '/' . $moisA . '/' . $jourA;
     
    $dateB = $date2;
    $anneeB = substr($dateB, 6, 4);
    $moisB = substr($dateB, 3, 2);
    $jourB = substr($dateB, 0, 2);
    echo $jourB . '-' . $moisB . '-' . $anneeB;
    echo $anneeB . '/' . $moisB . '/' . $jourB; 
    $date4=$anneeB . '/' . $moisB . '/' . $jourB;
     
    $clause = " AND QUAND1 BETWEEN DATE_FORMAT('" . mysql_real_escape($_POST['date1']) . "','%d/%m/%Y') AND DATE_FORMAT('" . mysql_real_escape($_POST['date2']) . "','%d/%m/%Y')";
    //$clause = " AND (QUAND1 between '$date3' and '$date4' or elenom like '$motclef%' or Numero='$motclef')";
    }
    //SELECT * FROM ges_abs  WHERE `QUAND1`  BETWEEN '2009-09-02'  AND '2009-09-12'   ORDER BY `elenom` ASC       code:$clause = " AND (QUAND1 between '$date3' and '$date4' or elenom like '$motclef%' or Numero='$motclef')";
    $orderby = " ORDER BY elenom";
    //$sql = "SELECT * FROM ges_abs where JUST1='N' " . $clause . $orderby;
    $sql = "SELECT * FROM ges_abs WHERE JUSTIFICATION ='N' " . $clause . $orderby;
    $resultat = mysql_query ($sql);
    $date=$motclef;
    echo "<br>";
    echo $date;
    echo "<br>";
    echo $sql;	
     
    while ($eleve = mysql_fetch_array ($resultat))
    {
     
    ?>
    me donne une fatale error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $clause = " AND QUAND1 BETWEEN DATE_FORMAT('" . mysql_real_escape($_POST['date1']) . "','%d/%m/%Y') AND DATE_FORMAT('" . mysql_real_escape($_POST['date2']) . "','%d/%m/%Y')";
    ne fonctionne pas j'ai mis un " à la fin mais ras...

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    tu as ton while a la fin qui ne debouche sur rien.

    tu peux de plus te debarrasser de tes decoupages de date.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requête BETWEEN pour un formulaire
    Par djedje37et28 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 09/08/2006, 09h56
  2. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52
  3. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59
  4. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo