Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2008, 10h53   #1
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Calvados (Basse Normandie)

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 1
Points : 1
Par défaut [Tableaux] Mauvaises valeurs renvoyées

Bonjour

Alors j'ai un ptit soucis, lorsque j'execute cette fonction:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
	public function get_CodepByAdr($id)
	{
		//on récupère le code postal correspondant à l'adresse 
		$this->execute("select adresse_code_cp from adresse
						where id_adresse='".$id."'");
		//des erreurs?
		if (count($this->aErreurs)!=0)return array();
		//on parcourt le résultat du select
		while ($ligne = $this->oResultats->fetchRow(DB_FETCHMODE_ASSOC)) {
			$codep[]=array('codepostal'=>$ligne['adresse_code_cp']);
		}
		return array($codep);
	}
Lorsque je veux récupérer la valeur de la variable codep, il me renvoie toujours comme valeur "Array".

Je ne comprends pas pourquoi... Je vous passe en plus la méthode execute:
Code :
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
 
public function execute($sQuery)
	{
    	// $sQuery : requête à exécuter
    	// on mémorise la requête
		$this->sQuery=$sQuery;    
      	// est-on connecté ?
      	if(! $this->connecte)
		{
      		// on note l'erreur
        	$this->aErreurs[]="Pas de connexion existante à la base [$this->sDatabase]";
        	// fin
        	return;
      	}
      	// exécution de la requête
      	$this->oResultats=$this->oDB->query($sQuery);
    	// erreur ?
    	if(DB::iserror($this->oResultats))
		{
    		// on note l'erreur
    		$this->aErreurs[]="Echec de la requête [$sQuery] : [".$this->oResultats->getMessage()."]";
      		// retour
        	return;
      	}  
    }
Mais elle fonctionne(la méthode execute) car sur d'autres fonctions, les requêtes me renvoyaient le résultat souhaité.

Si quelqu'un voit le ptit truc qui empeche cette $*%^$ù de fonction de me renvoyer le bon résultat...
Jeren est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 11h12   #2
Membre éprouvé
 
Avatar de SphynXz
 
Développeur Web
Inscription : mars 2008
Messages : 439
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2008
Messages : 439
Points : 474
Points : 474
déjà tu peux virer :

Code php :
return array($codep);

et simplement mettre :


tu enregistre $codep ici :

Code php :
$codep[]=array('codepostal'=>$ligne['adresse_code_cp']);

faire çà revient à faire :

Code php :
$codep= array( array('codepostal'=>$ligne['adresse_code_cp']) );

donc retire les [] et dit moi si tu avances
__________________
I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
Pour détourner un avion, il faut monter dedans - Frédéric beigbeder
SphynXz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 11h25   #3
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Calvados (Basse Normandie)

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 1
Points : 1
Ca me renvoie encore Array, mais je fais quelques tests pour voir d'où vient l'erreur exactement.

Je te redis ça après!
Jeren est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 18h37   #4
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
C'est peut-être une erreur d'utilisation de cette variable.
En effet, si tu fais un "echo $tableau", il te sortira "Array"
Je pense que tu as une variable tableau correctement renseignée, mais que tu t'en sers mal.
Pourrais-tu nous donner le code de son utilisation ?

JM
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 21h31   #5
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
var_dump ou print_r sur ta variable en question pour avoir le maximum d'informations.

Si tu vois rien c'est plus inquietant.
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 09h49   #6
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Calvados (Basse Normandie)

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 1
Points : 1
Désolé de ne pas avoir répondu avant...mais c'était le pont ,

Alors, voila comment j'utilise la fonction suivante pour pouvoir récupérer le codep en fonction de l'adresse:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
function ObtenirCodeP($dDSN, $id)
	{
		//connexion à la source de données définie par le dictionnaire $dDSN
		$Publi=new publipostage_data($dDSN);
		if (count($Publi->aErreurs)!=0)
			return array($Publi->aErreurs);
			//récupération des données
			list($codep)=$Publi->get_CodepByAdr($id);
			// on se déconnecte
			$Publi->disconnect();
			//on rend le résultat
			if(count($Publi->aErreurs)!=0)
				return array($Publi->aErreurs);
			else return array(array(), $codep);
	}
Ensuite, j'execute la fonction de cette manière:

Code :
1
2
3
4
5
6
7
8
9
 
	list($erreurs, $codep)=ObtenirCodeP($dConfig['DSN'], $_POST['etab']);
	if(count($erreurs)!=0)
		{
			// préparation de la page d'erreurs
			$dReponse['erreurs']=&$erreurs;
			$dSession['etat']=array('principal'=>'e-erreurs','secondaire'=>'database');
			return;
		}
Je teste pour voir si ma variable codep a bien une valeur:

Code :
1
2
3
4
5
6
 
if(count($codep)==0)
	{
		$dSession['etat']=array('principal'=>'e-modif','secondaire'=>'saisie');
		return;
	}
Il ne me renvoie pas à la page que je dis, donc il y a bien une valeur.

Et je reprends ma variable ici:
Code :
1
2
3
 
$dSession['codep']=$codep[0];
$dSession['etat']=array('principal'=>'e-modif','secondaire'=>'modif');
Ca c'est dans ma page d'action. (J'utilise une architecture MVC, donc action, vue et controleur séparé).

Dans ma page d'état:

Je fais ça:

Code :
1
2
3
4
5
6
7
 
if ($type=='modif')
	{	
		$dReponse['vuereponse']='modele1';
		$dReponse['vue3']=$dConfig['vues']['mod_modif']['url'];  
		$dReponse['codep']=$dSession['codep'];
	}
Et enfin dans la vue:

Code :
1
2
3
 
			<td>Code postal* :</td>
			<td align="left"><input type="text" name="codepostal" value="<?php echo $dReponse['codep']; ?>");" maxlength="5"></td>

Et il me retourne encore et toujours Array...
Jeren est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h57.


 
 
 
 
Partenaires

Hébergement Web