4

currently I'm working on a site uptime search engine however I'm having a silly issue. I want to output more than one mysql row in a table however my code below causes a separate table to be created for each row thats found. Thank you in advance for your assistance

 $searchTerm = trim($_GET['searchterm']);

 //check whether the name parsed is empty
 if($searchTerm == "")
{
echo "Please enter something to search for...";
exit();
} 

//database connection info
$host = "localhost"; //server
$db = "DB NAME"; //database name
$user = "USER"; //dabases user name
$pwd = "PASSWORD"; //password


$link = mysqli_connect($host, $user, $pwd, $db);


 $query = "SELECT * FROM sites WHERE name OR des LIKE '%$searchTerm%'";

 $results = mysqli_query($link, $query);


 if(mysqli_num_rows($results) >= 1)
 {

while($row = mysqli_fetch_array($results))
{
echo '<table class="table table-striped table-bordered table-hover">'; 
echo"<TR><TD>Name</TD><TD>Description:</TD><TD>Status</TD></TR>"; 
echo "<tr><td>"; 
echo $row['name'];
echo "</td><td>";   
echo $row['des'];
echo "</td><td>";    
echo $row['status'];
echo "</TD></tr>";  
echo "</table>";    
}

    }
    else
echo "There was no matching record for the name " . $searchTerm;
?>
1
  • 1
    You can put your table tag outside the loop and only tr in the loop Commented Aug 11, 2013 at 14:01

2 Answers 2

8

Replace the while inside the if with this:

echo '<table class="table table-striped table-bordered table-hover">'; 
echo "<tr><th>Name</th><th>Description:</th><th>Status</th></tr>"; 
while($row = mysqli_fetch_array($results))
{
  echo "<tr><td>"; 
  echo $row['name'];
  echo "</td><td>";   
  echo $row['des'];
  echo "</td><td>";    
  echo $row['status'];
  echo "</td></tr>";  
}
echo "</table>";    
Sign up to request clarification or add additional context in comments.

Comments

-1

First and last line of code shoud be out of the loop. The code should be like this:

echo '<table class="table table-striped table-bordered table-hover">'; 
while($row = mysqli_fetch_array($results))
{
  echo"<TR><TD>Name</TD><TD>Description:</TD><TD>Status</TD></TR>"; 
  echo "<tr><td>"; 
  echo $row['name'];
  echo "</td><td>";   
  echo $row['des'];
  echo "</td><td>";    
  echo $row['status'];
  echo "</TD></tr>";  
}
echo "</table>";

1 Comment

You are printing the headers between all the rows.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.