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 :

Comment puis-je trier les données affichées par la BDD ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 18
    Points
    18
    Par défaut Comment puis-je trier les données affichées par la BDD ?
    Bonjour,

    Pour illustrer la chose et que ça soit bien clair pour vous ma base de donnée se compose de

    2 tables :

    - Contenu
    - Membres

    Dans la table membre j'ai créer une colonne (id_group) lorsque je crée manuellement un compte j'inscris une de ces valeurs :

    - Administrateur
    - Super utillsiateur
    - Utilisateur

    Le contenu est exporté de cette manière (j'utilise angular js pour filtrer mes données)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $query="select distinct c.id, c.structure, c.civilite, c.prenom, c.nom, c.categorie from db_111 c order by c.id";
    $result = $mysqli->query($query) or die($mysqli->error.__LINE__);
     
    $arr = array();
    if($result->num_rows > 0) {
    	while($row = $result->fetch_assoc()) {
    		$arr[] = $row;	
    	}
    }
    $json_response = json_encode($arr);
     
     
    echo $json_response;
    J'aimerais savoir si c'est possible de mettre une condition pour afficher les données d'une colonne ENUM

    Exemple :

    Nous avons la colonne c.categorie qui comporte 5 valeurs enums :

    - Cheval
    - Chien
    - Sourie
    - Chat
    - Poisson

    J'aimerais savoir si il est possible de trier l'affichage selon les droits d'utilisateurs (administrateur, super utilisateur, utilisateur)

    Si chien est coché, l'utilisateur ne peut pas voir le contenu de la fiche complète (nom prenom etc..)

    Etc.. controler l'affichage d'une fiche par rapport à ce qui est coché dans un SET ENUM , est-ce possible de faire ceci depuis le script SQL ??

    Merci pour votre aide !

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ya-t-il quelque part dans la base de donnée quelque chose qui relie le champ id_group et les categorie auxquelles il a accès ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Invité
    Invité(e)
    Par défaut
    Konnichiwa,

    On aurait gagné du temps si, au lieu de "décrire" les tables, tu nous avais donné tout de suite leur structure.
    (qu'on peut afficher via phpMyAdmin)

    Et, comme le demande Celira, leur relation.





    Citation Envoyé par allowed Voir le message
    ...- Administarteur
    C'est Noël Godin qui gère ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Oui vous avez raison ! Voici des screenshot illustrant le squelette de ma base de donnée..

    Ahaha Administarteur ! Je me suis trompé

    Nom : Capture d’écran 2016-05-25 à 12.30.14.png
Affichages : 621
Taille : 102,4 Ko

  5. #5
    Invité
    Invité(e)
    Par défaut
    Et db_111 ?


    N.B. Cette souris sourit.
    Nom : image-ratatouille-2.jpg
Affichages : 581
Taille : 13,6 Ko

    Et si tu pouvais ré-expliquer, car je n'ai pas compris grand chose...
    • "trier l'affichage" de quoi ?
    • ...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Nom : Capture d’écran 2016-05-25 à 12.46.32.png
Affichages : 603
Taille : 87,9 Ko

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il nous manque toujours le lien entre groupe et catégorie. Comment sais-tu à quoi ton utilisateur a la droit d'accéder ?

    @jreaux : je pense qu'il faut traduire "trier l'affichage" par "filtrer les données remontées selon les droits de l'utilisateur connecté"
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par allowed Voir le message
    J'aimerais savoir si il est possible de trier l'affichage selon les droits d'utilisateurs (administrateur, super utilisateur, utilisateur)

    Si chien est coché, l'utilisateur ne peut pas voir le contenu de la fiche complète (nom prenom etc..)

    Etc.. controler l'affichage d'une fiche par rapport à ce qui est coché dans un enum, est-ce possible de faire ceci depuis le script SQL ??
    Tu peux nous la refaire en plus CLAIR ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "trier l'affichage" de quoi ?
    "Si chien est coché" où ?
    "dans un enum" lequel ?
    => Un bout de code (HTML/...) ne serait pas de trop !

  9. #9
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Celira Voir le message
    Il nous manque toujours le lien entre groupe et catégorie. Comment sais-tu à quoi ton utilisateur a la droit d'accéder ?

    @jreaux : je pense qu'il faut traduire "trier l'affichage" par "filtrer les données remontées selon les droits de l'utilisateur connecté"
    Il y'a aucun lien entre les deux, j'utilise la base de donnée membres pour connecter l'utilisateur a la base de donnée et db_111 pour afficher le contenu en ANGULAR JS. Peut-on lier et controler ce que l'utilisateur fait selon son ID_GROUP??

    Citation Envoyé par jreaux62 Voir le message
    Tu peux nous la refaire en plus CLAIR ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "trier l'affichage" de quoi ?
    "Si chien est coché" où ?
    "dans un enum" lequel ?
    => Un bout de code (HTML/...) ne serait pas de trop !


    Le soucis c'est que l'affichage se fait en ANGULAR JS c'est ce qui complique le problème http://www.developpez.net/forums/d15...s/#post8642682

    Je suis navré si vous m'avez mal compris c'est difficile de trouver les mots dans certaines situations, ce que je recherche concrètement a faire c'est filtrer le contenu de la base DB 111 affiché selon le droit d'utilisateur choisit de la base de donnée (Membres) dans la colonne id group, j'espère que c'est un peu plus clair..

    Il y'a un set dans DB_111 avec dans la colonne "Categorie" 5 SET (possibilité d'en sélectionner plusieurs ou un)

    J'aimerais contrôler et filtrer le contenu qui est affiché selon les droits d'utilisateur et selon ce qui est coché dans la colonne catégorie

    On a 3 fiches dans DB 111

    Example

    - Si poisson est dans la colonne Categorie (ne pas afficher la fiche si l'utilisateur n'a pas les droits de super utilisateur)
    - Si cheval est dans la colonne Categorie (Seul l'administrateur peut voir la fiche sur le site)

    Comment controler tout ca coté serveur ?

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon, je vais essayer de résumer :
    1. Un utilisateur se connecte à l'application.
    2. L'application (côté client, donc en Angular) fait une demande des données à afficher au serveur (le script PHP)
    3. Le serveur répond avec uniquement les données auxquelles l'utilisateur a accès.
    4. L'application angular affiche les données reçues.

    Que ce soit de l'angular RESTFull ou une application "classique", le principe reste le même : ne sortent du serveur que les données auxquelles l'utilisateur a accès.

    Donc au niveau du serveur, il te faut un moyen de savoir à quoi l'utilisateur a accès. Visiblement, il doit y avoir un lien entre l'utilisateur (ou le groupe auquel il appartient) et les catégories : soit par une map en dur dans le code PHP, soit par une table de correspondance.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Celira Voir le message
    Bon, je vais essayer de résumer :
    1. Un utilisateur se connecte à l'application.
    2. L'application (côté client, donc en Angular) fait une demande des données à afficher au serveur (le script PHP)
    3. Le serveur répond avec uniquement les données auxquelles l'utilisateur a accès.
    4. L'application angular affiche les données reçues.


    Donc au niveau du serveur, il te faut un moyen de savoir à quoi l'utilisateur a accès.

    Que ce soit de l'angular RESTFul ou une application "classique", le principe reste le même : ne sortent du serveur que les données auxquelles l'utilisateur a accès.
    Oui ! C'est exactement ca !

    Comment je peux faire dans ce cas là ? Etant donné que j'affiche mes données avec angular JS ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    J'ai réussis à parvenir a ce dont j'avais besoin tout seul comme un grand ! C'est pas très propre mais ca marche et c'est une solution temporaire, je dois changer la structure de ma base de donnée pour faire quelque chose de plus propre

    WHERE (c.COLONNE not REGEXP "^MOTCEF")
    Ceci me permet d'exclure ou de trouver les mots dans une colonne en particulier et ca fait bien l'affaire pour l'instant, a l'aide d'une condition php j'ai pu faire ce dont j'avais besoin temporairement, je tiens à dire que je déconseille cette solution, c'est par ce que la structure de ma base de donnée n'est pas à la norme, chose qui va changer d'ici peu.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2011, 17h45
  2. Réponses: 5
    Dernier message: 30/11/2010, 17h04
  3. Réponses: 1
    Dernier message: 30/01/2010, 20h25
  4. Réponses: 4
    Dernier message: 01/03/2007, 14h24
  5. Trier les données dans 1 tableau par ordre décroissant
    Par Blunet dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 23/11/2005, 09h56

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