Page 1 sur 1

if else dans function

Posté : 19 avr. 2010, 16:34
par alsab
Bonjour,

je débute en php. j'ai ecrit ce petit bout de code qui fonctionne très bien:

Code : Tout sélectionner

<?php if ( $mySobi->id == 0) { $database = & JFactory::getDBO(); $user =& JFactory::getUser(); $sql = "SELECT cb_city FROM #__comprofiler WHERE id= {$user->id} LIMIT 1"; $database->setQuery( $sql ); echo $database->loadResult(); } else { $database = & JFactory::getDBO(); $user =& JFactory::getUser(); $sql = "SELECT data_txt FROM #__sobiagenda2_fields_data WHERE itemid= {$mySobi->id} AND fieldid= 1 LIMIT 1"; $database->setQuery( $sql ); echo $database->loadResult(); } ?>
mais je souhaiterais l'inclure dans une function comme ceci, ce qui me permettra après d'inclure des variables entre ()

Code : Tout sélectionner

<?php function Load_field() { if ( $mySobi->id == 0) { $database = & JFactory::getDBO(); $user =& JFactory::getUser(); $sql = "SELECT cb_city FROM #__comprofiler WHERE id= {$user->id} LIMIT 1"; $database->setQuery( $sql ); echo $database->loadResult(); } else { $database = & JFactory::getDBO(); $user =& JFactory::getUser(); $sql = "SELECT data_txt FROM #__sobiagenda2_fields_data WHERE itemid= {$mySobi->id} AND fieldid= 1 LIMIT 1"; $database->setQuery( $sql ); echo $database->loadResult(); }} ?>
Le problème c'est que le code m'affiche toujours le même résultat celui de la condition if. Il ne prend plus en comte le else.

Pourquoi?


Merci

Re: if else dans function

Posté : 19 avr. 2010, 16:46
par Skikit
Parce que tu dois passer ($mySobi->id) à ta fonction et effectuer le test sur la variable récupérée.
($mySobi->id == 0) est toujours vrai puisque la variable n'existe pas dans la fonction.

Re: if else dans function

Posté : 19 avr. 2010, 16:47
par @rthur
Bonjour,

Ta variable $mySobi n'est plus accessible quand tu la passes dans une fonction si elle n'est pas déclarée en global ou passée en paramètre.
La page suivante de la doc sur la portées des variables en PHP devrait t'aider à résoudre ton problème :
http://php.net/manual/fr/language.variables.scope.php

##edit : grillé par Skikit, bien joué ;)