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

Bibliothèques & Frameworks Discussion :

Object {0= etc


Sujet :

Bibliothèques & Frameworks

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 Object {0= etc
    Bonjour,

    Désolé pour le titre mais je ne savais vraiment pas quoi mettre ... Je vous explique mon probleme:
    Je souhaite, dans une fenetre de filtres, modifier le select affichant la liste des business Partner suivant le choix de la Régions ou du pays de l'utilisateur.

    Exemple, l'utilisateur choisis world, le select BP affiche: A,B,C,D,E,F,G
    l'utilisateur choisis EMEA( Europe Middle East & Africa), le select BP affiche: A,C,D,F

    Pour les pays, je n'ai apparemment aucun probleme, mais pour les régions, il y a des soucis :/ J'ai 3 régions: Americas, Emea et Apac, pour APAC ca marche mais pas pour les deux autres (le select est totalement vide)

    pourquoi ? O_O

    Mon titre vient du fait que j'ai utilisé firebug, et avec lui quand je vérifie mon tableau(tab_BP) contenant la liste des Business Partner en fonction du choix de l utilisateur, j'obtiens:
    • - Object { 0 = "3CORP TECHNOLOGY DIS", 1="ADVANCED SOLUCIONES ", .......} pour AMERICAS
      - Object { 0 = "2020 Mobile Nordic A", 1="ACR CENTRE ", .......} pour EMEA
      - ["ABLECOM", "ABS India Private Li", "ABS INDIA PVT LTD", 75 more...] pour APAC


    Comme vous pouvez le constater il n y a pas de Object pour APAC, or c'est le seul qui marche ... ^^

    Donc si vous avez une idée du pourquoi et du comment, partagez votre savoir svp =)


    javascripti mon code:

    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
    var tab_BP="";	
    function ChangeBPselect(paysORarea, choix){
    	if (document.layers){
    		formulaire = document.forms.ListeBP;
    	}
    	else{
    		formulaire = document.ListeBP;
    	}
    	if (choix == "select_country") {
    		url = "country=" + paysORarea.trim();
    		ajax_call(url, function(json){
    			tab_BP = json['tabBP'];
    		});	
    	}
    	if (choix == "select_area") {
    		url = "area=" + paysORarea;
    		ajax_call(url, function(json){
    			tab_BP = json['tabBP'];
    		});	
    	}
    	if (paysORarea =="world") {			
    		tab_BP = cleanArray (Col_BP_name);				
    	}   
    	formulaire.select_BPname.options.length = tab_BP.length + 1;
    	formulaire.select_BPname.options[0].value = "all";
    	formulaire.select_BPname.options[0].text = "all";
    	for (i=0; i<tab_BP.length; i++){
    		formulaire.select_BPname.options[i+1].value = tab_BP[i];
    		formulaire.select_BPname.options[i+1].text = tab_BP[i];
    	}
    	formulaire.select_BPname.options.selectedIndex = 0;
    }
    function ajax_call(what2do, callback){
    	$.ajax({	
    		type: "GET",
    		async: false,
    		dataType: "json",
    		url: "data.php?" + what2do,
    		success: function(json) {
    			callback(json);
    javascript
    })php	};

    Code php : 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
    function GetListeBPArea ($area){
    	$req_array = mysql_query('SELECT Regions, BP_name FROM `table_actis` ORDER BY `BP_name` ASC');
    	$tableau = array();
    	$temp=""; //permet d'avoir une liste et de gérer les doublons (c'est pour ca qu'on trie par BP_name)
    	while ($champs = mysql_fetch_array($req_array)) {
    		if (strtolower($area) == strtolower($champs["Regions"]))	{
    			if ($champs["BP_name"] !="" and $champs["BP_name"] !=null){
    				if ($temp==""){
    					$tableau[] = $champs["BP_name"];
    					$temp = $champs["BP_name"];
    				}
    				Else {
    					if ($temp != $champs["BP_name"]) {
    						$tableau[] = $champs["BP_name"];
    						$temp = $champs["BP_name"];
    					}
    				}
    			}
    		}
    	}
    	$tableau = array_unique($tableau);
    	return $tableau;
    }
    if (isset($_GET["area"])){
    	$area = $_GET["area"];
    	$resultat['tabBP'] = GetListeBPArea ($area);		
    }


    J'utilise Wamp avec PhpMyAdmin, les colonnes BP_name, Country et Regions sont en varchar(20) utf8_general_ci


    J'attend avec impatience votre aide parce que la je comprend vraiment pas :/

  2. #2
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    C'est quoi ce truc pour gérer les doublons Il y a mieux pour gérer ça au niveau SQL (je pense à distinct, group by, etc en fonction du cas) et pourquoi tu n'ajoutes pas le filtre de la région dans le where directement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'SELECT Regions, BP_name FROM `table_actis` WHERE  Regions = `'. strtolower(echapper($area)) .'` ORDER BY `BP_name` ASC'
     
    // ++ faire une fonction pour "echapper" la chaîne passée en GET !
    Ta boucle PHP ne sert à rien ! Laisse SQL filtrer et ramener une liste propre des résultats souhaités.
    Une fois que tout ça sera résolu, tu n'auras plus besoin du array_unique qui doit, je pense, êter al cause du problème

    Il ne faut pas que tu récupères un Object mais un Array. (comme pour APAC)

  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
    Merci de ta réponse !
    Cependant, je ne comprend pas pourquoi array_unique, marcherait pour APAC et pas pour les autres ?

    Je ne comprend pas non plus le code que tu as fourni :/
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Regions, BP_name FROM `table_actis` Regions = `'. strtolower(echapper($area)) .'` WHERE  ORDER BY `BP_name` ASC

    Ne serait ce pas plutot :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Regions, BP_name FROM `table_actis` WHERE Regions = `'. strtolower(echapper($area)) .'` ORDER BY `BP_name` ASC

    Je ne comprend pas non plus a quoi sert la fonction échapper, je fais:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $area = $_GET["area"];

    Alors strtolower($area) ne suffirait pas ?

    Et la si je fais:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_array = mysql_query('SELECT DISTINCT BP_name FROM `table_actis` WHERE Regions = `'. strtolower($area) .'` ORDER BY `BP_name` ASC');

    $req_array va contenir la liste des BP sans doublons !?


    Edit: c bien le req_array comme tu l as suggérer qui pose apparemment probleme car en le mettant en commentaire, mon select se remplie (mal vu qu il ya du coup des doublons, mais il se remplie)

  4. #4
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    marcherait pour APAC et pas pour les autres ?
    Peut-être qu'il n'y a pas de doublons pour le code région "APAC" ?

    J'ai fait une erreur de copier/coller Le WHERE est bel et bien à l'endroit où tu l'as mis.

    Alors strtolower($area) ne suffirait pas ?
    Non car qui te dit qu'un petit malin ne s'est pas amusé à mettre n'importe quoi dans $_GET["area"] ? Fais quelque recherche du côté des Injections SQL, du cross scripting. Fais au moins le minimum côté sécurité pour échapper les caractères qui doivent l'être

    Et la si je fais:

    Code :Sélectionner tout - Visualiser dans une fenêtre à part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_array = mysql_query('SELECT DISTINCT BP_name FROM `table_actis` WHERE Regions = `'. strtolower($area) .'` ORDER BY `BP_name` ASC');
    $req_array va contenir la liste des BP sans doublons !?
    Oui

  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
    Encore merci pour ta réponse

    J'ai essayé de faire ceci du coup:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function GetListeBPArea ($area){
    	$req_array = mysql_query('SELECT DISTINCT BP_name FROM `table_actis` WHERE Regions =`'. $area .'` ORDER BY BP_name ASC');	
    	return $req_array;
    }
    if (isset($_GET["area"])){
    	$area = $_GET["area"];
    	$resultat['tabBP'] = GetListeBPArea ($area);		
    }

    Malheureusement ca ne marche pas, pourtant quand j ai fait un test sous PhpMyAdmin (requete sql):

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT BP_name
    FROM table_actis
    WHERE Regions = 'AMERICAS'
    ORDER BY BP_name ASC

    ca m a bien donné la liste des BP pour AMERICAS

    Je pense que c peut etre une histoire de ' ou ` mal placé (ca m embrouille oO).

    Sinon pour l instant je veux au moins essayer sans sécurité (je prefere faire petit a petit), pour voir si ca marche deja, ce qui n est pas le cas pour l instant.
    J'ai pas mis de strtolower car dans la base de donnée les données de la colonne Regions sont en Majuscules

  6. #6
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    es-tu sûr que $area vaut 'AMERICAS' ?

    Si c'est tout en majuscule dans ta BDD, alors mets $area en majuscule d'office :

    En effet, attention aux quotes ...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req_array = mysql_query("SELECT DISTINCT BP_name FROM table_actis WHERE Regions = '". strtoupper($area) ."' ORDER BY BP_name ASC");	
    return $req_array;

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/02/2014, 17h03
  2. [OL-2010] Erreur "object library invalid etc"
    Par Wanaka dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 04/11/2013, 16h23
  3. Determiner si un Object est un String, une image, etc.
    Par aristeas dans le forum Langage
    Réponses: 2
    Dernier message: 11/07/2009, 20h03
  4. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28

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