Re: array fill/sort question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Another approach:

1. Load all results from the query in an array
2. Sort the array using a custom-defined user-defined comparison function
( usort() ). Study the example in the PHP manual.
Writing your own comparison function is easy:
- explode your IP addresses in 4 items each ( explode() )
- compare successively item by item

HTH
Ignatius
_________________________
----- Original Message -----
From: "Snijders, Mark" <Mark.Snijders@atosorigin.com>
To: "'Becoming Digital'" <subs@becomingdigital.com>; <php-db@lists.php.net>
Sent: Wednesday, June 11, 2003 8:33 AM
Subject: RE:  array fill/sort question


> hi,
>
> no the both sollutions won't work cause:
>
> I can't sort within a query cause subnetaddr is a varchar ("10.10.10.10")
>
> so it will be ordere like this
>
> 10.10.10.10
> 100.10.10.10
> 60.10.10.10
>
> and that's not good cause 60 is smaller as 100, so with the function
> ip2long() i will first make an integer of it
>
>
> the second array solution you gave, won't work, cause I need ALL the query
> results in the array, and that's the problem I can't handle....
>
>
> if I would do it like you said, I can sort it, but then I have a sorted
> array and for each element I have to do a query again to get the other
> fields of the table, and that's not good (2500 rows)
>
> so can please still somebody help me with this?
>
>
>
>
> -----Original Message-----
> From: Becoming Digital [mailto:subs@becomingdigital.com]
> Sent: dinsdag 10 juni 2003 15:42
> To: php-db@lists.php.net
> Subject: Re:  array fill/sort question
>
>
> I might be overlooking something, but can't you just do this?
>
> $query = "SELECT s_id, subnet_name,subnetaddr,subnetmask,dnsdomain,
>     location, contact, ccn FROM subnets ORDER BY subnetaddr";
>
>
> If you can't, you can sort the array like this.
>
> <?
> $query = "SELECT s_id, subnet_name,subnetaddr,subnetmask,dnsdomain,
>     location, contact, ccn FROM subnets";
> $results = mysql_query( $query );
>
> while ( $iptable = mysql_fetch_array( $result ) ) {
>     $iptable['subnetaddr'] = ip2long( $iptable['subnetaddr'] );
> }
> ?>
>
> You can subsequently sort the array for the desired result.
>
> Edward Dudlik
> Becoming Digital
> www.becomingdigital.com
>
>
> ----- Original Message -----
> From: "Snijders, Mark" <Mark.Snijders@atosorigin.com>
> To: <php-db@lists.php.net>
> Sent: Tuesday, 10 June, 2003 08:55
> Subject:  array fill/sort question
>
>
> hi,
>
> I'm working on a ipaddres/subnet programm
>
> now i have a talbe with a lot of information about ip-addresses
>
> i'm having this query:
>
> SELECT s_id, subnet_name,subnetaddr,subnetmask,dnsdomain, location,
contact,
> ccn FROM subnets
>
> the subnetaddr field looks like this : 100.20.20.1  and is ofcourse a
> varchar field
>
> BUT before displaying it on the screen i have to sort it by subnetaddr and
> then show it
>
> but i have to sort it as integer, so i use the php-function ip2long();
>
> so you get a decimal...
>
> so what i have to do:
>
> do the query> make a decimal field of the 'subnetaddr' put it in an array,
> sort it and display it
>
>
> BUT how can i put ALL of the fields in the query in an array, sort it, and
> then display it?
>
> please help me, I can't work it out :(
>
> thanks, Mark
>
>
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


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


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux