Does this fit your idea of a "more elegant solution"?

This is just an enhanced and tested version of the one I posted earlier 
(somehow I had time and was curious about it).

<?php
  
if (isset($_POST['var'])){ // if POSTed

  // initial query
  // make sure "WHERE" not included when none is selected
  $qpon = "SELECT BillDate, StateInd, BAN, Type, PON, Phrase,";
  $qpon .= " PhraseLine1, USOC, Description, RateZone, Rate";
  $qpon .= " FROM tblUSOCChargesDetail";

  $its_set = 1; // my super "switch"

  foreach ($_POST['var'] as $key => $value){ // walk
    if ($value != 0){ // make sure the "--- Select ---" is not included
      if ($its_set == 1){
        $qpon .= " WHERE USOC = '" . $value . "'";
        $its_set = 2; // just to make sure "WHERE" is only added once
      } else {
        $qpon .= " AND USOC = '" . $value . "'";
      }
    }
  } // end of foreach

}

  $qpon .= " ORDER BY BillDate";
  echo "$qpon"; // Check the generated query

?>

And this is what I used for testing:

// html headers here

<form action="testpulldown.php" method="post">
First option
<select name="var[]">
  <option value="0">--- Select ---</option>
  <option value="1a">1a</option>
  <option value="1b">1b</option>
  <option value="1c">1c</option>
</select>
<br />
Second option
<select name="var[]">
  <option value="0">--- Select ---</option>
  <option value="2a">2a</option>
  <option value="2b">2b</option>
  <option value="2c">2c</option>
</select>
<br />
Third option
<select name="var[]">
  <option value="0">--- Select ---</option>
  <option value="3a">3a</option>
  <option value="3b">3b</option>
  <option value="3c">3c</option>
</select>
<br />
Fourth option
<select name="var[]">
  <option value="0">--- Select ---</option>
  <option value="4a">4a</option>
  <option value="4b">4b</option>
  <option value="4c">4c</option>
</select>
<br />
<input type="submit" name="submit" value="Submit" />
</form>

// end of html

Put them in the same file and name the file "testpulldown.php". (Of course, 
you know...)

The "beauty", I thought is, the query would still work even though none of 
the "pull-downs" were selected--of course, I don't how much data will be 
shown...

NOTE: You can even have MORE pull-downs with this kind of approach. (...and 
less code...)

BTW, who is "Todd"? I didn't see his post... Just curious...

- E


>
>Todd came in with a good suggestion which I had started towards, so this 
is
>what I have arrived at for the moment. I will be looking to make this more
>elegant soon, but since they are screaming for the report now this is what 
I
>did;
>
><?php
>       if($usoc1 <> "--- Select ---"){
>               $usoc[] = $usoc1;
>       }
>       if($usoc2 <> "--- Select ---"){
>               $usoc[] = $usoc2;
>       }
>       if($usoc3 <> "--- Select ---"){
>               $usoc[] = $usoc3;
>       }
>       if($usoc4 <> "--- Select ---"){
>               $usoc[] = $usoc4;
>       }
>       $usoc_count = count($usoc);
>
>       // query details
>       $qpon = "SELECT BillDate, StateInd, BAN, Type, PON, Phrase, PhraseLine1,
>USOC, Description, RateZone, Rate ";
>       $qpon .= "FROM tblUSOCChargesDetail WHERE ";
>       $first = 0;
>       for($i = 0; $i < $usoc_count; $i++){
>               if($first == 0){
>                       $qpon .= "USOC = '" . $usoc[$i] . "' ";
>                       $first = 1;
>               } else {
>                       $qpon .= "AND USOC = '" . $usoc[$i] . "' ";
>               }
>       }
>       $qpon .= "ORDER BY BillDate ";
>       if(!($dbpon = mysql_query($qpon, $dbconnect))){
>               print("MySQL reports: " . mysql_error() . "\n");
>               exit();
>       }
>?>
>
>I am sure that there is a more elegant solution, if I find it I will let 
you
>know.
>
>Thanks!
>
>Jay
>
>
>
>--
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, visit: http://www.php.net/unsub.php
>




_________________________________________________________________
かわいくて愉快なイラスト満載 MSN キャラクター http://character.msn.co.jp/


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

Reply via email to