HTML uit database halen
Ik heb een CMS gemaakt (dit keer mét database), maar er gaat iets niet helemaal goed.
Je kunt tekst bewerken met de TinyMCE editor. De aangepaste tekst wordt (als html dus) toegevoegd aan de database. Ik laat de html op de site zelf omzetten naar "normale" tekst met de functie html_entity_decode. Het probleem is echter dat sommige dingen/tekens (bijv. en é) vervangen worden door het volgende tekentje: http://img390.imageshack.us/my.php?image=iconum6.png
Hoe is dat op te lossen??
Joep
Gewijzigd op 01/01/1970 01:00:00 door Joep Bogaers
Mag ik je vragen waarom je HTML codes in de database zet? In een database horen absoluut geen codes. Ik stel voor dat je de html er uit haalt voor het ge-insert wordt in de database.
Maar hoe moet ik het dán doen? TinyMCE zet alles juist om in HTML en dan zou ik dat weer gaan "verprutsen" door de html weg te halen en op de site zelf weer toe te voegen...
Menno schreef op 07.01.2009 13:24:
Mag ik je vragen waarom je HTML codes in de database zet? In een database horen absoluut geen codes. Ik stel voor dat je de html er uit haalt voor het ge-insert wordt in de database.
Wat heb jij gegeten?
Uuh... Jij runt de website door een editor die overal HTML van maakt ofzo? Kun je me daar wat van laten zien wat je uiteindelijk in de database invoerd?
Ik wist niet dat ik de database-inhoud gewoon kon echo'en:P
joep schreef op 07.01.2009 13:45:
Die html_entity_decode() heb je inderdaad als het goed is niet nodig. Als je de HTML wilt laten uitvoeren, kun je die inderdaad gewoon echoën. Enkel als je de HTML op het scherm wilt tonen, zul je html_entities() moeten gebruiken om te zorgen dat de HTML niet uitgevoerd wordt.Laat het maar zitten...
Ik wist niet dat ik de database-inhoud gewoon kon echo'en:P
Ik wist niet dat ik de database-inhoud gewoon kon echo'en:P
Maar goed, het moge duidelijk zijn dat je deze functie alleen gebruikt nadat je de gegevens uit de database hebt opgehaald. Voordat je gegevens naar de database schrijft is mysql_real_escape_string() de enige functie die je nodig hebt ;-)
ps. @Menno: tja, dat is nu eenmaal het gevolg van het gebruik van een editor als TinyMCE...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Blanche schreef op 07.01.2009 13:49:
Maar goed, het moge duidelijk zijn dat je deze functie alleen gebruikt nadat je de gegevens uit de database hebt opgehaald. Voordat je gegevens naar de database schrijft is mysql_real_escape_string() de enige functie die je nodig hebt ;-)
Dat is inderdaad wel duidelijk hoor:P
Vreselijk lijkt me dat. Ik gebruik phpDesigner voor de mooie kleurtjes maar doe toch echt alles met de hand.
Blanche schreef op 07.01.2009 13:56:
Menno, TinyMCE is een editor (javascript oplossing) die je op je website plaatst zodat gebruikers hun invoer zelf kunnen opmaken. Het heeft dus verder niets te maken met de gebruikte software PHP editor ;-)
ps. Zie ook de website van tinymce
ps. Zie ook de website van tinymce
Inderdaad, mijn ervaring is dat mensen, zonder enige kennis van websites, het liefst met zo'n soort editor werken als ze gebruik maken van een CMS. Een textarea doet het over het algemeen veel minder goed.
Bij <p>blabla</p><p>blabla2</p> is het toch de bedoeling dat er een witregel tussen blabla en blabla2 zit?
Als ik de HTML uit mijn database echo, gebeurt dit namelijk niet. De tweede alinea staat dan wel op een nieuwe regel, maar er zit op de een of andere manier geen witregel tussen...
Weet iemand waar dit aan ligt?
Niet Bumpen::
EDIT
Sorry!! Ik had het niet door..
Gewijzigd op 01/01/1970 01:00:00 door Joep Bogaers
joep schreef op 07.01.2009 14:25:
Dat heeft weinig met de HTML te maken maar des te meer met de opmaak (CSS) ervan. Het is een kwestie van instellen van de margins en paddings van de <p> tag.Weet iemand waar dit aan ligt?
Nou, zonder iets in te stellen in de CSS zit er altijd gewoon een witregel tussen hoor...
Ja, dat klopt. Maar ik bedoel meer te zeggen dat de oorzaak van dit 'probleem' waarschijnlijk in de opmaak van je document ligt. Bekijk de broncode eens van de pagina waar het niet goed gaat en controleer eens of die klopt.
Het klopt wel gewoon, er staat namelijk nergens het attribuut p genoemd in mijn css bestand. Ik heb dat nu wel toegevoegd en de padding veranderd, maar het blijft raar...
Waarschijnlijk heb je een * {padding: 0px; margin: 0px;}
Gebruik firebug. De ideale tool om dit soort probleempjes op te lossen
Dat teken komt gewoon omdat er een verschil zit tussen de charset van de webpagina en de charset van de database?
Arjan Kapteijn schreef op 07.01.2009 15:28:
Waarschijnlijk heb je een * {padding: 0px; margin: 0px;}
Klopt helemaal! Bedankt!