legolas1211
legolas1211

Reputation: 19

How to display multiple fetched data?

I am using the following to fetch the latest articles from the database:

//Latest Article
$title_query1 = "SELECT title FROM articles ORDER BY id DESC LIMIT 1";
$description_query1 = "SELECT description FROM articles ORDER BY id DESC LIMIT 1";
$content_query1 = "SELECT content FROM articles ORDER BY id DESC LIMIT 1";
$image_query1 = "SELECT image FROM articles ORDER BY id DESC LIMIT 1";

$title_result1 = mysqli_query($con, $title_query1) or die(mysqli_error($con));
$description_result1 = mysqli_query($con, $description_query1) or die(mysqli_error($con));
$content_result1 = mysqli_query($con, $content_query1) or die(mysqli_error($con));
$image_result1 = mysqli_query($con, $image_query1) or die(mysqli_error($con));

//Second Latest Article
$title_query2 = "SELECT title FROM articles ORDER BY id DESC LIMIT 2,1";
$description_query2 = "SELECT description FROM articles ORDER BY id DESC LIMIT 2,1";
$content_query2 = "SELECT content FROM articles ORDER BY id DESC LIMIT 2,1";
$image_query2 = "SELECT image FROM articles ORDER BY id DESC LIMIT 2,1";

$title_result2 = mysqli_query($con, $title_query2) or die(mysqli_error($con));
$description_result2 = mysqli_query($con, $description_query2) or die(mysqli_error($con));
$content_result2 = mysqli_query($con, $content_query2) or die(mysqli_error($con));
$image_result2 = mysqli_query($con, $image_query2) or die(mysqli_error($con));

However, i'm not sure how I can then do something like this:

 <h1>Here is the first article: <?php $title_result1 ?><h1>
 <h2>Here is the first article description: <?php $description_result1 ?>

 <h1>Here is the second article: <?php $title_result2 ?><h1>
 <h2>Here is the second article description: <?php $description_result2 ?>

Also, is this method not good? If I am going to do this for 100+ articles, will it cause the web page to load slowly?

Thanks

Upvotes: 1

Views: 34

Answers (1)

Duane Lortie
Duane Lortie

Reputation: 1260

You do not need to do a single query for each column. You can get all columns for a row by doing select * Also, as mentioned, you can fetch as many rows as you want, and loop through them.

I prefer the while method.. Example, show last 100 articles

// fetch latest 100
 $sql = "SELECT * FROM articles ORDER BY id DESC LIMIT 100";

if ($result = mysqli_query($con, $sql)){
// got results, convert result object to array called $row

while ($row = mysqli_fetch_array($result)) {

// echo out $row array elements with 
//the column names from the database as array index

echo  '<h2>'. $row['title'] .'</h2>';  // example wrap results with HTML
echo '<b>' .$row['description'] .'</b>'; 
echo $row['content']; 
echo <img src="'.  $row['image'] .'" title="'.$row['description'].'">'; 
echo '<br>'; //so next result is on new line

}   // end of while loop

} else {    
//no result,  error 
}

Upvotes: 1

Related Questions