[RESOLU] Probleme Object {0= ...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Probleme Object {0= ...

Re: Probleme Object {0= ...

par InfoGeo » 16 oct. 2013, 11:43

Sujet résolu !


J'ai opté pour ceci avec l'aide de qqun ^^:

if (isset($_GET['area'])){
			try {
				$area = $_GET["area"];
				$return_arr = array();
				$BdD = new PDO('mysql:host=localhost;dbname=db_actis', 'root', '');
				$stmt = $BdD->prepare("SELECT DISTINCT BP_name FROM table_actis WHERE Regions = :area and BP_name != '' ORDER BY BP_name ASC");
				$stmt->execute(array('area' => strtoupper($area))); 
				while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
					$return_arr[] =  $row;
				}
			$resultat['tabBP'] = $return_arr;
			} 		
			catch(PDOException $e) {
				echo 'ERROR: ' . $e->getMessage();
			} 
		}


[javascript]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);
}

if (paysORarea !="world") { // récupération par requete SQL, tableau sous forme d'object
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["BP_name"];
formulaire.select_BPname.options[i+1].text = tab_BP["BP_name"];
}
formulaire.select_BPname.options.selectedIndex = 0;
}
else {
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;
formulaire.select_BPname.options[i+1].text = tab_BP;
}
formulaire.select_BPname.options.selectedIndex = 0;

}
}[/javascript]



Merci pour votre aide =)

Re: Probleme Object {0= ...

par xTG » 14 oct. 2013, 19:17

j ai essayé quelque chose comme ca:
Tu retournes la ressource de la requête et non ses résultats.
http://www.phpdebutant.org/article66.php

Je pense avoir compris pourquoi tu avais un Objet en sortie.
array_unique conserve les clés, or en Javascript on ne peut avoir un tableau avec des clés intermédiaires inexistantes il me semble.
Donc il créerai une tambouille qui résulterait en un objet.
Toujours est-il qu'avec une bonne requête SQL tu n'auras pas besoin de cette fonction... (le distinct fait le boulot)

Re: Probleme Object {0= ...

par InfoGeo » 14 oct. 2013, 16:41

j ai essayé quelque chose comme ca:
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);		
		}
Mais malheureusement ca ne marche pas

Re: Probleme Object {0= ...

par InfoGeo » 14 oct. 2013, 16:11

Merci de ta réponse, je suis en effet pas tres a l aise avec SQL

Apparemment quand je met en commentaire:
[javascript]$tableau = array_unique($tableau);[/javascript]
mes select se remplissent (les valeurs sont fausses car il ya des doublons, que mon array unique permettait de supprimer mais les select se remplissent normalement).

Sinon je fais ca par la suite:
print json_encode($resultat);

Re: Probleme Object {0= ...

par xTG » 14 oct. 2013, 16:03

Déjà...
if (strtolower($area) == strtolower($champs["Regions"]))
La clause WHERE en SQL tu connais pas ? :P

Enfin es-tu certain que ce code est le même pour les trois appels ?
Où est utilisé $resultat['tabBP'] ?

Dans ce que tu nous montres il n'y a rien qui pourrait créer un objet JS.

Probleme Object {0= ...

par InfoGeo » 14 oct. 2013, 15:06

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 =)


Voici mon code:

[javascript]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;
formulaire.select_BPname.options[i+1].text = tab_BP;
}
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]


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 :/