name = trim($name); $this->phone = trim($phone); $this->email = trim($email); $this->office = trim($office); $this->dept = trim($dept); $this->pos = trim($pos); $this->lastname = trim( $lastname); ; } function scatter( &$lastname, &$name, &$email, &$office, &$phone, &$dept, &$pos) { $name = $this->name; $lastname=$this->lastname; $phone = $this->phone; $email = $this->email; $office = $this->office; $dept = $this->dept; $pos = $this->pos; } } // class person function readDatabase($filename, $demo_mode) { // ************************************* // *** read the xml database // ************************************* $data = implode("",file($filename)); $parser = xml_parser_create(); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); $num_rows = xml_parse_into_struct($parser,$data,$values,$tags); xml_parser_free($parser); // ************************************* // *** end of xml code // ************************************* // ************************************* // demo what the xml array looks like // ************************************* if ($demo_mode == 1) { echo "
"; print_r( $values); echo ""; } // ************************************* // loop through the structures // ************************************* $i = 0; do { if( $values[$i]['level'] == 3) { $fred = $values[$i]['tag']; $$fred = $values[$i]['value']; // echo "$fred = $$fred \n"; } $i++; $typexml = $values[$i]['type']; $level = $values[$i]['level']; if( $typexml == "close" && $level == 2) { $pp[] = new person( $lastname, $name, $email, $office, $phone, $dept, $pos); $name = $lastname = $email = $office = $phone = $dept = $pos = ""; // echo "$name $email $office $phone $dept\n"; } } while (! ($typexml == "close" && $level == 1)); return $pp; } // function readDatabase // ****************************************************** // *** custom sort function - right out of the PHP Manual // ****************************************************** function alphasort($a, $b) { if ( $a->lastname . $a->name == $b->lastname . $b->name) return 0; return ($a->lastname . $a->name > $b->lastname . $b->name) ? 1 : -1; } // alphasort // ********************************************* // *** main program // ********************************************* while (list ($header, $value) = each ($HTTP_POST_VARS)) { $$header = $value; } $testing = 1; if ( $testing == 1) { $people = readDatabase( "contacts.xml", $demo_mode); $cnti = sizeof( $people); usort( $people, "alphasort"); if ($demo_mode == 0) { echo "$cnti\n
| $name | " . "$lastname | " . "$office | " . "$phone | " . "$dept | " . "$pos | \n"; echo "