afichage donnee demande correction

Eléphant du PHP | 150 Messages

05 déc. 2013, 15:58

bonjour,

j'affiche mes donnée grace a des fonction
public static function info_emplace($id, $info) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.LOCATION.ID);
		$resultat -> bindParam(':id', $id);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
				return $donnee[$info];
		if($donnee['cb'] === '1') { 
			$cb_view = '<input type="checkbox" name="cb" checked value="1"/>'; 
		}
		else {
		$cb_view = '<input type="checkbox" name="cb" value="1"/>';
		}	
	}
mais je n'arrive a faire marcher cette partie
if($donnee['cb'] === '1') {
$cb_view = '<input type="checkbox" name="cb" checked value="1"/>';
}
else {
$cb_view = '<input type="checkbox" name="cb" value="1"/>';
}
dans ma page avec ckeckbox j'ai mis
<div class="clear">
<div class="label"><img src='.URLSITE.'/design/img/cb.png width=40></div>
'.$cb_view.'
</div>
tout le recte apparait sans probleme grace a
$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
return $donnee[$info];

est ce que je m'y prend pas du tout comme il faut ???
encore merci pour votre aide

ViPHP
ViPHP | 2577 Messages

05 déc. 2013, 16:47

Bonjour,

Ta variable $cb_view n'est pas visible à l'extérieur de la fonction.

Tu peux faire un "return $cb_view;" à la fin de la fonction pour récupérer la valeur. Dans ce cas remplace $cb_view par l'appel à la fonction pour l'affichage.

Eléphant du PHP | 150 Messages

05 déc. 2013, 17:01

merci pour cette reponse rapide

je vien de modifier comme ceci :

public static function info_emplace($id, $info) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.LOCATION.ID);
		$resultat -> bindParam(':id', $id);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
				return $donnee[$info];
				
		if($donnee['cb'] === '1') { 
			$cb_view = '<input type="checkbox" name="cb" checked value="1"/>'; 
		}
		else {
		$cb_view = '<input type="checkbox" name="cb" value="1"/>';
		}	
		return $cb_view;
	}
et j'appelle donc comme ceci :sans succé
'.Demplacement::info_emplace($id,$cb_view).'
ou
'.Demplacement::info_emplace($cb_view).'

pour afficher le titre qui lui fonctionne je fait comme ceci :
'.Demplacement::info_emplace($id, 'titre').'

Mammouth du PHP | 571 Messages

05 déc. 2013, 18:23

le 1er return de ta méthode met fin à cette dernière.il est évident que la partie çi-dessous ne sera jamais évaluée:
 
                if($donnee['cb'] === '1') {
                        $cb_view = '<input type="checkbox" name="cb" checked value="1"/>';
                }
                else {
                $cb_view = '<input type="checkbox" name="cb" value="1"/>';
                }      
                return $cb_view;
je ne sais pas ce que tu souhaites obtenir, je ferai plutôt ceci:
<?php
public static function info_emplace($id, $info) {
                $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.LOCATION.ID);
                $resultat -> bindParam(':id', $id);
                $resultat -> execute();
              
                                return $resultat -> fetch(PDO::FETCH_ASSOC);
                               
        }

?
et l'appel à la méthode donnera:
<?php
              
                if( Demplacement::info_emplace($id, 'titre')['cb']=== '1') {
                        $cb_view = '<input type="checkbox" name="cb" checked value="1"/>';
                echo     $cb_view ;
                }
                else {
                $cb_view = '<input type="checkbox" name="cb" value="1"/>';
                 echo     $cb_view ;
                }    
               echo  Demplacement::info_emplace($id, 'titre')['titre'];
?>