I'm trying to $_get part of URL in a href. What I want to happen is when you click the link you a redirected to that specific link. If that makes sense.
I have 2 functions:
First function, The list of links:
function showPosts() {
$sql = ("SELECT * FROM blog");
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
$listId = $row["blog_id"];
$showTitle = $row["title"];
$showContent = $row["content"];
$showTimestamp = $row["timestamp"];
echo'
<div>
<a href="index.php?option=blog&task=view&id='$listId'"><h3>'.$showTitle.'</h3></a>
<div>'.$showContent.'</div>
<p>'.$showTimestamp.'</p>
</div>
';
}
}
Second function, redirect to link:
function viewPost() {
if(empty($_GET['id']) ) {
$listId = '';
} else {
$listId = $_GET['id'];
}
$sql = ("SELECT title, content, timestamp FROM blog WHERE blog_id='$listId'");
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
$showTitle = $row["title"];
$showContent = $row["content"];
$showTimestamp = $row["timestamp"];
echo'
<div>
<h2>'.$showTitle.'</h2>
<p>'.$showTimestamp.'</p>
<div>'.$showContent.'</div>
</div>
';
}
}
As you can see i'm using $_get['id'] here and I read that $_get can be used to retrieve passed url parameters.
The way i have set up the URL is defined by a set of variables in a switch.
if(empty($_GET['task']) ) {
$task = 'show';
} else {
$task = $_GET['task'];
}
switch ($task){
case "create":
createPost();
break;
case "save":
savePost();
break;
case "show":
showPosts();
break;
case "view":
viewPost();
break;
default: echo'Something went wrong!';
}
Currently when I click a link, it redirects but all of the content related to that id is not there.
EDIT
I figured out what was wrong in the code. In the SQL statement I used dots(.) inside apostrophes(') to separate themselfes from the variable. When I removed the dots it worked fine.
blog_id='.$listId.'
Not sure why I even used the dots in the first place? :/
Also removed all the die's in my switch as per instruction from one answer.