Jump to content

Display chosen article on "read_news.php"


insejn

Recommended Posts

Hi,

 

This is my first post on any php-forum.. I have given up searching the net for my answer. It seems such a simple task but still I cant seem to find the solution. My problem is this:

I'm creating a type of news section on my website where I want to display a preview of the last 3 articles in the database with a "read this.." link under each preview that takes the user to for example "read_news.php" and shows the chosen news from the database. The thing I cant seem to find the solution for is how to create the read this link on the preview-page that takes you to the "read_news.php?article_id=...." and displays the right $article_title + $article_body + $article_written_by + $article_date from the chosen $article_id..

 

I think I get the link to work on the preview.php page with this code:

echo "<a href='read_news.php?article_id=$row[0]'>read this...</a>";

 

..this links to the read_news.php and displays "read_news.php?article_id=14" in the adressfield but the page doesn't show anything.

 

read_news.php looks at the moment like this:


<?
//database connection
$dbhost = 'localhost';
$dbuser = '...';
$dbpass = '...';
$dbname = '...';

if(isset($_GET['article_id']))
{
   $query  = "SELECT article_id, article_title, article_body ".
             "FROM articles_table ".
             "WHERE article_id = '{$_GET['article_id']}'";
   $result = mysql_query($query) or die('Error : ' . mysql_error());
   list($article_id, $article_title, $article_body) = mysql_fetch_array($result;)

echo "$article_title<br>";
echo "$article_body<br>";
echo "$article_written_by<br>";
echo "$article_date<br>";
?>

 

..and obviously this is'nt the right way of solving it. I'm totally lost here and there's probably a really simple solution to this but I cant seem to figure it out.

 

Am I making any sense at all?  :)

 

/Björn (that's actually Bear in English:))

Link to comment
Share on other sites

If I understand you correctly... you want to have the last 3 news articles displayed as a preview. Below that preview you want a "read this" link under them.

 

You are going to want to use a while statement to select the articles.

 

<?php
$random_var = mysql_query("SELECT * FROM `articles_table` ORDER BY article_id DESC LIMIT 0,3");

while ($article_preview = mysql_fetch_array($random_var)) {
// display the link here. You can limit the number of chars the article prints out, and than after that link to the article id etc. by using $article_preview['article_id'];
}
?>

 

Hope that helps :)

Link to comment
Share on other sites

Thanks for the answer :) it cleared up some confusions I had about that code. But the main problem I have is to get the "chosen" news on the read_news.php page.

 

The code looks like this on the preview page news.php

[color=orange]// Get 3 news from the "articles_table" table and order them with the latest first![/color]
$result = mysql_query("SELECT * FROM articles_table ORDER BY article_id DESC LIMIT 3") 
or die(mysql_error());  

while($row = mysql_fetch_array( $result )) {
[color=orange]// Print out the contents of each row into a table[/color]
echo "<table width='400' border='0' cellspacing='1' cellpadding='2'>";
echo "<tr><td bgcolor='#CCFF00'><font color='#333333'>".$row['article_date']."</font></td></tr>";
echo "<tr><td><font size='+1'>".$row['article_title']."</font><font class='console'> [ ".$row['article_console']." ]</font></td></tr>";
echo "<tr><td>".$row['article_body']."</td></tr>";
echo "<tr><td><i><font class='console'>Skriven av: ".$row['article_written_by']."</font></i></td></tr></table><br>";

echo "<a href='read_news.php?article_id=$row[0]'>read more..</a>";
} 
?>

 

..How do I get the read_news.php to display the selected news? some sort of $_GET['article_id'] code?

 

And how do I limit the number of chars from the $row['$article_body'] to show for exampe the first 30 chars?

 

Link to comment
Share on other sites

read_news.php

<?php

//database connection
$dbhost = 'localhost';
$dbuser = '...';
$dbpass = '...';
$dbname = '...';

mysql_connect($dbhost,$dbuser,$dbpass);                             // these were
mysql_select_db($dbname);                                           // missing

if(isset($_GET['article_id']))
{
   $query  = "SELECT article_id, article_title, article_body ".
             "FROM articles_table ".
             "WHERE article_id = '{$_GET['article_id']}'";
   $result = mysql_query($query) or die('Error : ' . mysql_error());
   list($article_id, $article_title, $article_body) = mysql_fetch_row($result);    // use fetch_row with list

echo "$article_title<br>";
echo "$article_body<br>";
echo "$article_written_by<br>";  // not selected in query
echo "$article_date<br>";         // not selected in query
}
?>

Link to comment
Share on other sites

Thank you very much! such an easy and noobish misstake that was I did :)

 

..but now I get an Error shown instead:

"Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE article_id = '12'' at line 1".

 

Is the line incorrect to use then? or might something else be the problem?

Link to comment
Share on other sites

I got it fixed! it was that query line that was wrong.. I changed it to:

$query  = ("SELECT article_id, article_title, article_body, article_written_by, article_console, article_date FROM articles_table WHERE article_id = '{$_GET['article_id']}'");

 

Thank you guys for all the help!

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.