dedlfix: Anfängerfehler ausbaden - Datensätze wieder in Rohformat

Beitrag lesen

echo $begrüßung;

$spalte1=html_entity_decode($row->spalte1,ENT_QUOTES,ISO8859-1);
Leider beanstandete er dann aus mir unbekannten Gründen meinen angegebenen Zeichensatz bei html_entity_decode()

ENT_QUOTES ist eine vordefinierte Konstante, ISO8859-1 ist das nicht. Stattdessen wird versucht eine Konstante namens ISO8859 zu finden. PHP findet nichts und denkt sich: "Der wollte sicherlich nur einen String notieren und hat die Anführungszeichen vergessen. Denk ich mir das mal als String." Das anschließende -1 (minus eins) wird versucht mit dem String zu verrechnen. Der String fängt nicht mit einer Zahl an, also kommt bei der Typumwandlung 0 raus. 0-1 ergibt -1, und das ist kein gültiger Wert aus der Liste der "Supported charsets". Diese Meldung wirst du gesehen haben. Den Teil aus dem Anfang meiner Erklärung sieht man, wenn man das error_reporting auf E_ALL stellt und damit wichtige Hinweismeldungen nicht mehr unterdrückt werden.

Wenn du von Fehlermeldungen spricht ist es meist hilfreich, den genauen Wortlaut nicht für dich zu behalten. Sonst behalten wir unsere Kommentare dazu auch für uns :-)

Hab ich den Parameter also Testweise weggelassen.

iso-8859-1 ist sowieso der Standard-Wert und kann damit entfallen.

einige Zeichen wurden entfernt, andere blieben aber als html-code stehen, verstehe das wer will.

Beispiele bitte.

$aendern="UPDATE tabelle1 SET spalte1='".mysql_real_escape_string($spalte1)."' WHERE spalte1='".mysql_escape_string($spalte1_alt)."';

Achte darauf, bei mysql_real_escape_string das real_ zu verwenden. Die Variante ohne real_ sollte nicht verwendet werden.

Erschwerend kommt hinzu, dass ich noch einen schwerwiegenden fehler auszubaden habe - nl2br();
in der Datenabank stehen alle Datensätze schon mit <br />

Genauer gesagt wurde durch das nl2br() vor einen Zeilenumbruch ein <br /> eingefügt. Der Zeilenumbruch selbst blieb erhalten, falls er nicht auf dem Wege in die Datenbank verloren ging. Einfacherweise wäre also das <br /> durch nichts zu ersetzen. Nimmt man an, dass der Zeilenumbruch verloren ging, könnte man zuerst alle <br />\n durch \n ersetzen und anschließend die übrig gebliebenen <br /> ohne \n durch \n ersetzen.

Sorry, dass ich nerve, aber ich möchte diesen Fehler so schnell, wie möglich beseitigen, dass sich die Fehlerhaften Datensätze nicht vermehren...

Solche Aussagen haben auf die Beantwortung deiner Fragen höchstens negative Auswirkungen. "Wir" sind im Allgemeinen ziemlich fix beim Beantworten, aber dieses Forum ist keine Express-Hotline. In welcher Zeit du dein Problem gelöst bekommst, ist "uns" egal. Du kannst aber davon ausgehen, dass wir dir ansonsten nach besten Kräften helfen.

echo "$verabschiedung $name";