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

Your name:

Reply:


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

[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

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