I want to write an php function that will echo sql query results in a specific manner.
Example I have table 1
which is 10.000 rows
* 43 columns
:
NO NAME Prof Date of birth 1 John Teacher 1987 2 Nick Engineer 1976 3 4 5
And so on. Based on No
which is an integer
(1-10.000), I want to generate tables such as:
Name: John Prof: Teacher Date of birth: 1987
Name: Nick Prof: Engineer Date of birth: 1976
So far my code:
`
$hostname = "";
$username = "";
$password = "";
$dbname = "db1";
//connection to the database
$con = mysqli_connect($hostname, $username, $password, $dbname)
or die("Unable to connect to MySQL");
mysqli_set_charset($con, 'utf8');
/*echo "Connected to db1 database <br>";
else
echo "Could not connect"; */
$query1 = "SELECT * FROM `table 1` WHERE CODE_NO = 1";
$query2 = "SHOW COLUMNS FROM table 1";
$result1 = mysqli_query($con, $query1);
$result2 = mysqli_query($con, $query2);
// Check result
// Useful for debugging.
if (!$result1) {
$message = 'Invalid query: ' . mysqli_error($con) . "
";
$message .= 'Whole query: ' . $query1;
die($message);
}
echo "<table>"; // table tag in the HTML
while($row = mysqli_fetch_array($result1))
//Creates a loop to loop through results
{
echo
"<tr>
<th>CODE_NO:</th>
<td>" . $row['CODE_NO'] . "</td>
</tr>
<tr>
<th>FIRST_NAME:</th>
<td>" . $row['FIRST_NAME'] . "</td>
</tr>
<tr>
<th>SURNAME:</th>
<td>" . $row['SURNAME'] . "</td>
</tr>
<tr>
<th>Date of birth:</th>
<td>" . $row['DOB'] . "</td>
</tr>
<tr>
<th>Date of death:</th>
<td> " . $row['DOD'] . "</td>
</tr>";
}
echo "</table>"; //Close the table in HTML
?>`
Is it possbile to code the process once, without hard-coding anything, so it could be repeated as many times as needed?
Edit:
$x = 1; $query = "SELECT * FROM
personsWHERE CODE_NO = '$x'"; $result = mysqli_query($con, $query);
If I understood you correctly, this would do what you need:
function generateTableFromResult($result) {
$html = "<table>";
while($row = mysqli_fetch_array($result)) {
foreach($row as $column => $value) {
$html.="<tr><th>".$column."</th><td>".$value."</td></tr>";
}
}
$html.="</table>";
return $html;
}
// usage:
// ...
$result1 = mysqli_query($con, $query1);
echo generateTableFromResult($result1);
You can have the excepted result. You will need to have a variable to be incremented with the values and returned at the end.
See my example:
// Check result
// Useful for debugging.
if (!$result1) {
$message = 'Invalid query: ' . mysqli_error($con) . "
";
$message .= 'Whole query: ' . $query1;
die($message);
}
$table = "<table>"; // table tag in the HTML
while($row = mysqli_fetch_array($result1)){
//Creates a loop to loop through results
$table .="<tr>";
$table .=" <th>CODE_NO:</th>";
$table .=" <td>" . $row['CODE_NO'] . "</td>";
$table .="</tr>";
$table .="<tr>";
$table .=" <th>FIRST_NAME:</th>";
$table .=" <td>" . $row['FIRST_NAME'] . "</td>";
$table .="</tr>";
$table .="<tr>";
$table .=" <th>SURNAME:</th>";
$table .=" <td>" . $row['SURNAME'] . "</td>";
$table .="</tr>";
$table .="<tr>";
$table .=" <th>Date of birth:</th>";
$table .=" <td>" . $row['DOB'] . "</td>";
$table .="</tr>";
$table .="<tr>";
$table .=" <th>Date of death:</th>";
$table .=" <td> " . $row['DOD'] . "</td>";
$table .="</tr>";
}
$table .= "</table>"; //Close the table in HTML
echo $table;
?>`
This is a possible approach to get the result that you want. However you sent an array in the json format with the values and in the front end build the table using js.