|
Posted by Jeff Gardner on 09/15/06 13:31
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.
--
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
[Back to original message]
|