Global array isn't working, please help!

Discussion in 'PHP' started by Crayz, Nov 2, 2007.

  1. #1
    For some reason, my variable $userinfo isn't going global, and won't echo on test.php
    Here's my code:

    test.php
    include('includes/functions.php');
    getUser($userid);
    echo $userinfo['name'];
    
    Code (markup):

    functions.php
    function getUser($uid) {
       global $userinfo;
    
       $checkuser="SELECT * FROM fct_users WHERE ownerid='$uid'";
       $checkuser2=mysql_query($checkuser) or die("Could not check user");
       $checkuser3=mysql_num_rows($checkuser2);
    
       if($checkuser3 > 0) {
    
          $query2 = "SELECT * FROM fct_trains WHERE ownerid='$uid'"; 
          $result2 = mysql_query($query2) or die(mysql_error());
    
          while($row = mysql_fetch_array($result2)) {
    	   $userinfo['name'] = $row['name']; }
    
       }
    }
    Code (markup):
    Suggestions?

    Thanks!
     
    Crayz, Nov 2, 2007 IP
  2. ziogas

    ziogas Peon

    Messages:
    32
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #2
    try
    
    $userinfo = array();
    include('includes/functions.php');
    getUser($userid);
    echo $userinfo['name'];
    
    Code (markup):
     
    ziogas, Nov 2, 2007 IP
  3. Crayz

    Crayz Well-Known Member

    Messages:
    708
    Likes Received:
    9
    Best Answers:
    1
    Trophy Points:
    120
    #3
    Nope, that didn't work :X
     
    Crayz, Nov 2, 2007 IP
  4. ziogas

    ziogas Peon

    Messages:
    32
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #4
    Then maybe ($checkuser3 > 0) condition returns false?
     
    ziogas, Nov 2, 2007 IP
  5. Crayz

    Crayz Well-Known Member

    Messages:
    708
    Likes Received:
    9
    Best Answers:
    1
    Trophy Points:
    120
    #5
    nope it doesn't, if I put this:
    echo $row['name'];
    Code (markup):
    inside my mysql_fetch_array loop, it executes correctly.
     
    Crayz, Nov 2, 2007 IP
  6. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #6
    Return the value instead? That's pretty much the point of functions.
     
    nico_swd, Nov 2, 2007 IP
  7. exodus

    exodus Well-Known Member

    Messages:
    1,900
    Likes Received:
    35
    Best Answers:
    0
    Trophy Points:
    165
    #7
    
    <?
    
    function getUser($uid) {
    
       $checkuser_sql     = "SELECT * FROM `fct_users`,`fct_trains` WHERE `fct_trains`.`ownerid` = '$uid' and `fct_users`.`ownerid` = '$uid' limit 1";
       $checkuser_result = mysql_query($checkuser_sql);
       if(mysql_num_rows($checkuser_result) > 0)
      {
          $user = mysql_fetch_assoc($checkuser_result); 
          return $user['name']; 
        }
    
       return array('name'=>'User not found');
    }
    
    $userinfo = Array();
    $userinfo = getUser(intval($uid));
    
    ?>
    Code (markup):

    Using globals like you are doing isn't a good idea. You have to pass the function like the above even if blank. Then return the data that you want. Even then you can combine the sql statement into one statement rather then two statements.
     
    exodus, Nov 2, 2007 IP