Jump to content

Getting Variable From Url In Php & Mysql


Falanas

Recommended Posts

Forgive me, I am only but a beginner in PHP & Mysql. I am trying to do a simple website but unfortunately I can see myself in a big mess:

 

Getting 'id' from URL has been so hard for me and that's why I will appreciate if you could assist me. Here goes the code:

 

 

 

index.php

 

 

<?php

 

//The first category (KENYA SAFARIS AS DEFAULT VALUE) of table - categoties

 

$catsql = "SELECT * FROM categories WHERE categories.id = 1";

$catresult = mysql_query($catsql);

while($catrow = mysql_fetch_assoc($catresult)){

echo "<h2> " .$catrow['cat_name'] . "</h2>";

 

//list of available sites to be visited (OF - TABLE tourism sites)

$sitesql = "SELECT * FROM tourism_sites WHERE cat_id = " .$catrow['id'] . ";";

$siteresult = mysql_query($sitesql);

$sitenumrows = mysql_num_rows($siteresult);

 

if($sitenumrows==0){

echo "<h2 class = 'results'>No listed safari site</h2>";

}

else{

while($sitenumrows = mysql_fetch_assoc($siteresult)){

echo "<ul>";

echo "<li><a href='#.php?id =" . $sitenumrows['id'] . "'>" . $sitenumrows['hotel_name'] . "</a></li>";

echo "</ul>";

}

}

 

echo "</li> ";

}

 

?>

 

<li>

<?php

//The second category (UGANDA AS DEFAULT VALUE) of categories table

$cat2sql = "SELECT * FROM categories WHERE categories.id = 2";

$cat2result = mysql_query($cat2sql);

while($cat2row = mysql_fetch_assoc($cat2result)){

 

echo "<h2>" .$cat2row['cat_name'] . "</h2>";

 

//list sites in Uganda to be visited

$site2sql = "SELECT * FROM tourism_sites WHERE cat_id =" . $cat2row['id'] .";";

$site2result = mysql_query($site2sql);

$site2numrows = mysql_num_rows($site2result);

if($site2numrows==0){

echo "<h2 class = 'results'> No saved locations..! </h2>";

}

else{

while($site2numrows = mysql_fetch_assoc($site2result)){

echo "<ul>";

echo "<li><a href='#.php?id =" . $site2numrows['id'] . "'>" . $site2numrows['hotel_name'] . "</a></li>";

echo "</ul>";

}

}

 

echo "</li>";

}

 

?>

 

 

 

 

 

 

<?php

 

 

if(isset($_GET['id']) == TRUE) {

if(is_numeric($_GET['id']) == FALSE) {

header("Location: " . BASE_DIR);

}

$correct_id = $_GET['id'];

 

}

else {

header("Location: " . BASE_DIR);

}

?>

 

<!-- start page -->

<div id="page">

<!-- start content -->

 

<div id="content">

 

<div class="post">

 

 

<h2>Reservation</h2>

 

<?php

/*

*this query links to variable . $sitenumrows['id'] of index.php to display further information about

* $site2numrows['hotel_name']

*/

 

$placesql = "SELECT tourism_sites.*, towns.*, place.*, photos.* FROM tourism_sites, towns, place, photos

WHERE tourism_sites.cat_id = towns.id AND towns.id = place.cat_id AND place.id = photos.id AND photos.image_id = " . $correct_id;

$placeresult = mysql_query($placesql);

$placenumrow = mysql_num_rows($placeresult);

if($placenumrow == 0){

echo "<h2 class = 'results'>There was a problem querrying database</h2>";

}

else{

while ($placenumrow == mysql_fetch_assoc($placeresult)){

echo "<h2 class = 'title'>" . $placenumrow['town_name'] . "</p>";

}

}

 

?>

 

 

please help

Link to comment
https://forums.phpfreaks.com/topic/268772-getting-variable-from-url-in-php-mysql/
Share on other sites

You never try to use $_GET['id'] as far as I can see.

 

 

Jessica I believe I have used it (it is saved in '$correct_id').

 

What worries me is that this code is unable to execuite:

 

 

[$placesql = "SELECT tourism_sites.*, towns.*, place.*, photos.* FROM tourism_sites, towns, place, photos

WHERE tourism_sites.cat_id = towns.id AND towns.id = place.cat_id AND place.id = photos.id AND photos.image_id = " . $correct_id;]

 

No any number e.g 1, 2, 3 etc is seen on the URL instead, it redirects me to BASE_DIR i.e header("Location: " . BASE_DIR);

 

Is it because the id sent from index.php to the url does not meet the below conditions?

 

<?php

 

if(isset($_GET['id']) == TRUE) {

if(is_numeric($_GET['id']) == FALSE) {

header("Location: " . BASE_DIR);

}

$correct_id = $_GET['id'];

 

}

else {

header("Location: " . BASE_DIR);

}

?>

 

I expected to see something like - details.php?id=1 or details.php?id=2 depending on the link clicked. What do you say? Thanks.

===========================================================================================================

 

 

 

<?php

 

if(isset($_GET['id']) == TRUE) {

if(is_numeric($_GET['id']) == FALSE) {

header("Location: " . BASE_DIR);

}

$correct_id = $_GET['id'];

 

}

else {

header("Location: " . BASE_DIR);

}

?>

<!-- start page -->

<div id="page">

<!-- start content -->

 

<div id="content">

 

<div class="post">

 

 

<h2>Reservation</h2>

 

<?php

/*

*this query links to variable . $sitenumrows['id'] of index.php to display further information about

* $site2numrows['hotel_name']

*/

 

$placesql = "SELECT tourism_sites.*, towns.*, place.*, photos.* FROM tourism_sites, towns, place, photos

WHERE tourism_sites.cat_id = towns.id AND towns.id = place.cat_id AND place.id = photos.id AND photos.image_id = " . $correct_id;

$placeresult = mysql_query($placesql);

$placenumrow = mysql_num_rows($placeresult);

if($placenumrow == 0){

echo "<h2 class = 'results'>There was a problem querrying database</h2>";

}

else{

while ($placenumrow == mysql_fetch_assoc($placeresult)){

echo "<h2 class = 'title'>" . $placenumrow['town_name'] . "</p>";

}

}

 

?>

Okay so getting anything from the URL you should have right at the very top of your page (before <doctype>) you need:

 

$Url = $_GET["id"]; /*or whatever you getting from url*/

 

He does have a line for it.

$correct_id = $_GET['id'];

 

It doesn't have to come before the doctype, especially if there's other processing. You first need to actually check if it even exists, so I would put all the processing in one place. The only reason for it to be before the doctype is if you are going to redirect to another page based on that value or lack of value.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.