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 :

Ajouter une colonne à un résultat mysqli_fetch_array()


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut Ajouter une colonne à un résultat mysqli_fetch_array()
    Bonjour,

    J'ai un petit souci à régler, je m'explique :
    Mettons que j'ai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query="select * from membre where id=".$username;
    $result = mysqli_query($connection,$query) or die('error making query8');
    $data=mysqli_fetch_array($result);
    $data est bien un tableau en php contenant le résultat de la requete $query et donc tous les champs de la table membre

    Je voudrais ajouter à ce tableau une colonne qui s'appellerait "traité" avec comme valeur par défaut 0 et que je viendrais plus tard passer à 1 car je compte plus traité ce tableau et indiqué 1 dans cette colonne si la valeur a été trouvée
    Comment ajouter une colonne "traite" dans ce cas ? Cela reviendrait à avoir un tableau avec toute la structure de la table membre et en plus une case qui n'a donc rien à voir appelé "traite" avec 0 dedans

    Merci par avance

  2. #2
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 931
    Points
    931
    Par défaut
    Bonjour,

    Deux solutions : changer la requête ou modifier le tableau a posteriori en PHP.

    Pour la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query="select membre.*, 0 as traite from membre where id=".$username;
    (en supposant un format numérique à "traite")

    Et ici pour ajouter un élément à un tableau (simple ou associatif).

    Mais je vois mal l'utilité d'inclure cette information à $data dans la mesure où tu lis un enregistrement sur son identifiant (en supposant que c'est le sens de la colonne "id") ; ce n'est pas un traitement unitaire ?

    Cordialement.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Merci pour cette réponse Je ne savais pas qu'on pouvait ajouter des colonnes à une requete mysql comme ça. Je pensais qu'on ne pouvait qu'afficher des champs de la traite ou des zones de calcul genre SUM(champ) as total par exemple. Mais alors ça du coup c'est top. Du coup en faisant ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *,0 as traite,1 as valide FROM `membre`
    ça me retourne tous les champs de la table "membre" et 2 autres champs qui s'appellent "traite" et "valide" en les initialisant avec les valeurs que je souhaite ici respectivement 0 et 1 et du coup lorsque je passerais mysqli_fetch_array() sur cette requête j'aurais bien dans un tableau les 2 colonnes "traite" et "valide" et je pourrais normalement les modifier comme je le veux.
    Je modifierais ce tableau pour passer "traite" à 1 sur certaines lignes.
    Reste qu'après il me restera à trouver un moyen rapide de sélectionner dans ce tableau uniquement les lignes qui auront pour valeur "traite=0". Serait obligé de parcourir tout le tableau pour vérifier si traite=0 ?

    Sachant que c'est du tableau php j'ai bien peur que oui, seul mysql est capable de sélectionner des données sur un ou plusieurs critères il me semble en tout cas

    Merci

  4. #4
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 931
    Points
    931
    Par défaut comparaison de tableaux
    Bonjour pas30,

    Ce n'est pas propre à MySql, c'est pareil pour toutes les requêtes SQL.
    Tu fais donc un traitement itératif, et tu empiles les $data dans un tableau de tableaux ?

    Pour une comparaison d'ensemble avec PHP, tu pourrais préparer deux jeux de tableaux associatifs, un qui contient tous tes identifiants en clé et "traite" en valeur, que tu fais évoluer dans ton traitement, et un autre tableau avec tes identifiants en clé et 1 en valeur. Et là, tu dois pouvoir utiliser array_diff_assoc ou une de ses variantes pour repérer d'un coup tous les cas où "traite" ne vaut pas 1 (le résultat de la comparaison est un tableau).

    Mais pour le coup je ne vois pas de valeur ajoutée à inclure "traite" dans la requête SQL dans ce cas-là.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

Discussions similaires

  1. Ajout d'une colonne au résultat d'une requête Select
    Par Namm Comm dans le forum Développement
    Réponses: 5
    Dernier message: 30/03/2012, 02h14
  2. [JTable] ajouter une colonne de checkbox
    Par nawel dans le forum Composants
    Réponses: 3
    Dernier message: 04/05/2005, 14h07
  3. [ADO.Net][VB.NET] Comment ajouter une colonne Integer à un DataTable ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 2
    Dernier message: 20/04/2005, 12h08

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