Log in

View Full Version : Need PHP Help - Losing My Mind


MadMax
2005-07-08, 08:28 PM
So I'm trying to get a little script running, and I'm beating my head against a wall. I should mention at this point that I'm a PHP newbie.

PHP 4.3
MySQL 4.0.13

This is a page of the script on which you can edit a string of HTML stored in a MySQL database, then when you hit "update" the DB field is updated and the page refreshes to display the new info.

The problem is, it's not displaying the info in the DB accurately, and the problem cascades when you repeatedly hit "update."

For a piece of test code I'm using one of my category recip tables. The code is stored in the DB accurately, but when it displays on the page it's missing the first line of code and there's an extra "> at the end that isn't in the database. When you hit "update" and the page refreshes, THAT's when the first line of code and ending "> appear in the DB, and then I lose one more line of code at the top and get one more "> at the end of the code.

When I "view source" on the page when first going to it (when the code is fresh from the DB) the first line of code is actually in the page source but not displayed on the page, and the extra "> is also in the source.

I'm sure this is something stupid that should be staring me in the face. Please help, losing my fuckin' mind here. Code is below.
<?php

//Edit HTML Code
//For Admin Control Panel


// HANDLE POST METHOD

if (isset($_POST['submit'])) {

// Include File With Connection To Database
include ("inc/connect.inc");

// Insert New Code Info Into Database

$new_code = $_POST['new_code'];

$new_code = addslashes($new_code);

$query = "UPDATE site SET template='$new_code' WHERE siteid=1";

mysql_query($query);

// Disconnect from Database
include ("inc/disconnect.inc");

echo "HTML Template Successfully Edited<BR><BR><BR>";
}

?>

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<title>Edit Reciprocal Link Template - Recip Philes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<?php

// POPULATE FORM WITH DB INFO

// connect to mysql and select database

include ("inc/connect.inc");

// pull info from database and assign variable to query

$pullinfo = "SELECT template FROM site WHERE siteid=1";

$result = mysql_query($pullinfo);


?>


<form action="edit-recip-template.php" method="POST" >
<p>EDIT HTML Template In Database</p>
<p>&nbsp; </p>
<table width="676" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="533"> </td>
</tr>
<tr>
<td width="533">
<textarea name="new_code" rows=30 cols=70
value="<?php while ($info_to_edit = mysql_fetch_object($result)) {
$oldcode = $info_to_edit->recip_template;

echo $oldcode;
}

?>">
</textarea>
</td>
</tr>
<tr>
<td width="533">
<input type="submit" name="submit" value="Update Code">
</td>
</tr>
</table>

</form>

<?php
// Disconnect from Database
include ("inc/disconnect.inc");
?>

</body>
</html>

Toby
2005-07-08, 08:40 PM
Do a 'view source' from your browser and check the syntax of your form. I have a suspicion that quotes or something else within the database content is messing up the textarea value.

MadMax
2005-07-08, 08:43 PM
ARRRGH! Fuckin' Newbie Mistake

THANKS TOBY |bow|

I was using the code pulled from the DB as value="code" instead of just putting it in the text area.

Sometimes you just gotta take a step back...

Chop Smith
2005-07-08, 08:44 PM
Madmax, post a sample of html code that you are storing in your db table

MadMax
2005-07-08, 09:21 PM
<table width="184" border="1" bordercolor="#b02b37" bgcolor="#b02b37" height="67">
<tr>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF">
<div align="center"><b><font face="Georgia, Times New Roman, Times, serif"><a href="http://www.fetishphiles.com/links/amateur/index.html"><font color="b02b37" size="-1">Amateur
Porn Links</font></a></font></b></div>
</td>
</tr>
<tr>
<td bgcolor="b02b37" bordercolor="b02b37">
<div align="center"><b><font face="Georgia, Times New Roman, Times, serif"><a href="http://www.fetishphiles.com"><font color="#E1E1E1" size="+1">Fetish
Philes</font></a></font></b></div>
</td>
</tr>
<tr>
<td bordercolor="#FFFFFF" height="6" bgcolor="#FFFFFF">
<div align="center"><b><font face="Georgia, Times New Roman, Times, serif"><a href="http://www.fetishphiles.com/free-porn.html"><font color="b02b37" size="-1">Free
Porn Links</font></a></font></b></div>
</td>
</tr>
</table>

Chop Smith
2005-07-08, 10:15 PM
So you found it?

cd34
2005-07-08, 10:57 PM
another thing to look out for here is the status of either magic_quotes_gpc or magic_quotes_runtime when you are using addslashes.

if _gpc is on, and the variable is posted, it will already have slashes, and if someone knows those settings they could do malicious things.

So, those settings could also add some unexpected behavior when putting ', " and other characters in form fields.

MadMax
2005-07-08, 11:29 PM
I found the first error, so that's set. Thanks for the help so far guys |thumb

Next problem :D

I'd like to select a form field containing the same HTML from eariler, insert that HTML (which uses <?php ?> tags to parse variables) from the MySQL field, then display them on a page and get PHP to actually parse the PHP tags. No luck so far. Everything parses exactly the way I want it to when I take the same data that's in the DB and use it as an included file, but when I echo the HTML from the DB after getting it with a MySQL query the PHP tags and contents are left as regular HTML (PHP doesn't parse the PHP tags).

If I'm being a pain in the ass just let me know :D

Making every effort to find these answers on my own....

cd34
2005-07-09, 12:02 AM
not sure I understand completely, but, eval() will evaluate php code, or, you could use obstart() and grab the output from a function if you have written it that way.

b1ng0
2005-07-09, 02:16 AM
I think he's wanting to parse and execute php code that is stored within the database, and already being included within a php page.

I have a script that I need to do the same thing so if anyone knows how it's done, we'd love to know ;). Unfortunately I don't think its possible MadMax :(.

Toby
2005-07-09, 02:25 AM
I think he's wanting to parse and execute php code that is stored within the database, and already being included within a php page...
That would require the server to parse the page twice, which it won't do. Another way to make it work would be to use a script to generate and save a php page on the server, then redirect to that page when done.

b1ng0
2005-07-09, 02:29 AM
That's what I was thinking but depending on how complex the code is he needs to run, eval() might work for him... something like

$recip = eval($recip);

Keep variable scope in mind...

MadMax
2005-07-11, 12:58 AM
OK, so I got the php in the first file I was working on to parse by turning it into an included .php file instead of info in a database. One problem solved, and another emerges :)

Now I've got what I want displaying, but the html displayed on the page doesn't have the font attributes applied, i.e. everything shows up as default link colors, font faces, etc. When I view source on the page and copy/paste the exact same html being displayed there onto a new page and view it, it shows up fine. Anyone got any ideas? I've never had problems getting html to "parse" before....