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 :

Recherche en php


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Par défaut Recherche en php
    Bonjour à tous!!

    Voila j'ai des champs en html et je les utilise pour faire une recherche. En faites sur ma page j'ai un tableau qui est fait en fonction d'une requête sql et lorsque la personne saisie un numéro de lot comme "2015-001" le tableau ne contiendra que une ligne celle du lot "2015-001". Le problème c'est que cela ne fonctionne pas pourtant dans d'autres parties du site que j'ai fait ces champs fonctionnent.

    voici le code ou je récupère les valeurs de mes champs et ma requête qui affiche tout ce qu'il y a dans ma table:

    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
    if(!isset($_SESSION['TAB2']) || $_GET['init'] == 1){
    	$tableau = array($_GET['f_numero_lot'],$_GET['f_fournisseur'],$_GET['f_numero_affaire'],$_GET['f_designation'],$_GET['f_statut'],$_GET['f_categorie'],
    	$_GET['f_reference']);
    	$_SESSION['TAB2'] = $tableau;
     
     
    }
     
    $requete1 = "SELECT DISTINCT POP_EN_COURS.ID_EN_COURS as ID_EN_COURS,CODE_SITE,NUM_ISSUS_LOT,NUM_PROJET,NUM_AFFAIRE,REFERENCE,DESIGNATION,INDICE,
    	NOM_CATEGORIE_EN_COURS,QUANTITE_PREVU,TO_CHAR(DATE_RECEPTION_ESTIME,'DD/MM/YYYY') as DATE_RECEPTION_ESTIME,NOM_PERSONNE,TO_CHAR(DATE_CREATION_EN_COURS,'DD/MM/YYYY') as DATE_CREATION_EN_COURS,
    	NOM_FOURNISSEUR,NUM_DA,PRIX_UNITAIRE,PRIX_TOTAL,NUM_COMMANDE,TO_CHAR(DATE_COMMANDE,'DD/MM/YYYY') as DATE_COMMANDE,TO_CHAR(DATE_PREVU,'YYYY-MM-DD') as DATE_PREVU,
    	LABEL_ETAT_VALIDATION,COMMENTAIRE,NUM_LOT
    	FROM POP_EN_COURS
    	JOIN POP_SITE ON POP_EN_COURS.ID_SITE = POP_SITE.ID_SITE 
    	JOIN POP_PROJET ON POP_EN_COURS.ID_PROJET = POP_PROJET.ID_PROJET
    	JOIN POP_DM ON POP_EN_COURS.ID_DM = POP_DM.ID_DM 
    	JOIN POP_CATEGORIE_EN_COURS ON POP_EN_COURS.ID_CATEGORIE_EN_COURS = POP_CATEGORIE_EN_COURS.ID_CATEGORIE_EN_COURS
    	JOIN POP_PERSONNE ON POP_EN_COURS.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    	JOIN POP_FOURNISSEUR ON POP_EN_COURS.ID_FOURNISSEUR = POP_FOURNISSEUR.ID_FOURNISSEUR
    	JOIN POP_ETAT_VALIDATION ON POP_EN_COURS.ID_ETAT_VALIDATION = POP_ETAT_VALIDATION.ID_ETAT_VALIDATION
    	WHERE 1=1";
    Et voici le code qui complète ma requête pour n'avoir que une seule ligne dans mon tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    $requete1 .= " AND UPPER(NUM_LOT) LIKE UPPER('%".$_SESSION['TAB2'][0]."%')";
    J'ai tout essayé pour la requête (juste avec LIKE ou '=' sans les '%') J'ai aussi tester ma requête et elle fonctionne. J'ai aussi testé pour voir si je récupère bien les valeurs dans mes champs et je les récupères bien.

    j'ai par contre ma liste déroulante qui fonctionne bien et qui m'affiche la ligne que je cherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != 0)
    	$requete1 .= " AND POP_ETAT_VALIDATION.ID_ETAT_VALIDATION =".$_SESSION['TAB2'][4];
    Donc la je bloque .

    J'espère que je suis au bon endroit car je savais pas trop ou le mettre vu mon problème, si c'est pas le cas je m'en excuse.

  2. #2
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Bonjour, je n'ai pas bien compris ou est on problème dans ta requête ou ailleurs? tu as une ou plusieurs tables?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Par défaut
    Bah je pense que c'est dans la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete1 .= " AND UPPER(NUM_LOT) LIKE UPPER('%".$_SESSION['TAB2'][0]."%')";
    Mais j'ai testé cette partie avec ma grande requête et ça fonctionne:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT POP_EN_COURS.ID_EN_COURS as ID_EN_COURS,CODE_SITE,NUM_ISSUS_LOT,NUM_PROJET,NUM_AFFAIRE,REFERENCE,DESIGNATION,INDICE,
    	NOM_CATEGORIE_EN_COURS,QUANTITE_PREVU,TO_CHAR(DATE_RECEPTION_ESTIME,'DD/MM/YYYY') as DATE_RECEPTION_ESTIME,NOM_PERSONNE,TO_CHAR(DATE_CREATION_EN_COURS,'DD/MM/YYYY') as DATE_CREATION_EN_COURS,
    	NOM_FOURNISSEUR,NUM_DA,PRIX_UNITAIRE,PRIX_TOTAL,NUM_COMMANDE,TO_CHAR(DATE_COMMANDE,'DD/MM/YYYY') as DATE_COMMANDE,TO_CHAR(DATE_PREVU,'DD/MM/YYYY') as DATE_PREVU,
    	LABEL_ETAT_VALIDATION,COMMENTAIRE,NUM_LOT
    	FROM POP_EN_COURS
    	JOIN POP_SITE ON POP_EN_COURS.ID_SITE = POP_SITE.ID_SITE 
    	JOIN POP_PROJET ON POP_EN_COURS.ID_PROJET = POP_PROJET.ID_PROJET
    	JOIN POP_DM ON POP_EN_COURS.ID_DM = POP_DM.ID_DM 
    	JOIN POP_CATEGORIE_EN_COURS ON POP_EN_COURS.ID_CATEGORIE_EN_COURS = POP_CATEGORIE_EN_COURS.ID_CATEGORIE_EN_COURS
    	JOIN POP_PERSONNE ON POP_EN_COURS.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    	JOIN POP_FOURNISSEUR ON POP_EN_COURS.ID_FOURNISSEUR = POP_FOURNISSEUR.ID_FOURNISSEUR
    	JOIN POP_ETAT_VALIDATION ON POP_EN_COURS.ID_ETAT_VALIDATION = POP_ETAT_VALIDATION.ID_ETAT_VALIDATION
    	WHERE 1=1
      AND UPPER(NUM_LOT) LIKE UPPER('%2015-001%');

    Oui je le fait sur plusieurs tables mais je récupère juste un champ dans chaque table qui correspond à l'id dans ma table principale.

  4. #4
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    D'accord avec cette requête tu arrives à récupérer quelque chose?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Par défaut
    Oui j'ai récupéré avec cette requête:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT POP_EN_COURS.ID_EN_COURS as ID_EN_COURS,CODE_SITE,NUM_ISSUS_LOT,NUM_PROJET,NUM_AFFAIRE,REFERENCE,DESIGNATION,INDICE,
    	NOM_CATEGORIE_EN_COURS,QUANTITE_PREVU,TO_CHAR(DATE_RECEPTION_ESTIME,'DD/MM/YYYY') as DATE_RECEPTION_ESTIME,NOM_PERSONNE,TO_CHAR(DATE_CREATION_EN_COURS,'DD/MM/YYYY') as DATE_CREATION_EN_COURS,
    	NOM_FOURNISSEUR,NUM_DA,PRIX_UNITAIRE,PRIX_TOTAL,NUM_COMMANDE,TO_CHAR(DATE_COMMANDE,'DD/MM/YYYY') as DATE_COMMANDE,TO_CHAR(DATE_PREVU,'DD/MM/YYYY') as DATE_PREVU,
    	LABEL_ETAT_VALIDATION,COMMENTAIRE,NUM_LOT
    	FROM POP_EN_COURS
    	JOIN POP_SITE ON POP_EN_COURS.ID_SITE = POP_SITE.ID_SITE 
    	JOIN POP_PROJET ON POP_EN_COURS.ID_PROJET = POP_PROJET.ID_PROJET
    	JOIN POP_DM ON POP_EN_COURS.ID_DM = POP_DM.ID_DM 
    	JOIN POP_CATEGORIE_EN_COURS ON POP_EN_COURS.ID_CATEGORIE_EN_COURS = POP_CATEGORIE_EN_COURS.ID_CATEGORIE_EN_COURS
    	JOIN POP_PERSONNE ON POP_EN_COURS.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    	JOIN POP_FOURNISSEUR ON POP_EN_COURS.ID_FOURNISSEUR = POP_FOURNISSEUR.ID_FOURNISSEUR
    	JOIN POP_ETAT_VALIDATION ON POP_EN_COURS.ID_ETAT_VALIDATION = POP_ETAT_VALIDATION.ID_ETAT_VALIDATION
    	WHERE 1=1
      AND UPPER(NUM_LOT) LIKE UPPER('%2015-001%');

    la ligne qui correspond au numéro de lot "2015-001" enfin tout ça sur sql developper.

    Mais avec celle ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete1 .= " AND UPPER(NUM_LOT) LIKE UPPER('%".$_SESSION['TAB2'][0]."%')";
    elle renvoie rien mon tableau est vide j'ai juste les intitulés de mes colonnes.

  6. #6
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    OK déjà pourquoi tu n'utilises pas LIMItT pour n'avoir qu'un seul résultat, et peux tu faire un echo de requete1 s'il te plaît?

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

Discussions similaires

  1. Recherche debugger PHP
    Par fleur_de_rose dans le forum Zend
    Réponses: 13
    Dernier message: 11/01/2012, 13h44
  2. [MySQL] module de recherche en php
    Par kro35 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/05/2006, 14h17
  3. Recherche script PHP carnet d'adresses
    Par raffa dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 19/05/2006, 11h35
  4. [Tableaux] Recherche code php
    Par VFone dans le forum Langage
    Réponses: 7
    Dernier message: 28/03/2006, 16h11
  5. [Tableaux] comment faire un moteur de recherche en php
    Par lindouchine dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2006, 23h14

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