[php/mysql] HTML in Datenbank eintragen

Stex

Zeta Sagittarii
ID: 54415
L
11 Mai 2006
937
185
Hi,

ich steh gerade mal wieder auf dem Schlauch, vermutlich gibt es eine ganz einfache Lösung für mein Problem:

Ich habe einen wysiwyg-Editor auf einer Seite, dieser übergibt dann HTML-Code, der in eine Datenbank eingetragen werden soll.
Das neuanlegen von Items funktioniert, lediglich das bearbeiten nicht. Sobald ich mit "UPDATE" arbeite, ändert er das Feld in der Datenbank nicht mehr (oder nur manchmal). Ich vermute, das hängt mit dem HTML-Code zusammen.

Formular:
PHP:
     echo "<form method='post' action='acp_templates.php?action=edit&page=".$_GET["page"]."'>";
            
                echo "Titel der Seite: <input type='text' size='30' maxlength='30' name='t_title' id='t_title' value='$row->title'/><br /><br />";
                $template = stripslashes($row->template);
                echo "<textarea name='content' id='content' cols='100' rows='30'>$template</textarea>";
                ?>
            </form>
Update:
PHP:
//Update in Datenbank
    
    if ($_POST["content"] != "") {
        mysql_queryf("UPDATE pages SET template = '%s' WHERE id = '%d'", $_POST["content"], $_GET["page"]);
        mysql_queryf("UPDATE pages set title = '%s' WHERE id = '%d'", $_POST["t_title"], $_GET["page"]);
        echo "Update erfolgreich.";
        
    }
"page" wird korrekt übergeben, "t_title" ändert er immer völlig richtig.


Die Feldbezeichnungen sind auch richtig, habe ich mehrfach überprüft.

Wenn keine Anführungszeichen im HTML vorkommen (also z.B. nur <p></p>) funktioniert alles, aber sobald welche drin sind, geht's nicht mehr. addslashes bringt auch nichts, da er nicht alle " zu \" macht...

Wo liegt der Fehler?

Danke schonmal im Voraus!
 
Probier statt addslashes() mal mysql_real_escape_string(). Übrigens kannst Du die beiden Updates auch zu einem zusammenfassen:
Code:
UPDATE table
SET column='value', another_column=2
Und lass Dir nach dem Query, das Fehler wirft, mal einfach mysql_error() ausgeben, das dürfte auch recht hilfreich sein.
 
ARGH!

Ok, das Problem hat sich erledigt, ich hab mich verklickt... man sollte für dieses Feld halt doch nicht Varchar mit 200 Zeichen Länge wählen :-?

Danke für die Hilfe, ich sollte vielleicht doch öfter mal mysql_error() nutzen...
 
Bau's am besten direkt in mysql_queryf() ein, dann kannst Du's nie wieder vergessen... ;)

Ich hab's bei mir immer etwa so:
PHP:
<?php
	// Ganz am Anfang von allem
	define('DEBUG', true);

	// Und dann später wo man's braucht
	if (defined('DEBUG') and DEBUG)
	{
		// Debugkrams
	}