|
Posted by Jeff Gardner on 09/15/06 14:10
Jeff Gardner wrote:
> Hans 'pritaeas' Pollaerts wrote:
>> "Jeff Gardner" <user@example.tld> wrote in message
>> news:FNrOg.2076$IA.204@newssvr11.news.prodigy.com...
>>> Greetings:
>>>
>>> I am attempting to get conditional output based on POSTed form data.
>>> If the posted value is either the key or value of an array, $x=key and
>>> $q=foo. elseif it is neither key nor value(I tried || too) , $q=bar.
>>> Even though $x is properly assigned the new value, $q always ends up
>>> being bar. Abstractions aside, here's the code: (note ## comments
>>> added to this post)
>>>
>>> <snip>
>>> $search = $_POST[search];
>>> $sort = $_POST[sortby];
>>> $states = array(
>>> "AL" => "Alabama",
>>> "AK" => "Alaska",
>>> "AZ" => "Arizona",
>>> ...
>>> );
>>> ##echo $search here outputs the POSTed input
>>> foreach ($states as $key => $value)
>>>
>>> if ($search == $value || $search == $key) {
>>> $search = $key;
>>> ##echo $search here outputs the new value, when applicable
>>> $q = "
>>> SELECT
>>> organization.*, contacts.*
>>> FROM organization
>>> LEFT JOIN contacts
>>> ON organization.org_id = contacts.org_id
>>> OR organization.org_id = 0
>>> WHERE organization.state
>>> = '$search'
>>> OR contacts.state
>>> = '$search'
>>> ORDER BY '$sort' ASC";
>>>
>>> } elseif ($search != $value && $search != $key) { ##I tried || here too.
>>> ##echo $search here outputs the new value too, when applicable
>>> $q = "
>>> SELECT
>>> CONCAT(contacts.firstname,' ',contacts.lastname) AS fullname,
>>> organization.*, contacts.*
>>> FROM organization
>>> LEFT JOIN contacts
>>> ON organization.org_id = contacts.org_id
>>> OR organization.org_id = 0
>>> WHERE organization.state
>>> LIKE '%$search%'
>>> OR organization.orgname
>>> LIKE '%$search%'
>>> OR contacts.state
>>> LIKE '%$search%'
>>> OR contacts.lastname
>>> LIKE '%$search%'
>>> OR contacts.firstname
>>> LIKE '%$search%'
>>> ORDER BY '$sort' ASC";
>>> }
>>>
>>> $result = mysql_query($q)
>>> or die('Query Failed: ' . mysql_error());
>>> </snip>
>>>
>>> Where is this evaluation breaking down and why? Thanks in advance.
>>> --
>>>
>>> Regards,
>>>
>>> Jeff Gardner
>>
>> Instead of the elseif you could just use else. Why check again, it's
>> either
>> a state value, or something else.
>>
>> Hans
>>
>>
> I added the elsif because I get the same output with an else. That's
> why I suspect that there is a logic problem. For some reason, the second
> $q variable is populated regardless of the previous conditional
> statement being satisfied or not. If a state is not input, $search
> remains untouched and the 2nd $q is populated as expected. If a state
> is input, $search is modified but the 2nd $q is still populated.
>
The problem is how I am comparing $search with the array:
foreach ($states as $key => $value)
if ($search == $value || $search == $key)...
This ends up populating $search with multiple strings from the array.
The issue isn't with the logic but with my method of comparison to the
array. What's the proper way to compare strings with values within an
array? Would probably be a better question
--
Regards,
Jeff Gardner
___________________________
"Contrary to popular belief, Unix is user friendly. It just happens
to be very selective about who its friends are." --Kyle Hearn
Navigation:
[Reply to this message]
|