if else dans function

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 : if else dans function

Re: if else dans function

par @rthur » 19 avr. 2010, 16:47

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é ;)

Re: if else dans function

par Skikit » 19 avr. 2010, 16:46

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.

if else dans function

par alsab » 19 avr. 2010, 16:34

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