How to pass selected options to .php file when two scrolling lists appear at different times on page

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

 



Hi all,
I have two database tables (I don't think it is a database problem, by the way) data_series and data_sets. data_sets is a child of data_series. I want my PHP form to display a scrolling list of all the data series in the database. The user will then select a subset of these, press a submit button, and be shown a scrolling list of all the child data sets of the selected data series.

Problem is, when I code this following an example in PHP programming, the data series are displayed properly in a <select> named 'data_series'. The scrolling list called 'data_sets' is drawn properly. But when the program tries to retrieve the selected data_series via $_GET[;data_series'] it gets the label 'Data Sets' of the second scrollling list in the series. I have looked at this for an hour now, trying various tweaks of the code, and cannot figure out what is wrong.

Here is my php code for the page:

<?php
   error_reporting(E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Data Set</title>
</head>
<?php
   require_once("./config_file.php");
   require_once("./lib_mem.php");
   require_once("./lib_mem2.php");
   require_once("./lib_delete.php");
?>

<body>
<div align="center">
  <h2>Select Data Set</h2>
</div>
<form id="series_select" name="series_select" method="GET" action="<?php echo $_SERVER['PHP_SELF']?>">
<?php
   if (array_key_exists('get_data_sets', $_GET)){
?>
<?php
  $data_series_id_list = implode($_GET['data_series'], ',');
echo "data_series_id_list = $data_series_id_list\n";
  $select_data_set_cmd = "SELECT ds_data_series_id, ds_name ".
                         "FROM data_sets ".
                         "WHERE ds_data_series_id IN (" . $data_series_id_list . ")".
                          "ORDER BY ds_name";
echo "select_data_set_cmd = $select_data_set_cmd\n";
  echo_scrolling_list_from_database ('data_set',
                                      '',
                                     'Data Sets',
                                      15,
                                      0,
                                      $pg,
                                      $select_data_set_cmd,
                                      array());
?>
<p>&nbsp;</p>
<p>
<?php
   echo_a("./edit_data_set.php", "Edit data set");
?>
</p>
<p>To edit the data for a data set, go to the main menu and select Data &gt;&gt;Enter New or Edit Existing.</p>
<p>
<?php
   echo_a("./display_data_set_example.html","Display data set and data");
?>
</p>
<p align="left">
<?php
   echo_a("./index.html", "Home");
?>
</p>
<?php
}
else {
    $select_data_series_cmd = "SELECT sr_data_series_id, sr_name FROM data_series ORDER BY sr_name";
    echo_scrolling_list_from_database('data_series',
                                      '',
                                      'Data Series',
                                      15,
                                      1,
                                      $pg,
                                      $select_data_series_cmd,
                                      array());
    echo_submit('get_data_sets', 'Get Data Sets');
}
?>
</form>
</body>
</html>

The functions I call from the lib_mem2 file are:

// echo_scrolling_list_tag
// echo_scrolling_list_head
// echo_option
//    these functions together are used to produce the HTML code to construct
//    a scrolling list from items selected from a database table.  The select cmd
//    is given as one of the parameters to the echo_scrolling_list function.  The first
//    column selected in the list must be the primary key id of the table.  The remaining
//    selected values are formatted into a colon separated string.  They appear as the rows
//    of the scrolling list.  The id is stored as the value of the row.
//    If multiple selections are enabled the scrolling list returns an array.  Else it
//    returns a scalar.
//
//    echo_scrolling_list_tag
//    constructs html tag for scrolling list
//    Parameters:
//        name           name of scrolling list (should be name of primary id of table)
//        class          CSS class
//        label          label for scrolling list
//        size           number of rows to display
//        multiple_OK    true if multiple selections are allowed
//    Action:  echo the <select name=...> tag for a scrolling list
//
function echo_scrolling_list_tag($name,
                                 $class,
                                 $label,
                                 $size,
                                 $multiple_OK){
    $for_phrase = 'for="' . $name . '"';

    echo "<label " . $for_phrase . ">" . $label . "</label>";
    $multiple_OK_braces = $multiple_OK ? "[]" : '';
    $name_phrase = 'name="' . $name . $multiple_OK_braces . '"';
    // call with $name[] to return array if multiple, else return
    // single value
    $class_phrase = 'class="' . $class . '"';
    $size_phrase  = 'size=' . $size;
    $multiple_phrase = $multiple_OK ? 'multiple' : '';
echo "name_phrase = $name_phrase, multiple_phrase = $multiple_phrase";

    return '';
}
//    echo_option_tag
//      constructs html tag for option of a scrolling list
//      Parameters:
//          id_colon_display      string formatted as id : value.  id is primary key of table value
//                              was taken from
//          default_ids         array of ids of rows to be highlighted when scrolling list is displayed
//      Action:  construct the <option> tag for a row in a scrolling list.  The id will be the html 'value' of
//               the tag.  The value given in the id_colon_display parameter will be displayed as the row entry.
//               If the id of a row is in the default_ids array, it will be marked 'selected'
function echo_option_tag($id_colon_display,
                         $default_ids){
    $id_display = array();
    ereg('^([^:]+) : (.*)$', $id_colon_display, $id_display);
    $id = $id_display[1];
    $display = $id_display[2];
    $selected = in_array($id, $default_ids)? 'selected' : '';
    echo "<option value=".$id." ".$selected.'/>'.$display."</option>\n";
    return '';
}


//
//    echo_scrolling_list_from_database
//    Parameters:
//       name                           name of scrolling list (should be name of primary id of table)
//       class                          CSS class
//       label                          label for scrolling list
//       size                           number of rows to display
//       multiple_OK                    true if multiple selections are allowed from the list
//       pg                             open database connection
//       select_options_cmd                     SQL statement used to retrieve values for the rows
//       default_ids                    ids of rows to be highlighted when scrolling list is displayed
//    Action:  display scrolling list with formatted rows of values retrieved by select_cmd.

function echo_scrolling_list_from_database( $name,
                                           $class,
                                           $label,
                                           $size,
                                           $multiple_OK,
                                           $pg,
                                           $select_options_cmd,
                                           $default_ids){
        echo_scrolling_list_tag($name,
                                $class,
                                $label,
                                $size,
                                $multiple_OK);
       $id_colon_displays = do_select_and_format_many($pg, $select_options_cmd);
       foreach ($id_colon_displays as $id_colon_display){
           echo_option_tag($id_colon_display, $default_ids);
       }
       echo "</select>";
}


Thanks!

Mary Anderson

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux