tags:

views:

113

answers:

5

I am making a photography website. In the DB there is an images table, events table and category table which as linked via foreign keys. At the moment i generate events from when a photo was taken from the database and turn them into anchor links.

<?php
while ( $a_row = mysql_fetch_row( $result ) ){

 foreach ( $a_row as $field ){

?>
<a href="images.php?event=<?php echo $field;?> "> <php? echo $field; ?> </a>
<?php
 }
}
?>

When the link is clicked a script gets the variable from get in the url: /images.php?**event**=eventCalledParty

foreach($_GET as $value)
{
$event = $value;
}
$event = mysql_real_escape_string($event);

My question is - If i was to implement categories and have a url that looks like:

/images.php?event=eventCalledParty&category=categoryCalledFashionPhotography

How would i seperate these two variables from the url to use in my queries.

Thank You.

+4  A: 

These will automatically show up in these variables...

$_GET['event']
$_GET['category']

PHP does all of this work for you.

Brad
I should also note that you shouldn't be escaping your data until you go to use it in your query. Otherwise it won't be of much use to you for anything else.
Brad
good point. it worth to add it to the answer, rather in comment
Col. Shrapnel
A: 

Each url parameter becomes a separate key in $_GET.

So, for /images.php?event=eventCalledParty&category=categoryCalledFashionPhotography you will get:

$_GET['event'] => 'eventCalledParty' 
$_GET['category'] => 'categoryCalledFashionPhotography' 

and you can act accordingly:

if ($_GET['category'] == 'categoryCalledFashionPhotography') {
    //do stuff here
}
Fanis
You need to be checking if $_GET['something'] is set first! Use empty() or isset().
Brad
@Brad most certainly so. I was mostly trying to focus slexAtrukov's attention on how $_GET is used step by step. Good advice, though.
Fanis
A: 

Im a bit rusty on php but I think in your foreach what you want is to get the name of teh field as well as its value.

foreach($_GET as $name->$value)
{
  if($name == 'event') {
    $event = mysql_real_escape_string($value);
  }
  else if($name == 'category')
  {
    $category = mysql_real_escape_string($category);
  }
}
davydotcom
what's the use of a loop here?
Col. Shrapnel
That should be foreach($_GET as $name=>$value).
James
+2  A: 
$event = mysql_real_escape_string($_GET['event']);
$category = mysql_real_escape_string($_GET['category']);
Col. Shrapnel
A: 

foreach($_GET as $key => $value) { $event[$key] = mysql_real_escape_string($value); }

Dale Hurley
register globals will make a funny mess out of this code :) Better to add `$event=array();` above
Col. Shrapnel