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 :

Choix d’index requête


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2024
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Choix d’index requête
    Bonjour,
    Il s’agit de PHP-MySQL. En page initiale, l’utilisateur choisit un index, et saisit une recherche. En page réponse, je voudrais que la recherche se fasse dans l’index choisi, et seulement lui. J’imagine que cela pourrait se traduire ainsi : si le choix est 1, cherche variable en colonne 1 ; si le choix est 2 [elseif], cherche variable en colonne 2 ;... si il n'y a pas de réponse [else] écris "Désolé". Enfin, publie la ou les lignes réponse si il y en a.
    Ma tentative débute par (no étant la value de l’option 1) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($index= "no")     
    	{"SELECT cod, nom, lieu, cree FROM depa
    	WHERE cod = '$recherche';"}
    … qui obtient pour réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected token "}"
    Pourrais-je avoir de l’aide pour reformuler cela (et ce qui suit) ?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Si je comprends bien en fonction d'un paramètre, on veut rechercher une valeur dans telle ou telle colonne de la table.
    Parler d'index pour ce besoin porte à confusion, un index c'est un objet SQL facilitant les recherches, rien à voir avec le présent sujet.

    Donc voici une possibilité basée sur un case.

    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    create table T1
          (  T1ident     integer      not null  primary key
           , T1matricule char(08)     not null  unique
           , T1nom       varchar(40)  not null
           , T1prenom    varchar(40)  not null
           , T1date      date         not null
          )
    ;
    insert into T1 (T1ident, T1matricule, T1nom, T1prenom, T1date)
    values (0001, '10140008', 'Dupont', 'Martine', '2016-04-20')
         , (0002, '15508077', 'Martin', 'Jean', '2022-11-05')
         , (0003, '20016663', 'Ledu', 'Solène', '2024-01-06')
    ;
    set @col = 'nom'     ;
    set @val = 'Martin'  ;
     
    select T1ident
         , T1matricule
         , T1nom
         , T1prenom
         , T1date
    from T1
    where case when @col = 'matricule' and T1matricule=@val then 1
               when @col = 'nom'       and T1nom=@val       then 1
               when @col = 'prenom'    and T1prenom=@val    then 1
          end = 1

    Bien évidemment, ce type de solutions ne garantit pas une ligne unique en retour.

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 224
    Points
    8 224
    Billets dans le blog
    17
    Par défaut
    Il faut commencer par apprendre PHP et présenter le script correctement

    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
    $pdo = new PDO($dsn); // Voir doc
     
    $result = [];
    if ($index === 'no') {
        $sql = <<<SQL
            SELECT ALL cod, nom, lieu, cree
            FROM depa
    	WHERE cod = {$pdo->quote($recherche)};
            SQL;
        $result = $pdo->query($sql)->fetchAll();
    } elseif ($index === '...') {
        ...
    } else {
        echo 'Index incorrect';
    }
     
    // Traiter $result
    if (count($result) === 0) {
        echo 'Pas de résultat';
    } else {
        ...
    }
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Candidat au Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2024
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Question résolue
    J'aurais tout à apprendre.
    J'ai commencé par un besoin pratique, un outil de recherche dans une petite base de données. Réussi, avec une recherche globale, mais je voulais proposer à l'utilisateur la possibilité de limiter sa recherche à la catégorie de son choix, donc ne portant dans la base de données que sur la colonne correspondante. Comment écrire cela ?
    Une aide bienvenue m'a proposé ceci, qui fonctionne :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(...){
    $sql="SELECT cod, nom, lieu, cree FROM depa
    WHERE cod = '$recherche'";
    }
    else if(...){
    $sql="SELECT cod, nom, lieu, cree FROM depa
    WHERE nom = '$recherche'";
    }
    ...

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

Discussions similaires

  1. Choix d'un EDI pour la 3D (Open GL, Portable)
    Par Riko dans le forum OpenGL
    Réponses: 6
    Dernier message: 01/08/2002, 12h25
  2. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 20h08
  3. [Choix] SGDB pour Entreprise : coût, efficacité, etc.
    Par grassat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 15/06/2002, 08h52
  4. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23
  5. Choix d'un ORB
    Par Anonymous dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h15

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