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

Langage PHP Discussion :

Récupérer une colonne de la base de données dans un tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut Récupérer une colonne de la base de données dans un tableau
    Bonjour,

    Je souhaiterai récupérer les colonnes de ma base de données dans des tableaux respectifs, exemple:
    Dans ma base de données j ai une colonne "Year" et une colonne "Country" je souhaiterai donc avoir, deux tableaux:
    Col_Year[] : contenant toutes les lignes de la base de données avec l'année correspondant à ces commandes (une commande par ligne)
    Col_Country[] : contenant toutes les lignes de la base de données avec le pays correspondant à ces commandes (une commande par ligne)

    Pour cela en surfant sur internet j ai trouvé la fonction php GetCol, qui permet normalement de justement récupérer une colonne d'une DB ...
    Cependant je n'arrive pas à l'utiliser, ça ne marche pas [bawling]

    Donc j espere que vous pourrez m'aider

    Voici mon code:


    Javascript:
    Code javascript : 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
    function ajax_call2(what2do, callback){
    $.ajax({	
    	type: "GET",
    	async: false,
    	dataType: "json",
    	url: "data.php?" + what2do,
    	success: function(json) {
    		callback(json);
    	}
    });		
    };
     
    var Col_BPname = new Array();
    var Col_Country = new Array();
    var Col_Net_EURO = new Array();
    var Col_Month = new Array();
    var Col_Quarter = new Array();
    var Col_Year = new Array();
    var Col_Regions = new Array();
    var Col_Offer_type = new Array();
    var Col_Releas_OXE = new Array();
    var Col_Users_with_sip = new Array();
    var Col_Additionnal_users_OF_1 = new Array();
     
    function GetDataBase() {
    var tab_nomColonne = ["BP_name", "Country", "Net_EURO", "Segment", "Month", "Quarter", "Year", "Regions", "Offer_type", "Releas_OXE", "Users_with_sip", "Additionnal_users_OF_1"];	
    for(var j=0;j<tab_nomColonne.length;j++){
    	url = "colonne=" + tab_nomColonne[j];
    	ajax_call2(url, function(json){
    		window["Col_" + tab_nomColonne[j].toString()] = json['lacolonne'];
    	});	
    }
     
    }
    tab_nomColonne, contient donc la liste de toutes mes colonnes


    php
    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
    $resultat = array();
     
    function DataBase($colonne) {
     
    try{
    	$db = new PDO('mysql:host=localhost;dbname=actis', 'root', '');
    }
    catch (Exception $e){
    	die('Erreur : ' . $e->getMessage());
    }
    $data = array();
    $data =& $db->getCol('SELECT '.$colonne.' FROM `actis_table`', $colonne);
     
    return $data;
    }
     
    if (isset($_GET["colonne"])){
    $colonne = $_GET["colonne"];
    $resultat['lacolonne'] = DataBase ($colonne);		
    }
     
    print json_encode($resultat);

    Je pense que je n'arrive pas a bien utiliser la méthode GetCol, mais je ne trouve pas beaucoup d exemples pour m'aider sur internet, c'est pourquoi je viens vers vous en espérant que vous pourrez m'éclairer=)

    j'ai découvert cette méthode ici:
    http://pear.php.net/manual/fr/packag...mon.getcol.php


    Geoffrey

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu n'as pas besoin de passer par une fonction Pear :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sth = $db->query('SELECT DISTINCT `Year` FROM `actis_table`');
    $Col_Year = $sth->fetchAll(PDO::FETCH_ASSOC);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut
    Salut ! Merci pour ta réponse rapide !

    J'ai essayé de mettre ce que tu m'as dit mais ca n'a malheureusement pas l'air de marché non plus ? je l'ai adapté, j ai fait ceci:

    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
    function DataBase($colonne) {
    try{
    	$db = new PDO('mysql:host=localhost;dbname=actis', 'root', '');
    }
    catch (Exception $e){
    	die('Erreur : ' . $e->getMessage());
    }
    $data = array();
    $sth = $db->query('SELECT DISTINCT '.$colonne.' FROM `actis_table`');
    $data = $sth->fetchAll(PDO::FETCH_ASSOC);
     
    return $data;
    }
     
    if (isset($_GET["colonne"])){
    $colonne = $_GET["colonne"];
    $resultat['lacolonne'] = DataBase ($colonne);		
    }
    on est d'accord que mon $data est bien un tableau contenant la liste de toutes les années par exemple de ma colonne ?
    Exemple: data[0] = 2011
    data[1] = 2012
    data[2] = 2011
    ...
    data[1000]= 2011 .... ?


    J'essaye de l'afficher dans un select juste pour tester et pour les valeurs ca me met pour le premier [object Object] et : "undefined" pour les autres.



    Aurais tu une idée du pourquoi et du comment ?



    PS: ce code est donc dans mon fichier php (data.php)
    Et le javascript dans mon fichier index.php

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comme ça alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sth = $db->query('SELECT DISTINCT '.$colonne.' FROM `actis_table`');
    while ($row= $sth->fetchAll(PDO::FETCH_NUM)) {
      $data[] = $row[0];
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut
    Merci pour ta réponse une nouvelle fois ! ^^

    il y a une amélioration ! cette fois dans mon select ca affiche bien "2011" pour le premier choix mais pour les autres ca affiche "undefined"

    Est ce lié au fait que tu as mis :

    ????
    En fait je comprend pas pourquoi c'est l'index 0 pour la ligne à chaque fois ?

    J'espere que tu pourras m'aider une nouvelle fois meme si tu m'as deja beaucoup aidé:

    Voila j'ai donc modifié mon code php comme tu me l'a recommandé:

    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
    function DataBase($colonne) {
    try{
    	$db = new PDO('mysql:host=localhost;dbname=actis', 'root', '');
    }
    catch (Exception $e){
    	die('Erreur : ' . $e->getMessage());
    }
    $data = array();
    $row = array();
    $sth = $db->query('SELECT DISTINCT '.$colonne.' FROM `actis_table`');
    while ($row= $sth->fetchAll(PDO::FETCH_NUM)) {
    	$data[] = $row[0];
    }			
    return $data;
    }
     
    if (isset($_GET["colonne"])){
    $colonne = $_GET["colonne"];
    $resultat['lacolonne'] = DataBase ($colonne);		
    }

    Le javascript n'a pas changé:

    Code javascript : 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
    var Col_BPname = new Array();
    var Col_Country = new Array();
    var Col_Net_EURO = new Array();
    var Col_Month = new Array();
    var Col_Quarter = new Array();
    var Col_Year = new Array();
    var Col_Regions = new Array();
    var Col_Offer_type = new Array();
    var Col_Releas_OXE = new Array();
    var Col_Users_with_sip = new Array();
    var Col_Additionnal_users_OF_1 = new Array();
     
    function GetDataBase() {
    var tab_nomColonne = ["BP_name", "Country", "Net_EURO", "Segment", "Month", "Quarter", "Year", "Regions", "Offer_type", "Releas_OXE", "Users_with_sip", "Additionnal_users_OF_1"];	
    for(var i=0;i<tab_nomColonne.length;i++){
    	url = "colonne=" + tab_nomColonne[i];
    	ajax_call2(url, function(json){
    		window["Col_" + tab_nomColonne[i].toString()] = json['lacolonne'];
    	});	
    }
     
    }


    Et je test l'affichage de mes tableaux avec un select que j'ai créé pour autre chose mais la j'ai juste remplacé le tableau de base par Col_Year:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0; i<BP_name.length; i++){
    	formulaire.select_BPname.options[i+1].value = Col_Year[i];
    	formulaire.select_BPname.options[i+1].text = Col_Year[i];
    }


    Donc apparemment ca rempli que le premier emplacement du tableau .... je ne sais pas si ca vient de la réception (au niveau JS) ou au niveau php.

    :'(


    PS quand je remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i=0; i<BP_name.length; i++){
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i=0; i<Col_Year.length; i++){
    Il affiche que :"2011" donc il considere bien que Col_Year est composé que d'un élément


    Geoffrey

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En fait je comprend pas pourquoi c'est l'index 0 pour la ligne à chaque fois ?
    0 c'est l'index de la colonne.

    Pour voir un peu plus d'où vient le problème, fais un var_dump($data);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. récupérer une valeur de la base de données dans une liste
    Par Marie_7 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/06/2015, 18h46
  2. Comment récupérer une image de la base de données et l'afficher dans un jasper?
    Par MasterMbg dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 16/04/2013, 11h41
  3. [MySQL] Afficher une base de donnée dans un tableau html
    Par Devilju69 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/06/2009, 17h19
  4. Réponses: 3
    Dernier message: 10/11/2008, 11h58
  5. récupérer une image de la base de données
    Par ijklm dans le forum Struts 1
    Réponses: 6
    Dernier message: 24/05/2006, 09h59

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