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

  1. #1
    Membre du Club
    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
    Points : 51
    Points
    51
    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 chevronné

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

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    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 du Club
    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
    Points : 51
    Points
    51
    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 chevronné

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

    Informations professionnelles :
    Activité : développeur

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

  5. #5
    Membre du Club
    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
    Points : 51
    Points
    51
    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 chevronné

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

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    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?

  7. #7
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Ah oui j'avais tout testé sauf $requete1, donc voici ce qu'il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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, LABEL_ETAT_VALIDATION,COMMENTAIRE,NUM_LOT,TO_CHAR(DATE_PREVU,'YYYY-MM-DD') as DATE_PREVU 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%')
    J'ai bien ma requête et je l'ai testé sous sql developper et elle fonctionne bien. Donc je vois pas ou est le problème.

    Eh bien LIMIT ne correspond pas à ce que je cherche. Car quand l'utilisateur arrive le tableau lui présente tout les résultats de ma base de donnée et la recherche sert juste à simplifier le nombre de résultat. Et puis je peux pas ajouter LIMIT dans cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete1 .= " AND UPPER(NUM_LOT) LIKE UPPER('%".$_SESSION['TAB2'][0]."%')";
    Car il faudrait que je le mette dans ma grande requête et c'est pas se que je recherche.

  8. #8
    Membre chevronné

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

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Le problème ne vient donc pas de ta requête as-tu essayé dans le script ou tu as des problème un simple select pour voir si tu récupère quelque chose?

  9. #9
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Oui c'est ce que je me dis maintenant. Mais par contre j'ai pas tout compris de ce que tu me demande désolé. Quand tu parle de script tu parle de ma page.php ?

  10. #10
    Membre chevronné

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

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Oui désoler dans ta page.php .

  11. #11
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Eh bien j'ai remplacé la grande requête qui me sélectionne tout de ma table et qui m'affiche le resultat dans le tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $requete1 = "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,
    	LABEL_ETAT_VALIDATION,COMMENTAIRE,NUM_LOT,TO_CHAR(DATE_PREVU,'MM/DD/YYYY') as DATE_PREVU
    	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";
    Par celle-ci pour avoir que un seul resultat:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    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, LABEL_ETAT_VALIDATION,COMMENTAIRE,NUM_LOT,TO_CHAR(DATE_PREVU,'MM/DD/YYYY') as DATE_PREVU 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%')

    Et bizarrement ça fonctionne j'ai dans mon tableau que un seul résultat. Oui j'ai testé tout ça dans ma page.php. C'est bizarre car il récupère bien ce que je tape dans mon champ de recherche et il constitue bien ma requête mais je sais pas d'ou viens le problème.

    Je met le code de mon tableau pour que tu puisse voir si il y a un truc qui va pas. Moi je continue de regarder mais pour l'instant rien.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    <?php 
    include("../../connexion.php");
    session_start();
    if(empty($_SESSION) || empty($_SESSION['ID_PERSONNE'])) { // sécurité
    	header('Location:../../index.php');
    }
    include("../../connexion.php");
    include("../../require/upload.php"); 
    include("../../require/fonction_date.php");
    include("../../require/fonction_quote.php");
    $req_droit = "SELECT ID_DROIT
    FROM POP_PERSONNE
    LEFT JOIN POP_PROFIL ON POP_PERSONNE.ID_PROFIL = POP_PROFIL.ID_PROFIL
    LEFT JOIN POP_DROIT_PROFIL ON POP_PROFIL.ID_PROFIL = POP_DROIT_PROFIL.ID_PROFIL
    WHERE ID_SOUS_MENU = 32 AND ID_PERSONNE = ".$_SESSION['ID_PERSONNE'];
    $sta_droit = oci_parse($conn, $req_droit);
    oci_execute($sta_droit,OCI_COMMIT_ON_SUCCESS);
    $droit = oci_fetch_assoc($sta_droit);
     
    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 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,
    	LABEL_ETAT_VALIDATION,COMMENTAIRE,NUM_LOT,TO_CHAR(DATE_PREVU,'MM/DD/YYYY') as DATE_PREVU
    	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";
     
    if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    $requete1 .= " AND UPPER(NUM_LOT) LIKE UPPER('%".$_SESSION['TAB2'][0]."%')";
    echo $requete1;
    if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    $requete1 .= " AND NOM_FOURNISSEUR = '".$_SESSION['TAB2'][1]."'";
    if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    $requete1 .= " AND UPPER(NUM_AFFAIRE) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    $requete1 .= " AND NOM_FOURNISSEUR = '".$_SESSION['TAB2'][3]."'";
    if($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != 0)
    	$requete1 .= " AND POP_ETAT_VALIDATION.ID_ETAT_VALIDATION =".$_SESSION['TAB2'][4];
    if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != 0)
    	$requete1 .= " AND POP_CATEGORIE_EN_COURS.ID_CATEGORIE_EN_COURS =".$_SESSION['TAB2'][5];
    if($_SESSION['TAB2'][6] != null && $_SESSION['TAB2'][6] != '0')
    	$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][6]."%')";
     //$requete1 .= "ORDER BY NUM_LOT ASC";
    $statement1 = oci_parse($conn, $requete1); 
    oci_execute($statement1,OCI_COMMIT_ON_SUCCESS);
     
    $requete2 = "SELECT ID_SITE,CODE_SITE,LABEL_SITE FROM POP_SITE ORDER BY CODE_SITE ASC";
    $statement2 = oci_parse($conn, $requete2); 
    oci_execute($statement2,OCI_COMMIT_ON_SUCCESS);
     
     
    ?>
     
    <div id="div_form">
    	<div style="float:left;width:100%;margin:8px 5px 5px 0px;border-radius:4px;padding:5px;" class="couleur2">
    		<form id="form_controle" method='post' onsubmit='' action="#" >
    			<table class="table">
    				<tr class="couleur5">
    					<th class="th site">Numéro de lot</th>
    					<th class="th">Numéro issu lot</th>
    					<th class="th site">Statut</th>
    					<th class="th site">Reference</th>
    					<th class="th site">Indice</th>
    					<th class="th site">Désignation</th>
    					<th class="th site">Quantité prévue</th>
    					<th class="th site">Commentaire</th>
    					<th class="th site">Numéro de projet</th>
    					<th class="th site">Numéro d'affaire</th>
    					<th class="th site">Fournisseur</th>
    					<th class="th site">Délai prévu</th>
    					<th class="th site">Numéro de commande</th>
    					<th class="th site">Catégorie</th>
     
    				</tr>
    				<?php
    				$flag_couleur = 0;
    				while($result1 = oci_fetch_assoc($statement1)) {?>
    					<tr <?php if($flag_couleur%2 == 0){echo "class='couleur6'";}else{echo "class='couleur7'";}?>>
     
    						<td class='td'><?php echo $result1['NUM_LOT'];?></td>
    						<td class='td'><?php echo $result1['NUM_ISSUS_LOT'];?></td>
    						<td class='td'><?php echo $result1['LABEL_ETAT_VALIDATION'];?></td>
    						<td class='td'><?php echo $result1['REFERENCE'];?></td>
    						<td class='td'><?php echo $result1['INDICE'];?></td>
    						<td class='td'><?php echo $result1['DESIGNATION'];?></td>
    						<td class='td'><?php echo $result1['QUANTITE_PREVU'];?></td>
    						<td class='td'><?php echo $result1['COMMENTAIRE'];?></td>
    						<td class='td'><?php echo $result1['NUM_PROJET'];?></td>
    						<td class='td'><?php echo $result1['NUM_AFFAIRE'];?></td>
    						<td class='td'><?php echo $result1['NOM_FOURNISSEUR'];?></td>
    						<?php
    						if($droit['ID_DROIT'] == 2){?>
    						<td class='td' style="width:10px;"><input type="text" style="width:80px;" class="datepicker" onclick='AffID(<?php echo $result1['ID_EN_COURS'];?>);' value="<?php echo $result1['DATE_PREVU'];?>"/></td>
    						<?php
    						} ?>
    						<td class='td'><?php echo $result1['NUM_COMMANDE'];?></td>
    						<td class='td'><?php echo $result1['NOM_CATEGORIE_EN_COURS'];?></td>
    					</tr><?php
    					$flag_couleur++;
    				}
    				?>
     
     
    			</table>
    		</form>
    	</div>
    	<div id="div_formulaire" style="margin-top:8px;" ></div>
    </div>

  12. #12
    Membre chevronné

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

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Oui mais cela montre que finalement c'est un problème de requêtes tu as dit que dans tes autres page cela fonctionne tu as exactement les même requêtes? j'ai vue aussi qu'avant d' exécuter ta requête tu ajoute un certain nombre de choses à celle-ci via les variables de sessions peut-être le problème vient de là.

  13. #13
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Oui se sont les mêmes types de requêtes c'est juste que les tables sont différentes par exemple:

    le code pour ma page qui gère les emplacements:
    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
    if(!isset($_SESSION['TAB_EMPLACEMENT']) || $_GET['init'] == 1){
    	$tableau = array($_GET['site'],$_GET['emplacement']);
    	$_SESSION['TAB_EMPLACEMENT'] = $tableau;
    }
     
    $requete1 = "SELECT ID_EMPLACEMENT,NOM_EMPLACEMENT,CODE_SITE
    FROM POP_EMPLACEMENT 
    LEFT JOIN POP_SITE ON POP_EMPLACEMENT.ID_SITE = POP_SITE.ID_SITE
    WHERE 1=1 ";
     
    if($_SESSION['TAB_EMPLACEMENT'][0] != null && $_SESSION['TAB_EMPLACEMENT'][0] != 0)
    	$requete1 .= " AND POP_EMPLACEMENT.ID_SITE =".$_SESSION['TAB_EMPLACEMENT'][0];
    if($_SESSION['TAB_EMPLACEMENT'][1] != null && $_SESSION['TAB_EMPLACEMENT'][1] != '0')
    	$requete1 .= " AND UPPER(NOM_EMPLACEMENT) LIKE UPPER('%".$_SESSION['TAB_EMPLACEMENT'][1]."%')";
     $requete1 .= "ORDER BY NOM_EMPLACEMENT ASC";
    $statement1 = oci_parse($conn, $requete1); 
    oci_execute($statement1,OCI_COMMIT_ON_SUCCESS);
    Tu crois ? Car ces variable de sessions sont juste utilisé dans la recherche enfin si on parle bien de la même chose^^.

  14. #14
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    EDIT: j'ai enfin trouvé mon problème après quelques semaine. En faites en affichant ma requête j'ai trouvé que l'un de select m'envoyais -1 et ce qui empêchait de faire fonctionner ma requête correctement. Et donc j'ai aussi refait des modification sur les requête de recherche:

    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
    if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    $requete1 .= " AND UPPER(NUM_LOT) LIKE UPPER('%".$_SESSION['TAB2'][0]."%')";
    if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    $requete1 .= " AND UPPER(NOM_FOURNISSEUR) LIKE UPPER('%".$_SESSION['TAB2'][1]."%')";
    if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    $requete1 .= " AND UPPER(NUM_AFFAIRE) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    $requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    if($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != 0)
    	$requete1 .= " AND POP_ETAT_VALIDATION.ID_ETAT_VALIDATION =".$_SESSION['TAB2'][4];
    if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != 0)
    	$requete1 .= " AND POP_CATEGORIE_EN_COURS.ID_CATEGORIE_EN_COURS =".$_SESSION['TAB2'][5];
    if($_SESSION['TAB2'][6] != null && $_SESSION['TAB2'][6] != '0')
    	$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][6]."%')";
     $requete1 .= "ORDER BY NUM_LOT ASC";
    $statement1 = oci_parse($conn, $requete1); 
    oci_execute($statement1,OCI_COMMIT_ON_SUCCESS);
    $requete2 = "SELECT ID_SITE,CODE_SITE,LABEL_SITE FROM POP_SITE ORDER BY CODE_SITE ASC";
    $statement2 = oci_parse($conn, $requete2); 
    oci_execute($statement2,OCI_COMMIT_ON_SUCCESS);
    Désolé pour le double post j'ai pas trouvé le bouton edit de mon dernier message.

+ 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, 14h44
  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, 15h17
  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, 12h35
  4. [Tableaux] Recherche code php
    Par VFone dans le forum Langage
    Réponses: 7
    Dernier message: 28/03/2006, 17h11
  5. [Tableaux] comment faire un moteur de recherche en php
    Par lindouchine dans le forum Langage
    Réponses: 4
    Dernier message: 24/03/2006, 00h14

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