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 :

Requête SQL [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut Requête SQL
    Bonjour,
    Je vous explique mon problème qui peut-être plutot long.
    Du coup, j'ai une base de données wordpress qui récupère tout les enregistrements (nom,prenom etc) renseignés sous forme de numéro, par exemple : 6.3 = nom ; 6.6 = prenom , 9 = adresse et ainsi de suite...
    J'ai éfféctué que quand chaque utilisateur qui rentre ses informations cela s'affiche sur une page "verif.php" avec soit un bouton validé, soit un bouton supprimé.

    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
     
     
    <body>
     
     
     
    <?php
     
    		$connect =  new pdo("mysql:host=localhost;dbname=ffnpro_v2;port=3306;charset=utf8" , 'root' , '');
    		$data = $connect->query("SELECT entry_id 
        
        , MAX(CASE WHEN meta_key = '46.1'      THEN meta_value END) '46.1'   
        , MAX(CASE WHEN meta_key = '6.3'       THEN meta_value END) '6.3'     
        , MAX(CASE WHEN meta_key = '6.6'       THEN meta_value END) '6.6'     
        , MAX(CASE WHEN meta_key = '57'        THEN meta_value END) '57'
        , MAX(CASE WHEN meta_key = '88'        THEN meta_value END) '88'
        , MAX(CASE WHEN meta_key = '87'        THEN meta_value END) '87'
        , MAX(CASE WHEN meta_key = '75'        THEN meta_value END) '75'
        , MAX(CASE WHEN meta_key = '66'        THEN meta_value END) '66' 
        , MAX(CASE WHEN meta_key = '9'         THEN meta_value END) '9' 
       
         FROM bouffngf_entry_meta
         GROUP
         BY entry_id  ORDER BY entry_id ASC  ;");
     
     
            ?>
            <img src="../../../img/logo_ffn.png" class="dpl"  height="150px" width="150px">
            <h1  id="researchh" style="text-align:center;margin-right:px; ">- WOOCOMERCE VALIDATION CONTROL -</h1>
            <h2 id="back">Cliquer <a href="../../../index.php"><i style="color:#68c3e9; ">ici</i></a> pour revenir a l'accueil</h2>
     
            <br><br><br>
            <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Rechercher..." title="Taper un administrateur" style="margin-top:100px;margin-left: 470px;">
     
     
     
            <div class="container">                
    <div class="table-responsive">          
    <table class="table" id="myTable" style="border-collapse:collapse;">
     
      <tbody>
      <tr>
     
        <th>Identité</th>
        <th>Centre</th>
        <th>Adresse</th>
        <th>Valider</th>
        <th>Naissance</th>
        <th>Email</th>
        <th>Téléphone</th>
        <th>Supprimer</th>
        </tr> 
     
            <?php 
     
     
            $charAuthorized = "0123456789";
            $lenghtKey = 5;
            $charAuthorized = str_shuffle($charAuthorized);
            $randomkey = substr($charAuthorized, 0, $lenghtKey);
     
     
     
     
    $espace = " ";
    foreach ($data->fetchAll() as $key => $q) {
     
         echo "<tr id='tr_table' solid grey;'>";
         echo strtoupper("<td style='font-size:11px;text-transform:uppercase;'><span>".$q["46.1"]."$espace".$q["6.3"]."$espace".$q["6.6"]."$espace n*  ");    echo date('Y');echo'-';echo $randomkey;  echo"</span></td>";
         echo strtoupper("<td style='font-size:11px;text-transform:uppercase;'>Fédération française de naturisme</td>");
         echo strtoupper("<td style='font-size:10px;text-transform:uppercase;'>".$q["57"]."<br>$espace".$q["88"]."<br>$espace".$q["87"]."</td>");
         echo '<td><a href="add_verif.php?entry_id='.$q['entry_id'].'&licence=2019-'.$randomkey.'&centre=Fédération française de naturisme"><img src="../../../img/validate.png"   height="25px" width="25px" ></a></td>';
         echo'<td><img src="../../../img/birthday.png" height="25px" width="25px" style=""  title='.$q['9'].'></td>';
         echo'<td><a href="mailto:'.$q['75'].'"><img src="../../../img/email.png" height="25px" width="25px" style=""></td>';
         echo'<td><img src="../../../img/contact_phone.png" height="25px" width="25px" style=""  title='.$q['66'].'></td>';
         echo "<td><a href='delete_verif.php?entry_id=".$q['entry_id']."'> <img src='../../../img/delete.png' height='25px' width='25px' style='' ></a> </td>";
         echo "</tr>";
     
     
     
    }
     
     
    ?>
    Quand on clique sur le bouton de validation, il y'a cette page "add_verif.php" qui s'active

    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
     
     
     
    <?php
     
    $connect = new PDO('mysql:host=localhost;dbname=ffnpro_v2;port=3306;charset=utf8', 'root', '');
     
    $entry_id = $_GET["entry_id"]; 
    $randomkey = $_GET['licence'];
    $centre = $_GET['centre'];
     
    $queryPrepared = $connect->prepare("
    
    INSERT INTO personnes (entry_id) SELECT entry_id FROM bouffngf_entry_meta WHERE entry_id='".$entry_id."'  GROUP BY entry_id;
    UPDATE personnes
    SET genre_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key IN ('46.1' , '46.2') AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET nom_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='6.3' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET prenom_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='6.6' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET age_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='9' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET telephone_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='66' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET email_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='75' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET adresse_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='57' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET codep_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='88' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET pays_personne = (SELECT meta_value FROM bouffngf_entry_meta WHERE meta_key='87' AND entry_id = '".$entry_id."') WHERE entry_id='".$entry_id."';
    UPDATE personnes
    SET licence = '".$randomkey."' WHERE entry_id='".$entry_id."' ;
    UPDATE personnes
    SET centre_emetteur = 'Fédération française de naturisme' WHERE entry_id='".$entry_id."';
    DELETE FROM bouffngf_entry_meta WHERE entry_id='".$entry_id."' AND status != -1;
    "); 
     
    $queryPrepared->execute(["entry_id"=>$entry_id,"licence"=>$randomkey,"centre_emetteur"=>$centre]);
     header("Location: verif.php");
     
    ?>
    La requête marchait mais ne marche plus.
    Je veux donc que quand on clique sur validé ça l'affiche sur la page avec tout les utilisateurs comme si il l'a rejoignait.
    J'espère avoir été assez clair.
    PS: La page verif.php n'a aucun bug et la requete sert à sélectionner tout les enregistrements dans ma bdd.
    TABLE où les enregistrements sont en attente de validation [bouffngf_entry_meta] et celle ou je veux qu'ellle arrive [personnes].
    Voici quelques photos de ma base de données:
    Table personnes :
    Nom : bdd1.PNG
Affichages : 288
Taille : 111,3 Ko
    Table bouffngf_entry_meta :
    Nom : bdd2.PNG
Affichages : 282
Taille : 60,6 Ko
    et un petit aperçu de a quoi ressemble la structure de la table bouffngf_entry_meta :
    Nom : bdd3.PNG
Affichages : 279
Taille : 102,4 Ko

    Je vous remercie de votre aide, ça marchait très bien avant.

  2. #2
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    EDIT : Le problème vient peut-être du insert vu qu'il insert 0 ligne

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

    Il y a tant de choses à dire qu'on ne sait pas par où commencer

    • La requête marchait mais ne marche plus
      , qu'est-ce à dire, il y a un message d'erreur ? lequel ? il y a un résultat qui n'est plus celui obtenu jusqu'ici ? en quoi diffère -t- il ?
    • vous fournissez non pas une requête SQL mais du code PHP, or, ici c'est le forum sur le langage SQL
    • ce modèle de données est une véritable hérésie, les données sources sous forme de méta-modèle, admettons, mais une cible construite pour contenir des personnes et qui ne respecte aucune des formes normales et choisit des types inadaptés (tout en varchar), c'est vraiment n'importe quoi ! La table personne ressemble à un tableur excel où tout y est mélangé. Si vous en avez la possibilité, refaites (ou faites refaire) la modélisation à partir de zéro, vous y gagnerez à tout point de vue (fiabilité des données, performances, accès concurrents facilités, maintenance plus aisée...)
    • conséquence directe de la modélisation hasardeuse, toutes les colonnes sont nullables et ça, c'est la plaie
    • stocker l'âge d'une personne dans une BDD, c'est accepter de devoir consulter toutes les lignes tous les jours pour recalculer l'âge ! virez cette colonne, à remplacer par la date de naissance de type DATE


    EDIT et question subsidiaire : pourquoi avoir choisi une collation pour les caractères suédois ? vous travaillez pour un client suédois ?
    EDIT 2 je vois que le sujet a été déplacé dans le forum PhP, c'est parfait

  4. #4
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    Citation Envoyé par escartefigue Voir le message

    • , qu'est-ce à dire, il y a un message d'erreur ? lequel ? il y a un résultat qui n'est plus celui obtenu jusqu'ici ? en quoi diffère -t- il ?


    EDIT et question subsidiaire : pourquoi avoir choisi une collation pour les caractères suédois ? vous travaillez pour un client suédois ?
    Aucun message d'erreur , juste aucune insertion alors qu'avant ça insérais correctement.
    Dans la table j'ai juste modifié le auto increment sur l'entry_id je l'ai rajouté il n'y étais pas avant, et je suis obligé de le mettre pour pouvoir remplir à coté un formulaire.
    Et je ne travail pas pour un client suédois c'est par défault.
    EDIT : Le problème se situe dans la requete je pense sur add_veirf.php

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 600
    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 600
    Billets dans le blog
    10
    Par défaut
    S'il n'y a pas de message d'erreur c'est soit que vous êtes connecté sur une autre base, les insertions ne sont pas faites dans la base que vous consultez, soit qu'il y a eu un ROLLBACK, les insertions ne sont donc pas commitées.
    Mais le plus probable et qu'il y a un message que vous n'avez pas intercepté.

    Source possible : vous avez mis en oeuvre l'auto-incrément sur la PK, mais vous avez laissé la valeur intiale par défaut alors qu'il y avait déjà des lignes, d'où tentatives d'insertions de clefs en double qui sont évidemment rejetées.

    Surtout, que la résolution de ce problème technique ne vous fasse pas oublier l'essentiel : voir le responsable de la modélisation de la base pour qu'il vous propose un modèle de données cohérent, car là c'est une véritable bouse . S'il n'y a pas de personne qui connaisse les règles de modélisation dans votre entourage, vous pouvez vous faire aider en posant vos questions dans la section qui va bien, à savoir ici : https://www.developpez.net/forums/f6...sation/schema/

  6. #6
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Source possible : vous avez mis en oeuvre l'auto-incrément sur la PK, mais vous avez laissé la valeur intiale par défaut alors qu'il y avait déjà des lignes, d'où tentatives d'insertions de clefs en double qui sont évidemment rejetées.
    Je n'ai pas très bien coimpris ce qsue je devais changer, pouvez vous rentrer dans les détails sil vous plait ? Je suis sur que le problème est ce que vous insinuez

  7. #7
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    Le problème était qu'il y avait déjà du monde dans ma table personnes ce qui empechait les nouvelles entrées

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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