Fernanditos
asked on
Passing multiple values in URL
Hi,
I have list of Artists on my table database.
Artist table has `id_usr`, `Intrument_ID`, 'name_usr'
I want to list artist passing the Instruments ID to the query, but I need to pass these ids in the URL
for example, I want to list all Guitar players and violin players, I need to do something like:
list.php?Instrument_ID=3,5
that would return all artist where Instrument_ID in ($url)
How to do this?
I have list of Artists on my table database.
Artist table has `id_usr`, `Intrument_ID`, 'name_usr'
I want to list artist passing the Instruments ID to the query, but I need to pass these ids in the URL
for example, I want to list all Guitar players and violin players, I need to do something like:
list.php?Instrument_ID=3,5
that would return all artist where Instrument_ID in ($url)
How to do this?
I would recommend storing the data in an array, then call the serialize command on the variable, then pass the serialized variable in the URL.
http://php.net/manual/en/function.serialize.php
http://php.net/manual/en/function.serialize.php
You need to make sure that you name the fieldname as an array.
in your form,
<input type=checkbox name="Instrument_ID[]" value="1" />
<input type=checkbox name="Instrument_ID[]" value="2" />
<input type=checkbox name="Instrument_ID[]" value="3" />
on the next step to get the id's
if(isset($_POST['Instrumen t_ID']))
{
$Instruments= join(",", $_POST['Instrument_ID']);
}
Sorry forgot the $_POST in my first entry.
in your form,
<input type=checkbox name="Instrument_ID[]" value="1" />
<input type=checkbox name="Instrument_ID[]" value="2" />
<input type=checkbox name="Instrument_ID[]" value="3" />
on the next step to get the id's
if(isset($_POST['Instrumen
{
$Instruments= join(",", $_POST['Instrument_ID']);
}
Sorry forgot the $_POST in my first entry.
ASKER
Sorry, I dont understand, I am talking about passing the ids via URL. How to do it ?
try following example it is important that your are using , commas to separate instruments ids otherwise IN keyword will not work in WHERE clause of query
<html>
<head>
<title>Test</title>
</head>
<body>
<table>
<?php
// do mysql connection with mysql_connect() and mysql_select_db
$instruments = $_GET['Instrument_ID'];
$query = "SELECT * FROM artists WHERE Instrument_ID IN ($instruments)";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo "<tr>\n";
echo "<td>".$row['id_usr']."</td>\n";
echo "<td>".$row['id_name_usr']."</td>\n";
echo "<td>".$row['Instrument_ID']."</td>\n";
// and so on for other fields
echo "</tr>\n";
}
?>
</table>
</body
</html>
Hi Fernanditos,
What rstjohn is telling you is correct if you need a page where a user can select a number of instruments to search for and when they click submit the page that opens would read that list and display the data from your database.
I don't know what your current experience is with html forms so this is more of a complete example. In the form on your page, set the 'action' equal to the name of the page that will do your search and display the results. Set the 'method' to "get" so that when the form is submitted the values will be passed in the URL (see attached code snippet).
In your search results page, use the code provided above by nasirbest.
What rstjohn is telling you is correct if you need a page where a user can select a number of instruments to search for and when they click submit the page that opens would read that list and display the data from your database.
I don't know what your current experience is with html forms so this is more of a complete example. In the form on your page, set the 'action' equal to the name of the page that will do your search and display the results. Set the 'method' to "get" so that when the form is submitted the values will be passed in the URL (see attached code snippet).
In your search results page, use the code provided above by nasirbest.
//in your search page
<form action="yoursearchresultspage.php" method="get">
<input type="checkbox" name="Instrument_ID[]" value="1"/> <label>Cello</label><br/>
<input type="checkbox" name="Instrument_ID[]" value="2"/> <label>Guitar</label><br/>
<input type="checkbox" name="Instrument_ID[]" value="3"/> <label>Piano</label><br/>
<input type="checkbox" name="Instrument_ID[]" value="4"/> <label>Violin</label><br/>
<input type="submit" value="Search"/>
</form>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Dang, sorry - I had commented out the actual query action while I was testing. Just alter line 14 to look like this:
$result = mysql_query($query);
And I forgot to close the <pre> tag on line 26. Haste makes waste...
I've only briefly read the top post.
But I would have the URL contain the instrument ID, then use a query to select all users who play that instrument.
This, rather than trying to build a string on submit, without some sort of forward to the URL after the original query i've just mentioned! O_o
Bit of sensible logic in my mind!
But I would have the URL contain the instrument ID, then use a query to select all users who play that instrument.
This, rather than trying to build a string on submit, without some sort of forward to the URL after the original query i've just mentioned! O_o
Bit of sensible logic in my mind!
<input type=checkbox name="Instrument_ID[]" value="1" />
<input type=checkbox name="Instrument_ID[]" value="2" />
<input type=checkbox name="Instrument_ID[]" value="3" />
if(isset($Instrument_ID))
{
$Instruments= join(",", $Instrument_ID);
}