File: example_cascade.php

Recommend this page to a friend!
  Classes of Dave Smith  >  PHP Address Formatter  >  example_cascade.php  >  Download  
File: example_cascade.php
Role: Example script
Content type: text/plain
Description: Example usage for Cascading location selects
Class: PHP Address Formatter
Format postal address according to country rules
Author: By
Last change:
Date: 6 years ago
Size: 9,342 bytes
 

Contents

Class file image Download
<?PHP
error_reporting
(E_ALL ^ E_NOTICE);

include(
'addrformat.class.php');

$adf = new addrformat;

/*
We need to set up some nations (countries). For this example we will do it manually,
however you can easily get the data from a database. We need to supply the abbreviation
and the nation name directly to the class property - nation_array
*/
$adf->nation_array = array(
   
'US' => 'United States of America',
   
'SW' => 'Star Wars Universe',
);

//sort the class property - nation_array
//we are also setting the US key/value pair at the top of that order
$adf->sortNation('US');

//processing the posted data
if( !empty($_REQUEST['form_posted']) ){
   
//manage cascade
   
switch( $_REQUEST['nation_abbr'] ){
        case
'US':
           
$adf->addProvince('OR','Oregon');
           
$adf->addProvince('CA','California');
           
$adf->addProvince('WA','Washington');
            switch(
$_REQUEST['province_abbr'] ){
                case
'OR':
                   
$adf->addLocality('1','Medford');
                   
$adf->addLocality('2','Ashland');
                   
$adf->addLocality('3','Eugene');
                    switch(
$_REQUEST['locality_id'] ){
                        case
'1':
                           
$adf->addPostcode('1','97501');
                           
$adf->addPostcode('2','97504');
                            break;
                        case
'2':
                           
$adf->addPostcode('3','97520');
                            break;
                        case
'3':
                           
$adf->addPostcode('4','97401');
                           
$adf->addPostcode('5','97402');
                           
$adf->addPostcode('6','97403');
                           
$adf->addPostcode('7','97404');
                           
$adf->addPostcode('8','97405');
                           
$adf->addPostcode('9','97408');
                           
$adf->addPostcode('10','97440');
                            break;
                    }
                    break;
                case
'CA':
                   
$adf->addLocality('4','Yreka');
                   
$adf->addLocality('5','Redding');
                   
$adf->addLocality('6','Ontario');
                    switch(
$_REQUEST['locality_id'] ){
                        case
'4':
                           
$adf->addPostcode('11','96097');
                            break;
                        case
'5':
                           
$adf->addPostcode('12','96001');
                           
$adf->addPostcode('13','96002');
                           
$adf->addPostcode('14','96003');
                           
$adf->addPostcode('15','96049');
                           
$adf->addPostcode('16','96099');
                            break;
                        case
'6':
                           
$adf->addPostcode('17','91758');
                           
$adf->addPostcode('18','91761');
                           
$adf->addPostcode('19','91762');
                           
$adf->addPostcode('20','91764');
                            break;
                    }
                    break;
                case
'WA':
                   
$adf->addLocality('7','Algona');
                   
$adf->addLocality('8','Woodland');
                   
$adf->addLocality('9','Quincy');
                    switch(
$_REQUEST['locality_id'] ){
                        case
'7':
                           
$adf->addPostcode('21','98001');
                            break;
                        case
'8':
                           
$adf->addPostcode('22','98674');
                            break;
                        case
'9':
                           
$adf->addPostcode('23','98848');
                            break;
                    }
                    break;
            }
            break;
        case
'SW':
           
$adf->addProvince('TAT','Tatooine');
           
$adf->addProvince('NAB','Naboo');
           
$adf->addProvince('KAM','Kamino');
            switch(
$_REQUEST['province_abbr'] ){
                case
'TAT':
                   
$adf->addLocality('10','Mos Eisley');
                   
$adf->addLocality('11','Bestine');
                   
$adf->addLocality('12','Anchorhead');
                    break;
                case
'NAB':
                   
$adf->addLocality('13','Theed');
                   
$adf->addLocality('14','Deeja Peak');
                   
$adf->addLocality('15','Otoh Gunga');
                    break;
                case
'KAM':
                   
$adf->addLocality('16','Tipoca City');
                    break;
            }
            break;
    }
   
$adf->sortProvince();
   
$adf->sortLocality();
   
$adf->sortPostcode();
    if( !empty(
$_REQUEST['form_submit']) ){
       
//submit button pressed so create an address array by assigning posted data to tags
       
$addr_array = array(
           
'recipient' => $_REQUEST['recipient'],
           
'building' => $_REQUEST['building'],
           
'addr_num' => $_REQUEST['addr_num'],
           
'street' => $_REQUEST['street'],
           
'unit' => $_REQUEST['unit'],
           
'locality' => $adf->locality_array[$_REQUEST['locality_id']],
           
'province' => $adf->province_array[$_REQUEST['province_abbr']],
           
'province_abbr' => $_REQUEST['province_abbr'],
           
'postcode' => $adf->postcode_array[$_REQUEST['postcode_id']],
           
'nation' => $adf->nation_array[$_REQUEST['nation_abbr']],
           
'nation_abbr' => $_REQUEST['nation_abbr']
        );
       
       
//process the address array
        //we are also including the nation in the full address
       
$adf->procAddrArray($addr_array,true);
    }
}
?>
<html>
    <head>
        <title>Address Format Cascade Example</title>
    </head>
    <body>
        <form method="post">
            <table>
                <tr>
                    <td><label for="nation_abbr">Nation/Country</label></td>
<?PHP
//only show if we have built the province array from the supplied nation
if( !empty($adf->province_array) ){
?>
<td><label for="province_abbr">Province/State</label></td>
<?PHP
}
//only show if we have built the locality array from the supplied province
if( !empty($adf->locality_array) ){
?>
<td><label for="locality_id">Locality/City</label></td>
<?PHP
}
//only show if we have built the postcode array from the supplied locality
if( !empty($adf->postcode_array) ){
?>
<td><label for="postcode_id">Postcode</label></td>
<?PHP
}
?>
</tr>
                <tr>
                    <td>
                        <select name="nation_abbr" onChange="this.form.submit(); return false;">
                            <option value="">Select one...</option>
<?PHP
foreach( $adf->nation_array as $key=>$value ){
   
$selected = ( !empty($_REQUEST['nation_abbr']) AND $key == $_REQUEST['nation_abbr'] ) ? ' selected' : '';
?>
<option value="<?PHP echo $key;?>"<?PHP echo $selected;?>><?PHP echo $value;?></option>
<?PHP
}
?>
</select>
                    </td>
<?PHP
//only show if we have built the province array from the supplied nation
if( !empty($adf->province_array) ){
?>
<td>
                        <select name="province_abbr" onChange="this.form.submit(); return false;">
                            <option value="">Select one...</option>
<?PHP
   
foreach( $adf->province_array as $key=>$value ){
       
$selected = ( !empty($_REQUEST['province_abbr']) AND $key == $_REQUEST['province_abbr'] ) ? ' selected' : '';
?>
<option value="<?PHP echo $key;?>"<?PHP echo $selected;?>><?PHP echo $value;?></option>
<?PHP
   
}
?>
</select>
                    </td>
<?PHP
}
//only show if we have built the locality array from the supplied province
if( !empty($adf->locality_array) ){
?>
<td>
                        <select name="locality_id" onChange="this.form.submit(); return false;">
                            <option value="">Select one...</option>
<?PHP
   
foreach( $adf->locality_array as $key=>$value ){
       
$selected = ( !empty($_REQUEST['locality_id']) AND $key == $_REQUEST['locality_id'] ) ? ' selected' : '';
?>
<option value="<?PHP echo $key;?>"<?PHP echo $selected;?>><?PHP echo $value;?></option>
<?PHP
   
}
?>
</select>
                    </td>
<?PHP
}
//only show if we have built the postcode array from the supplied locality
if( !empty($adf->postcode_array) ){
?>
<td>
                        <select name="postcode_id" onChange="this.form.submit(); return false;">
<?PHP
   
foreach( $adf->postcode_array as $key=>$value ){
       
$selected = ( !empty($_REQUEST['postcode_id']) AND $key == $_REQUEST['postcode_id'] ) ? ' selected' : '';
?>
<option value="<?PHP echo $key;?>"<?PHP echo $selected;?>><?PHP echo $value;?></option>
<?PHP
   
}
?>
</select>
                    </td>
<?PHP
}
?>
</tr>
            </table>
            <table>
                <tr>
                    <td><label for="recipient">Recipient</label><br><em>(John Smith)</em></td>
                </tr>
                <tr>
                    <td><input type="text" name="recipient" value="<?PHP echo ( empty($_REQUEST['recipient']) ) ? '' : $_REQUEST['recipient'];?>"></td>
                </tr>
                <tr>
                    <td><label for="building">Building</label><br><em>(Tower One)</em></td>
                </tr>
                <tr>
                    <td><input type="text" name="building" value="<?PHP echo ( empty($_REQUEST['building']) ) ? '' : $_REQUEST['building'];?>"></td>
                </tr>
            </table>
            <table>
                <tr>
                    <td><label for="addr_num">Address Number</label><br><em>(123 1/2)</em></td>
                    <td><label for="street">Street Name</label><br><em>(North Main St.)</em></td>
                    <td><label for="unit">Unit</label><br><em>(Apartment 101)</em></td>
                </tr>
                <tr>
                    <td><input type="text" name="addr_num" value="<?PHP echo ( empty($_REQUEST['addr_num']) ) ? '' : $_REQUEST['addr_num'];?>"></td>
                    <td><input type="text" name="street" value="<?PHP echo ( empty($_REQUEST['street']) ) ? '' : $_REQUEST['street'];?>"></td>
                    <td><input type="text" name="unit" value="<?PHP echo ( empty($_REQUEST['unit']) ) ? '' : $_REQUEST['unit'];?>"></td>
                </tr>
            </table>
            <table>
                <tr>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>
                        <input type="hidden" name="form_posted" value="1">
                        <input type="submit" name="form_submit" value="Submit"> [<a href="example_cascade.php">Start over</a>]
                    </td>
                </tr>
            </table>
        </form>
<?PHP
//only show this if the class has built an address array
if( !empty($adf->addr_array) ){
?>
<div><strong>Full Address</strong></div>
        <div style="margin-top:10px;"><?PHP echo nl2br($adf->addr_array['full_addr']);?></div>
        <div style="margin-top:10px;"><strong>Single Line Address</strong><br><em>(aka waypoint which can be used with mapping services)</em></div>
        <div style="margin-top:10px;"><?PHP echo $adf->addr_array['single_line'];?></div>
<?PHP
}
?>
<div style="margin-top:10px;"><strong>Class Values</strong></div>
        <div><?PHP var_dump($adf);?></div>
    </body>
</html>

For more information send a message to info at phpclasses dot org.