Jump to content

Archived

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

nyc_fan

PHP within PHP?

Recommended Posts

Hi,

I really hope one of you nice people will be able to help as i've searched and searched for the answer to this question, but i just can't figure it out!

I have a mysql database which contains the main content of pages for my website.

So, when i need to select a page, the script finds the right row in the table and outputs it to display for the user. To display the text that is retrieved from the database, i use this normal bit of code -

<?php echo($dbarray['page']);  ?>

This all works fine, and if i include HTML within the 'page' field of the database, this is output to the page, so i can make things bold etc.

However, i want to be able to use a PHP script within the data that is retrieved from the database. For example, as part of the page text, i want to be able to use the users name, which is set in the main document. However, when i use this code -

<?php echo($username);  ?>

as part of the page text that is saved in the database, nothing hapens - there's just white space on the page!

People have suggested i use this code instead -

<' . "? echo($username) ?" . '>';

however all this does is output the whole PHP code to the screen, and the code isn't actually processed?

I hope this all makes sense, and if anyone has the answer as to how i can get this to work, it would be greatly appreciated.

Thanks in advance guys!

Share this post


Link to post
Share on other sites
When you echo something it is sent straight to the browser, code will not be excuted unless you [url=http://php.net/eval]eval[/url] it.
You could do this: have placeholders in the database pages like {user}, and then replace them with the real variable values like so:
[code]
$page  = str_replace('{user}',$username,$dbarray['page']);
echo ($page);
[/code]

Share this post


Link to post
Share on other sites
ShogunWarrior, to be honest, this wasn't the response i was looking for - simply because it has caused me more work! and i just wanted to do what i guess is impossible!

However, your response has worked a treat and i've now got my page looking as it should.

Thanks very much!

Share this post


Link to post
Share on other sites
Are you looking for something like [url=http://www.phpfreaks.com/forums/index.php/topic,99295.msg390984.html#msg390984]this[/url]?

Share this post


Link to post
Share on other sites
The code you posted would only work if it was inline in a page, the best thing to do is use placeholders otherwise you'll have to find each piece of PHP in the page and eval them one by one, reinserting the result.

Share this post


Link to post
Share on other sites
there you go a nice example php within html.



<?

$name="redarrow";
$age="31";
$comment="i love php";

?>

<html>
<head>
<body>

<table border="4">
<td>
<? echo $name; ?>
</td>
<td>
<? echo $age; ?>
</td>
<td>
<? echo $comment; ?>
</td>
</form
</td>
</html>
</body>
</head>

Share this post


Link to post
Share on other sites
Unless I'm mixing stuff up he's getting the page from a database, how does it magically get inline in the page?

Placeholders.

Share this post


Link to post
Share on other sites
are you useing a while loop then .

while($record=mysql_fetch_assoc($result) {

}?>


<html>
<body>
<? echo $record['user_name']; ?>
</body>
<html>

<?}?>

Share this post


Link to post
Share on other sites
redarrow, thanks for your reply, but i think ShogunWarrior is right as i am pulling the code from a database where it is stored as text, assigning it to an array and then trying to execute it.

I don't think this is possible, but i have used the first reply from ShogunWarrior and have worked some magic and now i can do exactly what i want to do - and it seems even easier than i imaged (although there is a bit of work involved to start with!)

Share this post


Link to post
Share on other sites

×

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.