7

I've an application that I'm building, and I'm stuck at a certain point.

I'm trying to pass a variable that has multiple values. So my URL will look like:

localhost/report.php?variable=value1, value2, value3

Problem is I'm not sure how I can do this. The variables are to be used to retrieve data from a database. I'm using PHP and no Javascript.

Any help would be great!

EDIT:
Here is the HTML I have in my page where the variables are selected:

<select name="types" size="19" multiple>
    <option value="all" selected>All Types</option>
    <option value="book" selected>Books</option>
    <option value="cd" selected>CD</option>
</select>

So a user could select Books and CD, and I would need to pass these two values in the "types" variable.

mickburkejnr
  • 3,463
  • 11
  • 69
  • 107

6 Answers6

10

Use &

localhost/report.php?variable=value1&val2=value2&val3=value3

Is that what you are after?

jp2code
  • 24,618
  • 35
  • 140
  • 254
  • 4
    that's multiple variables, not one variable with multiple values –  Aug 12 '12 at 19:34
  • Sort of, what I really need is to add all of the values to that variable. So in the PHP code I can just use `$variable = $_GET['variable']`, so then I can use $variable in the query. – mickburkejnr Aug 12 '12 at 19:35
  • If both pages are on the same domain, you can use the `Session` variables? `Session["myStringName"] = someObject` then simply read it back by casting to what you need. Sorry, but my PHP isn't so good, though. – jp2code Aug 12 '12 at 19:38
5

There is a simple way to do this in PHP by calling http_build_query() and pass your values as an indexed array. You would do something like:

$value_array = array('types' => array('book', 'cd'));
$query = http_build_query($value_array);

Then generate the url using $query.

Chris
  • 294
  • 1
  • 3
5

As noted at https://stackoverflow.com/a/2407401/1265817, you can use this method.

If you want PHP to treat $_GET['select2'] as an array of options just add square brackets to the name of the select element like this: <select name="select2[]" multiple …

Then you can acces the array in your PHP script

<?php
header("Content-Type: text/plain");

foreach ($_GET['select2'] as $selectedOption)
  echo $selectedOption."\n";
Community
  • 1
  • 1
DACrosby
  • 10,150
  • 3
  • 34
  • 49
2

try localhost/report.php?variable[]=value1&variable[]=value2 will give you an array in php

WayneC
  • 4,561
  • 2
  • 34
  • 41
2

I think you have your URL correct

localhost/report.php?variable=value1,value2,value3

Then use PHP to get all of the values on the report.php page

$variable = explode(",", $_GET["variable"]);

// Output
$variable[0] = "value1";
$variable[1] = "value2";
$variable[2] = "value3";
DACrosby
  • 10,150
  • 3
  • 34
  • 49
0

You can use serialize like:

echo '<a href="index.php?var='.serialize($array).'"> Link </a>';

and get data using unserialize like:

$array= unserialize($_GET['var']);

serialize function giving you storable (string) version of array type, and can be restored by unserialize function.

MAMProgr
  • 380
  • 3
  • 12
  • Interesting idea. If I were to bookmark or copy a `index.php?var='.serialize($array).'` link, would I be able to reload that later or is the serialized data lost in the session? – jp2code Dec 09 '13 at 14:30