Reply to Re: What's wrong the the logic in this code?

Your name:

Reply:


Posted by Jeff Gardner on 09/15/06 18:22

Jerry Stuckle wrote:
> Jeff Gardner wrote:
>> 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.
>
> You're problem is you are setting $q each time through the loop, then
> using it outside of the loop. $q will always have the last value set in
> the loop.
>
> If $search matched the last state in your list, you would get the value
> from your "then" clause. Any other time you'll get the value from your
> "then" clause.
>
Here's what ended up working: (note the if(){foreach(){if()}} at the
beginning) Unfortunately, in_array() and array_key_exists() are case
sensitive. I'm trying to figure out a way to get strtoupper and
ucfirst() to fix any input.

<snip>
$search = $_POST[search];
$sort = $_POST[sortby];
$states = array(
"AL" => "Alabama",
"AK" => "Alaska",
"AZ" => "Arizona",
...
);

if (in_array($search ,$states) || array_key_exists($search, $states)) {
foreach ($states as $key => $value){ if ($search == $value || $search
== $key){
$search = $key;
}}
$q = "
SELECT
organization.*, contacts.*
FROM organization
LEFT JOIN contacts
ON organization.org_id = contacts.org_id
OR contacts.org_id = 0
WHERE organization.state
LIKE '$search%'
OR contacts.state
LIKE '%$search%'
ORDER BY '$sort' ASC";

} else {
$q = "
SELECT
CONCAT(contacts.firstname,' ',contacts.lastname) AS fullname,
organization.*, contacts.*
FROM organization
LEFT JOIN contacts
ON organization.org_id = contacts.org_id
OR contacts.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";
}
</snip>



--

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]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация