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

SQL Procédural MySQL Discussion :

Requete sur un index? [MySQL-5.7]


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 53
    Par défaut Requete sur un index?
    Bonjour

    je crée un site WEB et j'utilise WAMP avec MySQL

    Dans une de mes tables (bureau d'une association) j'ai crée un index sur 2 colonnes afin d'éviter que l'on ajoute par exemple 2 présidents.

    Cela fonctionne mais de manière silencieuse. J'aimerais dans PHP faire une requête et un if en fonction du résultat pour transmettre un message d'erreur.

    Je pensais peut-être en utilisant le nom de l'index, peut être une fausse route ou un SELECT (COUNT) mais ca ne marche pas.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Verification doublons
    $sql = "SELECT COUNT (Role_Assos) FROM t_bureau where t_bureau.Id_Assos= :Id_Assos";
    $res = $db->query($sql);
    $Nb = $res->fetchColumn();
    $res->closeCursor();
    if ($Nb > 0) {
        echo "Il existe déjà un rôle de ce type pour votre association";
        header("Location: index.php");
        exit();
    }

    Role_Assos
    est mon index sur 2 colonnes
    Id_Assos
    est passé par la variable $_POST du formulaire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdoStat->bindValue(':Id_Assos', $_POST['Id_Assos'], PDO::PARAM_INT);
    ceci plus loin dans mon code.

    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
    //Verification doublons
    $sql = "SELECT COUNT (Role_Assos) FROM t_bureau where t_bureau.Id_Assos= :Id_Assos";
    $res = $db->query($sql);
    $Nb = $res->fetchColumn();
    $res->closeCursor();
    if ($Nb > 0) {
        echo "Il existe déjà un rôle de ce type pour votre association";
        header("Location: index.php");
        exit();
    }
     
     
    // On ajoute une entrée dans la table 
     
    $pdoStat = $db->prepare('INSERT INTO t_bureau VALUES(NULL,:Id_Assos,:Id_Role,:Id_Droit,:Nom,:Prenom,:Email,:Telephone,:Adresse,:CodePostal,:Ville_Membre,:Identifiant,:Passwords,:Photo,:PhotoReduit)');
     
    //on lie chaque marqueur à une valeur
     
    $pdoStat->bindValue(':Id_Assos', $_POST['Id_Assos'], PDO::PARAM_INT);

    Avez vous un idée?
    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 566
    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 566
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    La première requête SELECT COUNT (Role_Assos) FROM t_bureau where t_bureau.Id_Assos= :Id_Assos"; compte le nombre de rôles pour l'identifiant de l'association. Ce ne sont pas forcément des doubles.
    Par exemple, s'il y a un rôle président, un rôle trésorier et un rôle secrétaire, cette requête renverra 3 alors que tout va bien, il n'y a pas de doublons.
    De plus, pour certains rôles, il est normal d'avoir plusieurs personnes. Par exemple, avoir deux vice-présidents est chose courante.
    Cf. ici : https://www.associatheque.fr/fr/fonc...nt-bureau.html

    Pour une réponse plus précise, merci de communiquer le DDL complet des tables et index concernés (script CREATE TABLE et CREATE INDEX).

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 53
    Par défaut
    Bonjour et merci pour la remarque relative au fait qu'il peut avoir plusieurs vice-président, etc

  4. #4
    Membre chevronné Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultante en systèmes d'information
    Inscrit en
    Juillet 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultante en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 109
    Par défaut
    Bonjour,

    Juste 2 remarques même si le problème semble 'résolu' :

    • PHP n'a rien à voir avec le SQL Procédural qui est du code SQL spécifique chargé sur le serveur MySQL,
    • La solution envisagée ne gère pas les accès concurrents (2 clients exécutant simultanément/parallèlement le même code)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/02/2010, 23h06
  2. Réponses: 3
    Dernier message: 17/05/2004, 17h28
  3. Questions sur les indexations
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 11h38
  4. requete sur un dossier
    Par vedder dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/03/2004, 14h05
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 11h24

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