Jump to content

Get record name into title


kiwisi

Recommended Posts

So I have this code working fine and it shows almost everything I need.

 

But I want the "bizname" to show in the title tag.

 

I tired echoing the bizname in the title tag but it doesn't do anything.

Everything else I look for is about making separate header pages but maybe I'm not searching for the right term?

<?php 

$dbc = mysqli_connect('localhost','','','')
	or die ('Error connecting to the database');
$RID = $_GET['bizid'];
	$query="SELECT * FROM business WHERE `bizid` = '$RID'";
	$data=mysqli_query($dbc,$query);
	

	
	if($data->num_rows == 0){
	
	echo 'Sorry, there are no matches';
	}
	else
	{

	echo '<table>';
while ($row = mysqli_fetch_array($data)){

echo '<tr border="1">
		<td class="td1"><h1>' .$row['bizname'] . '</h1></td>';
echo '</tr>';

echo '<tr>
		<td class="td3">' .$row['bizhours'] . '</td>';
echo '</tr>';


		echo 	'<tr><td class="td2">' .$row['bizdescription'] .'</td>';

echo '</tr>';

echo '<tr>
		<td class="td2">' .$row['bizaddress'] . '</td>';
echo '</tr>';


echo '<tr>
		<td class="td2">Phone: ' .$row['bizphone'] . '</td>';
echo '</tr>';

echo '<tr>
		<td class="td2">Fax: ' .$row['bizfax'] . '</td>';
echo '</tr>';


echo '<tr>
		<td class="td2">Email: ' .$row['bizemail'] . '</td>';
echo '</tr>';



echo 	'<tr><td></td>';

echo '</tr>';



}
echo '</table>';

}

mysqli_close($dbc);















?>

Link to comment
https://forums.phpfreaks.com/topic/280391-get-record-name-into-title/
Share on other sites

the page title is defined in the html header.  If you want to change it you need to write out the whole page, including the header, when you are displaying the results of the query - so

else{
$row = mysql_fetch_assoc($data);
$html = <<<HTML
<!DOCTYPE html>
<html lang="en">
<head>
<title>
{$row['bizname']}
</title>
</head>
<body>
<table>
<tr border="1">
<td class="td1"><h1>{$row['bizname']}</h1></td>
</tr>
<tr>
<td class="td3">{$row['bizhours']}</td>
</tr>
<tr>
<td class="td2">{$row['bizdescription']}</td>
</tr>
<tr>
<td class="td2">{$row['bizaddress']}</td>
</tr>
<tr>
<td class="td2">Phone : {$row['bizphone']}</td>
</tr>
<tr>
<td class="td2">Fax : {$row['bizfax']}</td>
</tr>
<tr>
<td class="td2>Email : {$row['bizemail']}</td>
</tr>
<tr>
<td></td>
</tr>
</table>
</body>
</html>
HTML;
echo $html;

You can't loop multiple results, as you can only have 1 title per page.

you can't - as far as I am aware - change the header with PHP once it's been set without rendering the entyre page again.  You could maybe get away with calling

header('Title: '.$row['bizname']);
But that's untested and I would say unlikely as well.

 

The way PHP works it that it is processed on the server before any information is displayed in the browser, this meens that all PHP code on a page is run through before a single element is shown on the screen (unless you use something like output buffers), to change things after the page has been "drawn" then you need something client side, like javascript.  You could theoreticly have javascript/jquery change the DOM for the page title - but again, that's not something I have ever played about with.

Cheers muddy

 

So - without sounding like a broken record....(cd to you younger peeps)

 

how then, do such seemingly simple sites get a record name fro mysql (like in my instance, bizname) into the title when parsing from another page? Like, "click here for this cafe", then the cafe name is in the page title..

 

 

I keep thinking I'm missing a trick here somewhere...

you need to rearrange the logic on your page so that the main (business logic) php code is executed first, then you build and output the html document using the data that php produced/retrieved.

 

for the code in post #1 in this thread, that would mean replacing the echo statements with code that concatenates the output into a php variable. you would then simply echo the php variable holding the page title and the php variable holding the main page content at the appropriate points in your html document. all the html document, from the <!DOCTYPE html> tag to the closing </html> tag, would come after the main php code on the page.

 

edit: organizing the logic on your page the way that i have described (i.e. using php as a template engine) also eliminates a common problem like in this thread - http://forums.phpfreaks.com/topic/280490-what-is-wrong-with-the-code/

Archived

This topic is now archived and is closed to further replies.

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