Note that there are some explanatory texts on larger screens.

plurals
  1. POCan I make this search function more efficient?
    primarykey
    data
    text
    <p>I am getting a list of users to display on a page using the following code in <code>members.php</code>:</p> <pre><code>$users = $user-&gt;getUsers($_GET['skill'], $_GET['hometowm'], $_GET['county']); </code></pre> <ul> <li><code>members.php</code> displays all members</li> <li><code>members.php?skill=Foo</code> displays users with that skill</li> <li><code>members.php?hometown=Foo</code> displays users of hometown "Foo"</li> <li><code>members.php?county=Foo</code> display users of county (AKA state in US)</li> <li><code>members.php?skill=Foo&amp;hometown=Foo</code> displays users of skill and hometown</li> <li><code>members.php?skill=Foo&amp;county=Foo</code> displays users of skill and county</li> </ul> <p>Here is what I'd like to know: Is there a way I can shorten the amount of <code>if</code> statements or make them more efficient? Am I doing it correctly? Because I don't like the fact I have so many parameters especially when I want to expand.</p> <pre><code>**User.class.php** public function getUsers($skill = null, $hometown = null, $county = null) { $user_table = $this-&gt;cfg['users_table']['table']; # Search Skill if ($skill != null &amp;&amp; $hometown == null &amp;&amp; $county == null) { $sql = 'SELECT skills.Title, users_skills.SkillId, users.* FROM users INNER JOIN (skills INNER JOIN users_skills ON skills.SkillId = users_skills.SkillId) ON users.UserId = users_skills.UserId WHERE (((skills.Title)="' . $skill . '"))'; # Search Hometown } else if ($hometown != null &amp;&amp; $skill == null &amp;&amp; $county == null) { $sql = 'SELECT * FROM users WHERE HomeTown = "' . $hometown . '"'; # Search County } else if ($county != null &amp;&amp; $skill == null &amp;&amp; $hometown == null) { $sql = 'SELECT * FROM users WHERE county = "' . $county . '"'; # Search Skill and Hometown } else if ($skill != null &amp;&amp; $hometown != null &amp;&amp; $county == null) { //sql # Search Skill and County } else if($skill != null &amp;&amp; $county != null &amp;&amp; $hometown == null){ } else { $sql = "SELECT * FROM " . $user_table; } $stmt = $this-&gt;db-&gt;prepare($sql); $stmt-&gt;execute(); return $stmt-&gt;fetchAll(PDO::FETCH_ASSOC); } </code></pre> <p>Thanks.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload