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 :

FOREACH trié [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 FOREACH trié
    Bonjour,
    Je vous mets dans la situation très vite, tout dabord , on a un tableau avec des utilisateurs lambda, donc petit foreach, tout va bien.
    Or, Je voudrais que toutes les utlisateurs soit trié par l'email de connexion qu'on a rentré , je m'explique :
    Imaginons un camping, LES FLOTS BLEUS -> se connecte à son espace camping -> donc à ce moment là on récupere l'email que le camping à rentré pour venir la comparé dans ma table camping avec le nom du camping, une simple reqûete comme ceci aurait suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT nom FROM camping WHERE email = "maildu@camping.fr";
    A ce moment là je me prend tout bêtement une ereur PDO me disant qu'il n'a pas réussi à le convertir en string.

    Le requête de mon foreach est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT entry_id,genre_personne,nom_personne,prenom_personne,age_personne,centre_emetteur,telephone_personne,email_personne,adresse_personne,codep_personne,ville_personne,pays_personne,licence,centre_emetteur  FROM personnes  ORDER BY entry_id DESC"
    Je suis donc censé relié ses deux requetes pour ne former qu'une seule, afin que quand un camping se connecte il tombe sur tout ses utilisateurs appartenant à son camping.
    Ce sont deux tables différentres, une table camping et une table personnes.
    Je vous remercie par avance de votre aide.
    PS : Le nom du camping ressort de la personne par la colonne "centre_emetteur"

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 256
    Par défaut
    Pour commencer, ta syntaxe SQL n'est pas bonne, essayes ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom FROM camping WHERE email LIKE 'maildu@camping.fr';
    Ensuite j'espères que tu ne fais pas ta requête dans la boucle foreach. Il te faut plutôt faire une seule requête sélectionnant ce que tu as besoin.

    Tu peux imbriqué une requête SELECT dans une autre.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    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 chrtophe Voir le message
    Tu peux imbriqué une requête SELECT dans une autre.
    C'est ce que j'ai essayé de faire comme ceci
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT entry_id,genre_personne,nom_personne,prenom_personne,age_personne,telephone_personne,email_personne,adresse_personne,codep_personne,ville_personne,pays_personne,licence,centre_emetteur FROM personnes WHERE(SELECT nom FROM camping WHERE email LIKE "camping@camping.fr") ORDER BY entry_id DESC
    Malheuresement cela me retourne un resultat vide alors qu'il y 'a une personne avec le nom du centre relié à l'email concerné, peut-être que la syntaxe n'est pas la bonne, je serais plus partis sur un inner join.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par JeremyPatraque Voir le message
    ...Le nom du camping ressort de la personne par la colonne "centre_emetteur"
    ...je serais plus partis sur un inner join...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql = "SELECT 
       P.entry_id, P.genre_personne, P.nom_personne, P.prenom_personne, P.age_personne, P.telephone_personne, P.email_personne, 
       P.adresse_personne, P.codep_personne, P.ville_personne, P.pays_personne, P.licence, P.centre_emetteur
    FROM personnes P
     
    INNER JOIN camping C 
       ON C.nom_camping = P.centre_emetteur
     
    WHERE C.email = 'maildu@camping.fr'
     
    ORDER BY P.entry_id DESC";
    Remarque : au lieu d'enregistrer dans centre_emetteur le nom du camping, on utilise de préférence l'id_camping (index auto-incrémenté de la table camping, qui est UNIQUE).

  5. #5
    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
    Je te remercie , ça marche parfaitement.
    Le sujet est résolu.
    Merci encore.

    EDIT : Je pense qu'il y a une probleme de concaténation dans mon code puisque sur sql il me sort les bonnes lignes, mais dans mon foreach, il ne m'affiche rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $data    = $connect->prepare("SELECT 
            P.entry_id, P.genre_personne, P.nom_personne, P.prenom_personne, P.age_personne, P.telephone_personne, P.email_personne, 
            P.adresse_personne, P.codep_personne, P.ville_personne, P.pays_personne, P.licence, P.centre_emetteur
            FROM personnes P
            INNER JOIN centres C 
            ON C.nom = P.centre_emetteur
            WHERE C.email = '".$_SESSION["email"]."'
            ORDER BY P.entry_id DESC;");
    Je pense que le $_SESSION est pas mal concaténé, même si pour moi ça à l'air d'être ok , je recupère bien l'email avec laquelle le camping s'est connecté donc il y a bien quelque chose dans ce $_SESSION,merci

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 256
    Par défaut
    ...je serais plus partis sur un inner join...
    C'est tout à fait vrai.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par JeremyPatraque Voir le message
    ...mais dans mon foreach, il ne m'affiche rien...
    1- Merci de montrer le code PHP COMPLET : depuis la requête jusqu'à son exécution et traitement (foreach...).

    2- quand on fait une requête préparée, ce n'est pas pour mettre une variable * dedans !
    (* que ce soit en $_GET, $_POST ou $_SESSION !)

  8. #8
    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
    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
     
    <?php session_start(); ?>
     
    <!DOCTYPE html>
    <html>
    <head>
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
      <link rel="stylesheet" type="text/css" href="fonts/material-design-iconic-font/css/material-design-iconic-font.min.css">
      <title>RECHERCHER UN LICENCIÉ(E) - FFN PRO</title>
      <link rel="stylesheet" href="css_list/popup.css">
      <link rel="stylesheet" href="../admin/personnes/css/list_personne.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
      <script src="js/recherche.js" type="text/javascript"></script>
    </head>
    <body>
     
      <?php
    		$connect =  new pdo("mysql:host=localhost;dbname=ffnpro_v2;port=3306;charset=utf8" , 'root' , '');
            $data    = $connect->prepare("SELECT 
            P.entry_id, P.genre_personne, P.nom_personne, P.prenom_personne, P.age_personne, P.telephone_personne, P.email_personne, 
            P.adresse_personne, P.codep_personne, P.ville_personne, P.pays_personne, P.licence, P.centre_emetteur
            FROM personnes P
            INNER JOIN centres C 
            ON C.nom = P.centre_emetteur
            WHERE C.email = '".$_SESSION['email']."'
            ORDER BY P.entry_id DESC;");
      ?>
     
      <img src="../../../img/logo_ffn.png" class="dpl" style="margin-left:40px;" height="150px" width="150px">
      <h1 id="researchh" style='margin-right:50px;'>- RECHERCHER UN LICENCIÉ(E) -</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 nom , un prenom ou une licence" style="margin-top:100px;margin-left: 470px;">
     
      <div class="container">                
        <div class="table-responsive">          
        <table class="table" id="myTable">
          <thead>
            <tr>
              <th>Identité</th>
              <th>Centre</th>
              <th>Adresse</th>
              <th>Naissance</th>
              <th>Email</th>
              <th>Téléphone</th>
              <th>Supprimer</th>
            </tr>
          </thead>
          <tbody>
     
             <?php 
     
     
              foreach ($data->fetchAll() as $key => $personnes) {
     
              $espace = " ";
     
    	        echo "<tr>";
              echo strtoupper("<td style='font-size:11px;text-transform:uppercase;'><span>".$personnes["genre_personne"]."$espace".$personnes["nom_personne"]."$espace".$personnes["prenom_personne"]."$espace n* :"       .$personnes['licence']."</span></td>");
              echo strtoupper("<td style='font-size:11px;text-transform:uppercase;'>".$personnes['centre_emetteur']."</td>");
              echo strtoupper("<td style='font-size:10px;text-transform:uppercase; padding-right: 200px;'>".$personnes["adresse_personne"]."<br>$espace".$personnes["codep_personne"]."$espace".$personnes["ville_personne"]."<br>$espace".$personnes["pays_personne"]."</td>");
              echo'<td><img src="../../../img/birthday.png" height="25px" width="25px" style="margin-left:25px"  title='.$personnes['age_personne'].'></td>';
              echo'<td><a href="mailto:'.$personnes['email_personne'].'"><img src="../../../img/email.png" height="25px" width="25px" style="margin-left: 10px;"></td>';
              echo'<td><img src="../../../img/contact_phone.png" height="25px" width="25px" style="margin-left:30px"  title='.$personnes['telephone_personne'].'></td>';
              echo "<td><a href='delete.php?entry_id=".$personnes['entry_id']."'> <img src='../../../img/delete.png' height='25px' width='25px' style='margin-left:20px' ></a> </td>";
              echo "</tr>";
     
              }
     
               ?>
     
        </tbody>
      </table>
      </div>
    </div>
     
    </body>
    </html>
    Voilà tout le code. Merci

  9. #9
    Invité
    Invité(e)
    Par défaut
    C'est ce que je pensais : il manque l'exécution de la requête : -> execute().

    A LIRE (+ FAIRE L'EXERCICE !) :




    Remarque :

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  3. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53
  4. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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