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 :

Formulaire et gestion de requête SQL [PHP 7]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 52
    Par défaut Formulaire et gestion de requête SQL
    Bonsoir à tous,

    Je développe actuellement un système de suivi en PHP qui compte un nombre de véhicules par jour, semaine et mois. Pour récupérer les données, j'exécute trois requêtes, une par jour, une par semaine et une par mois (je crée trois tableaux que je remplis avec une boucle sur le résultat de ma requête).

    Dans mon programme, j'ai une en-tête de "filtrage". En effet, je souhaite qu'en fonction des choix de l'utilisateur, j'exécute telle ou telle requête. Si l'utilisateur laisse tout les champs vide, on sort la requête globale. Si par exemple il choisit uniquement le champ Semaine et le champ Métier, on exécute la requête en fonction. Etc...

    Nom : header.PNG
Affichages : 1081
Taille : 3,5 Ko
    (l'en tête en question).

    Je ne vois pas trop comment faire ça, si quelqu'un a des pistes pour m'aiguiller...
    Merci d'avance,

    Bonne soirée

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Bonsoir, poste tes bouts de codes, tes requêtes et ta BD.

    CORDIALEMENT.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 52
    Par défaut Requetes SQL
    Bonjour,

    Donc voici les requêtes (au format SQLite) :

    Pour les jours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     $result = $database->query("SELECT * FROM retoucheurs where substr(\"Date/Heure de retouche (FD)\",1,4)||'-'||
                substr(\"Date/Heure de retouche (FD)\",6,2)||'-'||
                substr(\"Date/Heure de retouche (FD)\",9,2) 
                between DATE('". date("Y-d-m", strtotime($_SESSION['jours'][0])). "') and DATE('". date("Y-d-m", strtotime($_SESSION['jours'][6]))."') ORDER BY \"Date/Heure de retouche (FD)\" DESC");
    Pour les semaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     $result = $database->query("select total(Contremarque) as Tot, 
        strftime('%Y-%m-%d', substr(\"Date/Heure de retouche (FD)\",1,4)||\"-\"||substr(\"Date/Heure de retouche (FD)\",6,2)
        ||\"-\"||substr(\"Date/Heure de retouche (FD)\",9,2)) as Week FROM retoucheurs 
        GROUP BY strftime('%W', substr(\"Date/Heure de retouche (FD)\",1,4)||\"-\"||substr(\"Date/Heure de retouche (FD)\",6,2)
        ||\"-\"||substr(\"Date/Heure de retouche (FD)\",9,2));");
    Pour les mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result = $database->query("select total(Contremarque) as Tot, 
        strftime('%Y-%m-%d', substr(\"Date/Heure de retouche (FD)\",1,4)||\"-\"||substr(\"Date/Heure de retouche (FD)\",6,2)
        ||\"-\"||substr(\"Date/Heure de retouche (FD)\",9,2)) as Month  FROM retoucheurs 
        GROUP BY strftime('%m', substr(\"Date/Heure de retouche (FD)\",1,4)||\"-\"||substr(\"Date/Heure de retouche (FD)\",6,2)
        ||\"-\"||substr(\"Date/Heure de retouche (FD)\",9,2));");
    Pour chaque requête, je boucle ensuite sur ma variable $result avec une boucle while pour stocker le tout dans un tableau que j'affiche dans un graphique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while($row=$result->fetchArray(SQLITE3_ASSOC)) {
            $valmois[intval(strftime('%m', strtotime($row['Month'])))] = $row['Tot'];
        }
    for($i=0;$i<7;$i++) {
            $_SESSION['valsm'][$i] = $valmois[intval(strftime('%m', strtotime(date("Y-m-d", strtotime($moisJours[$j]->format('Y-m-d'), 1)))))]; 
            $j--;   
        }
    Ce qui m'interesse le plus c'est de pouvoir dynamiquement modifier mes requêtes avec les valeurs choisies, ou lancer une requête par défaut si aucune valeur n'a été choisie.

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    "formulaire de recherche multi-critères"

    ...Ce qui m'interesse le plus c'est de pouvoir dynamiquement modifier ...
    On suppose donc "sans rechargement de page".

    Dans ce cas : "Ajax"
    Dernière modification par Invité ; 11/08/2018 à 10h14.

  5. #5
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Bonjour, j'avais eu le même soucis et j'avais eu la solution en faisant ça.
    Code PHP : 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
     
    <?php
     
    	/*je récupère les critères sélectionnés*/
    		extract($_POST);
     
    	/* je crée le tableau choix pour stocker les différentes critères*/
    		$choix = array();
     
    	// si la variable est présente, 
    //on lui affecte une place dans le tableau 'choix[]',
    //qui nous servira ensuite à construire le WHERE de la requête.
    	if (!empty($semaine)){
    		$choix[] = "semaine LIKE '%$semaine%'";   
    	}
     
    	if (!empty($tournee)){
    		$choix[] = "tournee LIKE '%$tournee%'";
    	}
     
    	if (!empty($metier)){
    		$choix[] = "metier LIKE '%$metier%'";
    	}
     
    	if (!empty($retoucheur)){
    		$choix[] = "retoucheur LIKE '%$retoucheur%'";
    	}
     
    	$first = true; /*on déclare la variable first pour tester la première condition*/
    	$conditions = '';
     
    	foreach($choix as $c){
        /* si c'est la premiere condition est vérifiée, on met where, sinon on met and*/
        if ($first){
            $first = false;
            $conditions .= " WHERE $c ";
        }
    		else{
    			$conditions .= " AND $c ";
    		}
    	}
     
    	$sql = " SELECT * FROM ta_table $conditions ORDER BY id ";
     
    	$res = mysql_query($sql) or die(mysql_error());
     
    ?>

    si je ne suis pas pas dans la bonne voie, chèr(e) modérateur(trice) corrigez moi.

    Cordialement.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 52
    Par défaut
    Merci pour la réponse, et désolé la prochaine fois je ferais un peu plus de recherche.
    Je vais potasser tout ça

  7. #7
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Je ne connais pas SQL Lite mais de ce que j’ai pu voir les dates sont stockées (entre auttres) comme du texte au format SSAA-MM-JJ HH:MM:SS ('2018-04-02 12:13:46')

    Donc pourquoi faire tous ces substr ? S’ils sont nécessaires un substr de 1,10 devrait suffire et allègerait grandement la compréhension des requêtes.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 52
    Par défaut
    3- Dans ton cas, si tu veux utiliser Ajax, les balises <form> ne sont effectivement pas nécessaires, puisque les données seront récupérées et transmises via JavaScript.
    Ajax se charge ensuite de les trnasmettre à un fichier PHP externe (indépendant), qui fera le traitement.
    Je ne connais pas du tout Ajax ni JavaScript du coup j'essaie de faire ça en PHP.

    Donc pourquoi faire tous ces substr ? S’ils sont nécessaires un substr de 1,10 devrait suffire et allègerait grandement la compréhension des requêtes.
    Dans ma base les dates sont stockées en texte sous la forme YYYY/MM/DD et SQLite ne prend en charge que le format YYYY-MM-DD, du coup je dois substituer les '/' par des '-'. C'est pas le plus simple je l'admets...mais ça marche.

    En tout cas merci à tous pour votre aide, particulièrement à jreaux62 et Manequin

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

Discussions similaires

  1. [XL-2003] Gestion mémoire & requêtes SQL
    Par Edlonar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2013, 10h46
  2. Réponses: 2
    Dernier message: 10/05/2012, 13h26
  3. Gestion des requêtes SQL
    Par dot-_-net dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/04/2009, 01h32
  4. [MySQL] Gestion des requêtes SQL (classe ou pas ?)
    Par FrontLine dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/01/2008, 19h41
  5. Valeur des formulaire réutilisées dans des requètes SQL.
    Par cotmar dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/05/2006, 11h16

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