smonkcaptain Posted April 2, 2011 Share Posted April 2, 2011 Hey all, I'm using $_POST to post search variables from a search form i have made for my site. Below is the code for the search form: <form method="post" action="results.php"> <p class="label">Airline </p><p class="right"> <select style="width: 200px;" name="airline" id="airline"> <option selected="selected" value=""> All Airlines</option> <?php $query=mysql_query("SELECT * FROM photos GROUP BY airline, aircraft ORDER BY airline"); while($row = mysql_fetch_assoc($query)){ echo '<option value="'.$row['airline'].'">'.$row['airline'].'</option>'; } ?> </select></p><br /><br /> <p class="label">Aircraft </p><p class="right"> <select style="width: 200px;" name="aircraft" id="aircraft"> <option selected="selected" value=""> All Aircraft</option> <?php $query=mysql_query("SELECT * FROM photos GROUP BY aircraft ORDER BY aircraft"); while($row = mysql_fetch_assoc($query)){ echo '<option value="'.$row['aircraft'].'">'.$row['aircraft'].'</option>'; } ?> </select></p><br /><br /> <p class="label">Registration </p><p class="right"><input type="text" style="width: 198px;" class="text" name="registration" id="registration" value="" /></p><br /><br /> <p class="label">Construction Number </p><p class="right"><input type="text" style="width: 198px;" class="text" name="cn" id="cn" value="" /></p><br /><br /> <p class="label">Location </p><p class="right"> <select class="select" style="width: 200px;" name="location" id="location"> <option selected="selected" value=""> All Locations</option> <?php $query=mysql_query("SELECT * FROM photos GROUP BY location ORDER BY location"); while($row = mysql_fetch_assoc($query)){ echo '<option value="'.$row['location'].'">'.$row['location'].'</option>'; } ?> </select></p><br /><br /><br /> <div class="options2"></div><br /><br /> <p class="label">Genre </p><p class="right"><select class="select" style="width: 200px;" name="class" id="class"> <option selected="selected" value=""> All Genres</option> <option> Airliner</option> <option> Cargo</option> <option> Executive/Private</option> <option> General Aviation</option> </select></p><br /><br /> <p class="label">Aspect/Subject </p><p class="right"><select class="select" style="width: 200px;" name="aspect" id="aspect"> <option selected="selected" value=""> All Aspects</option> <option> Cabin View</option> <option> Close Up</option> <option> Flight Deck</option> <option> Front View</option> <option> Rear View</option> <option> Side Profile</option> </select></p><br /><br /> <p class="label">Scheme </p><p class="right"> <select class="select" style="width: 200px;" name="scheme" id="scheme"> <option selected="selected" value=""> All Schemes</option> <option> Basic</option> <option> Extra Stickers</option> <option> Hybrid</option> <option> Special</option> <option> Standard</option> </select></p><br /><br /> <p class="label">Situation/Phase</p><p class="right"> <select class="select" style="width: 200px;" name="situation" id="situation"> <option selected="selected" value=""> All Situations</option> <option> Approach</option> <option> Departure</option> <option> Ground</option> </select></p><br /><br /> <p class="label">Time</p><p class="right"> <select class="select" style="width: 200px;" name="tod" id="tod"> <option selected="selected" value=""> All Times of Day</option> <option> Dawn and Dusk</option> <option> Day</option> <option> Night</option> </select></p><br /><br /><br /> <p class="label">Order By</p><p class="right"> <select class="select" style="width: 110px;" name="order" id="order"> <option selected="selected" value=""> Photo #</option> <option> Aircraft</option> <option> Airline</option> <option> Date of Photo</option> <option> Location</option> <option> Registration</option> </select> </p> <p class="right"> <br /><br /> <input type="submit" name="submit" id="submit" value=" Search " /> <input type="reset" name="reset" id="reset" value=" Reset " /> </form> On the results page i have this script: if(!empty($_POST)) { $criteria= implode('</strong> > <strong>', array_map('htmlentities', $_POST)); } <p class="resulttext">Your search <?php if(!empty($_GET)) { echo 'for ';} ?> <strong><?php echo $criteria;?></strong> returned <strong><?php echo $num;?></strong> photo results, these are displayed below.</p> to echo the search variable. For example if someone used the form to search for 'British Airways' and 'London Heathrow', the results page would read: results.php?airline=British+Airways&location=London+Heathrow Your search for British Airways > London Heathrow has returned X photo results.... Although this is working; because there is often alot of form options not used, the url turn's out to be: results.php?airline=British+Airways&location=London+Heathrow&aircraft=®istration=&blah=&blah=&submit=search .....etc Which then reads as: Your search for British Airways > London Heathrow > > > > > SEARCH has returned X photo results.... as seen below in this picture: Is there anyway to stop this from happening and just echo the search field which !="" Thanks In Advanced! Quote Link to comment https://forums.phpfreaks.com/topic/232505-echoing-search-variables/ Share on other sites More sharing options...
acefirefighter Posted April 2, 2011 Share Posted April 2, 2011 You could use a foreach loop and empty() to check and see if each element in your $_POST array is empty and if it is don't use it. Maybe even use array_push() to apply the results that aren't empty to a new array and implode that new array with the html you are wanting to use. Something like what is below. I haven't tested it but I think it should work. <?php $criteria = array(); if(!empty($_POST)) { foreach ($_POST as $_POST) { if (!empty($_POST)) { array_push($criteria, $_POST); } } $userserch = implode('</strong> > <strong>', array_map('htmlentities', $criteria)); } ?> Quote Link to comment https://forums.phpfreaks.com/topic/232505-echoing-search-variables/#findComment-1195920 Share on other sites More sharing options...
smonkcaptain Posted April 2, 2011 Author Share Posted April 2, 2011 You could use a foreach loop and empty() to check and see if each element in your $_POST array is empty and if it is don't use it. Maybe even use array_push() to apply the results that aren't empty to a new array and implode that new array with the html you are wanting to use. Something like what is below. I haven't tested it but I think it should work. <?php $criteria = array(); if(!empty($_POST)) { foreach ($_POST as $_POST) { if (!empty($_POST)) { array_push($criteria, $_POST); } } $userserch = implode('</strong> > <strong>', array_map('htmlentities', $criteria)); } ?> Thanks that works! However, it's still showing 'Submit Query': Here is the code for the submit form input: <input type="submit" name="submit" id="submit" value=""/> Thanks! Quote Link to comment https://forums.phpfreaks.com/topic/232505-echoing-search-variables/#findComment-1195930 Share on other sites More sharing options...
acefirefighter Posted April 2, 2011 Share Posted April 2, 2011 Try this I added array_pop() it should remove the last element of the array. but I am guessing that submit_query is the last element in the $_POST array. <?php $criteria = array(); if(!empty($_POST)) { array_pop($_POST); foreach ($_POST as $_POST) { if (!empty($_POST)) { array_push($criteria, $_POST); } } $userserch = implode('</strong> > <strong>', array_map('htmlentities', $criteria)); } ?> Quote Link to comment https://forums.phpfreaks.com/topic/232505-echoing-search-variables/#findComment-1195938 Share on other sites More sharing options...
smonkcaptain Posted April 2, 2011 Author Share Posted April 2, 2011 Try this I added array_pop() it should remove the last element of the array. but I am guessing that submit_query is the last element in the $_POST array. <?php $criteria = array(); if(!empty($_POST)) { array_pop($_POST); foreach ($_POST as $_POST) { if (!empty($_POST)) { array_push($criteria, $_POST); } } $userserch = implode('</strong> > <strong>', array_map('htmlentities', $criteria)); } ?> Thankyou very much! Top man.. Yes, the submit_query was the last element in the array. Thanks once again Quote Link to comment https://forums.phpfreaks.com/topic/232505-echoing-search-variables/#findComment-1195940 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.