Sheer genius my man!

Thanks!

On Mon, 2003-07-14 at 13:38, Tom Rogers wrote:
> Hi,
> 
> Monday, July 14, 2003, 9:11:11 PM, you wrote:
> PA> HI list
> 
> PA> Is there an elegant way to know when the last time through the loop is
> PA> going to be and to do something else?
> 
> 
> PA> I want to search through a table by "exploding" the search string and
> PA> then compounding my own sql string by working through the array.
> 
> >>From my example below, you can see I use a foreach to loop through the
> PA> array. Arguably I could first determine the amount of elements in the
> PA> array and then use a for instead of a foreach, but I'm not sure if that
> PA> will help ( will probably need a switch instead if you want to work with
> PA> the sheer array elements), however, the if statement inside the loop is
> PA> meant to "strip" out "the" and "and", meaning that it won't much help to
> PA> use that approach anyway.
> 
> PA> Anyway, as you can see my problem lies with the SQl when the last
> PA> element is reached, then it should NOT add another "and" or "or".
> 
> PA> My attempts at "backtracking" the $sql string/array and start writing
> PA> the end part of the string obviously fails.
> 
> PA> Any help with my "logic", ie, how do/would you guys do this?
> 
> PA> Thanks
>  
> 
> PA> $table_name = "test";
> PA> if ($_POST[any_all] == "any") {
> PA>         $logic = "or";
> PA> }
> PA> elseif ($_POST[any_all] == "all") {
> PA>         $logic = "and";
> PA> }
> 
> PA> $string = $_POST[text];
> PA> $phrases = explode(" ", $string);
> 
> PA> $sql = "select * from $table_name where ";
> 
> PA> foreach ($phrases as $key=>$val) {
> PA>         if (($val != "the") && ($val != "and")) {
> PA>                 $sql.= "name like '%$val%'  $logic";            
> PA>         }               
> PA> }
> 
> PA> $length = strlen($sql);
> PA> $newlen = $length - 4;
> PA> $sql[$newlen].= " order by name";
> PA> echo $sql; 
> 
> I would do this
> 
> $like = '';
> foreach ($phrases as $key=>$val) {
>         if (($val != "the") && ($val != "and")) {
>                 if(!empty($like)) $like .= ' '.$logic.' ';
>                 $like.= "name like '%$val%'";
>         }               
> }
> $sql .= $like;
> -- 
> regards,
> Tom
> 


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

Reply via email to