HI list

Is there an elegant way to know when the last time through the loop is
going to be and to do something else?


I want to search through a table by "exploding" the search string and
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
array. Arguably I could first determine the amount of elements in the
array and then use a for instead of a foreach, but I'm not sure if that
will help ( will probably need a switch instead if you want to work with
the sheer array elements), however, the if statement inside the loop is
meant to "strip" out "the" and "and", meaning that it won't much help to
use that approach anyway.

Anyway, as you can see my problem lies with the SQl when the last
element is reached, then it should NOT add another "and" or "or".

My attempts at "backtracking" the $sql string/array and start writing
the end part of the string obviously fails.

Any help with my "logic", ie, how do/would you guys do this?

Thanks
 

$table_name = "test";
if ($_POST[any_all] == "any") {
        $logic = "or";
}
elseif ($_POST[any_all] == "all") {
        $logic = "and";
}

$string = $_POST[text];
$phrases = explode(" ", $string);

$sql = "select * from $table_name where ";

foreach ($phrases as $key=>$val) {
        if (($val != "the") && ($val != "and")) {
                $sql.= "name like '%$val%'  $logic";            
        }               
}

$length = strlen($sql);
$newlen = $length - 4;
$sql[$newlen].= " order by name";
echo $sql; 



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

Reply via email to