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

PHP & Base de données Discussion :

Filtrer une requête MySQL avec un "input date"


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Par défaut Filtrer une requête MySQL avec un "input date"
    Bonjour,

    Je souhaite mettre à jour une requête qui inclue déjà la sélection de la dernière date existante, après l'éventuelle sélection d'une nouvelle date.
    J'ai posé mon contrôle "input type="date" ..." dans mon menu, et maintenant j'avoue que je suis un peu dépassé.

    1 - A priori il faut capturer la mise à jour (la sélection) de la date et la passer.. ? (euh... à une variable php ? En passant par un script javascript OnChange j'ai cru deviner)
    2 - Ensuite il faut mettre un if pour tester :
    si pas de sélection WHERE snap_date=(SELECT MAX(snap_date) FROM datas_camions)
    si une sélection, WHERE snap_date=(SELECT (snap_date="date_selectionnee") FROM datas_camions)

    Merci pour un peu d'aide, je ne suis pas contre, car je sens que je me lance dans une tâche triple et j'avance péniblement.

    mon menu de navigation :

    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
     
    <body>
    <!-- menu -->
    <ul>
      <li><a class="active" href="#home">Traceur d'immatriculations</a></li>
      <li class="dropdown">
        <a href="javascript:void(0)" class="dropbtn">Autre date</a>
        <div class="dropdown-content">
          <a href="#archive"><input type="date" name="snap_select"></a>
        </div>
      </li>
      <li class="dropdown">
        <a href="javascript:void(0)" class="dropbtn">Contact</a>
        <div class="dropdown-content">
    ...
     
    ...
    la génération de la requête existante (filtre sur la dernière date) plus loin dans la même page (index.php) :

    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
     
    <!-- array generation -->
    <?php
     
    echo $snap_select;
     
    // en tête de tableau
    echo "<table style='border: solid 1px grey;'>";
    echo "<tr>
    	<th>date</th>
    	<th>heure</th>
    	<th>immat</th>
    	<th>Photo</th>
    	<th>Benne</th>
    	</tr>";
     
    $servername = "localhost";
    $username = "login";
    $password = "password";
    $dbname = "base";
    $chem_snaps = "/media/";
     
    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    	// requete pour contenu du tableau
        $stmt = $conn->prepare("SELECT DATE_FORMAT(snap_date, '%d/%m/%Y') AS date,
    		DATE_FORMAT(snap_heure, '%H h %i min %s s') AS heure,
    		DATE_FORMAT(snap_date, '%Y/%Y-%m/%Y-%m-%d/') AS snap_dir,
    		immat, path_file
    		FROM datas_camions
    		WHERE snap_date=(SELECT MAX(snap_date) FROM datas_camions)		
    		ORDER BY snap_date, snap_heure DESC"); 
        $stmt->execute();
     
    	// On affiche le resultat
    	while ($donnees = $stmt->fetch())
    		{
    		//On affiche les données dans le tableau
    		$benne = substr($donnees[path_file], 6);
    		echo "<tr>";
    			echo "<td> $donnees[date] </td>";
    			echo "<td> $donnees[heure] </td>";
     
    ...
    et ainsi de suite pour générer le tableau...


  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Par défaut
    J'avance :
    J'ai capturé la date par javascript avec OnChange...

    Mon problème, je veux maintenant récupérer la valeur pour la ré-injecteur dans la requête SQL, et raffraichir les données affichées.
    Problème, ma page PHP est déjà générée, et il me manque quelque chose (refresh ? passage par un autre moyen ?)

    Je suis passé par une variable globale, mais elle n’apparaît pas ?

    Je pense que le code PHP a déjà été généré et que l'on n'a pas le droit de faire cela :

    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
    ...
    Autre date : <a><input type="date" id="select_date2" name="select_date2" onchange="fChoixDate(this.value)"></a>
     
    <script>
    function fChoixDate() {
    	global $choix_date;
            var x = document.getElementById("select_date2").value;
            document.getElementById("echo_choix").innerHTML = "You selected : " + x;
    	$choix_date=x;
    }
    </script>
     
    <p id="echo_choix"></p>
     
     
    <!-- array generation -->
    <?php
     
    $choix_date ="vide";
    echo "inside PHP : $choix_date";
     
    // en tête de tableau
    echo "<table style='border: solid 1px grey;'>";
    echo "<tr>
    	<th>date</th>
    	<th>heure</th>
    	<th>immat</th>
    	<th>Photo</th>
    	<th>Benne</th>
    	</tr>";
     
    $servername = "localhost";
    $username = "pi";
    $password = "granulats";
    $dbname = "SCV";
    $chem_snaps = "/media/";
     
    $requete_filtree = "SELECT DATE_FORMAT(snap_date, '%d/%m/%Y') AS date,
    		DATE_FORMAT(snap_heure, '%H h %i min %s s') AS heure,
    		DATE_FORMAT(snap_date, '%Y/%Y-%m/%Y-%m-%d/') AS snap_dir,
    		immat, path_file
    		FROM datas_camions
    		WHERE snap_date=(SELECT MAX(snap_date) FROM datas_camions)		
    		ORDER BY snap_date, snap_heure DESC";
    ...

  3. #3
    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
    Soit tu fais un formulaire classique, soit tu utilises Ajax.

    Une variable "globale" signifie seulement qu'elle n'est pas limitée à la fonction.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Par défaut
    Je n'y suis pas arrivé par formulaire, je ne vois pas comment rafraichir la requête sans rafraichir la page...

    J'ai trouvé quelques exemples en AJAX de fonctions voisines, mais mes tests ne marchent pas (peut être parce que la base de test est vide ?).

    https://www.developpez.net/forums/d3...eckbox-cochee/

    Je pense que si on met à jour la requête et que l'on passe la requête par le même biais, on doit pouvoir mettre à jour le tableau après le OnChange...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Par défaut
    Sujet à déplacer vers AJAX ?

Discussions similaires

  1. [DEBUTANT] Besoin d'aide sur une requête Mysql
    Par Nerone21 dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/09/2008, 13h01
  2. [MySQL] texte qui bloque sur une requéte mysql
    Par leto02 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2007, 11h32
  3. problème sur une requête mysql
    Par atomikado dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/10/2007, 16h04
  4. besoin d'aide sur une requête mysql
    Par unmulot dans le forum Langage SQL
    Réponses: 5
    Dernier message: 07/07/2006, 13h17

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