Anton Heuschen schreef:
> This might sound trivial, but for the live of me cant seem to get it to
> work, and I am not familiar with such a thing.

seems like you've done your best to make it sound as confusing as possible,
this happens sometimes when you no longer see the wood for the trees :-)

> 
> What I have is a query lets say :
> 
> select  country,name,population from USERS where id= 'some_id' ";
> 

'USERS' seems like an odd namew for the table in question.

> 
> Now I want to assign the result to one set (The above example might have 3+
> entries per telephone, thus what would be nice is something like an array of

per telephone? where do these telephones come from? is that a freudian slip?
did the phone ring whilst you we're writing that sentence?

keep reading ... it gets more php related as we go one ...

> :
> 
> 
> [id][country][name]  = population .......... or to be exact if I echo the
> value for each id and country and name to get the population value
> 
> 
> Like :
> 
> Array {
> 
>   [id] array {
>          [country] array {
>                     [0] = USA
>           }
>   [name] array {
>          [0] = test
> 
>   }
> 
> }
> 

I'm not grokking that array structure much.

> 
> 
> 
> I dont know something like that, maybe Im over comlicating the question now
> even, the main thing is wondered was in the first place was with a standard
> query and variable assign, from the query like:
> 
> select  country,name,population from USERS where id= 'some_id' ";
> 
> normally you would just assign each field to one variable. like
> 
> $country = result["country"]
> $name = result["name"]

sidenote: I never see the point of assign the vars like that anyhow, why not 
just use
$result['name'] and do away with the exytra $name var?

> 
> 
> But now I want all 3 fields as one variable (which would be an array) ..but
> how ?

why? I'd guess it's because you want to do a 'look-up' of the data, that
would suggest you don't want to be extracting the data on a row by row basis,
but rather grab all the data and parse it into a format you can use for
multiple look ups, here's a little class idea,maybe it offers some
inspiration/insight/relief (it untested because I can't be bothered to setup a 
DB):

abstract class Populations
{
        static function getAll($type = null)
        {
                self::init();

                if ($type) {
                        return isset(self::$data[$type]) ? self::$data[$type] : 
null;
                }       
                
                return self::$data;
        }

        static function byId($id)
        {
                return self::get('names', intval($id));
        }

        static function byPlaceName($name)
        {
                return self::get('names', strtolower(trim($name)));
        }

        static function byCountryName($name)
        {
                return self::get('countries', strtolower(trim($name)));
        }

        static private function get($k, $v)
        {
                self::init();

                if (isset(self::$data[$k][$v]))
                        return self::$data[$k][$v];

                return null;            
        }

        private static function init()
        {
                if (!isset(self::$data))
                        self::loadData();
        }

        private static function loadData()
        {
                self::$data = array(
                        'ids'           => array(),
                        'names'         => array(),
                        'countries'     => array(),
                );

                // let's assume that the following query will only return
                // a reasonable number of rows (i.e. not a very large number)

                // let's also assume that a db connection has been setup

                $res = mysql_query('SELECT id, country, name, population FROM 
users');

                if ($res && mysql_num_rows($res)) {
                        while ($row = mysql_fetch_assoc($res)) {
                                $i = $row['id'];
                                $n = strtolower(trim($row['name']));
                                $c = strtolower(trim($row['country']));
                        
                                self::$data['ids'][$i]   =
                                self::$data['names'][$n] = $row['population'];

                                if (!isset(self::$data['countries'][$c]))
                                        self::$data['countries'][$c] = 0;

                                self::$data['countries'][$c] += 
$row['population'];
                        }
                }                       
        }
}

you would use this class something like:

echo Population::byId(1), "\n";
echo Population::byPlaceName("Texas"), "\n";
echo Population::byCountryName("USA"), "\n";

var_dump(Population::getAll("names"));
var_dump(Population::getAll());


> 
> I hope I have not totally confused the question now.

if you didn't then I probably have. enjoy.


> 
> Thanks in advance
> 


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to