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