Door
Paul Weiss
op 21-02-2024 19:34
gewijzigd op 21-02-2024 19:42
4.119 views
Ik heb een vraag. ik wil in php een innerhtml functie (of soortgelijk) toepassen om alles binnen een specifiek div element vervolgens op te slaan in een variable.
onderstaande heb ik als voorbeeld het html bronbestand. Van dit bestand wil ik dus de innerhtml verkrijgen van het div element met id "test2". het resultaat zou dus moeten zijn:
<h1>mijn hoofdtekst van id test2</h1>
Echter ik krijg als resultaat zonder de ht tag. (zie ook mijn php)
Hieronder de inhoud van dokument.html
<div id="test1">
<h1>mijn hoofdtekst van id test1</h1>
</div>
<div id="test2">
<h1>mijn hoofdtekst van id test2</h1>
</div>
<div id="test3">
<h1>mijn hoofdtekst van id test3</h1>
</div>
<div class="test2">
<h1>mijn hoofdtekst van class test2</h1>
</div>
Hoi arien. ik had dit al gevonden inderdaad, maar in jouw voorbeeld is de html code al toegewezen aan variable $html. De vraag is nu hoe krijg ik het voor elkaar dat de gehele pagina aan de variable wordt toegewezen. als ik dat namelijk voor elkaar heb dan kan ik het stukje eruit halen wat ik nodig heb.
[size=xsmall]Toevoeging op 25/04/2024 15:53:08:[/size]
ik zou dan $dom->loadHTML($html); moeten aanpassen en $html. vervangen voor?
In het begin haal je met file_get_contents() je pagina op.
Je doet hier een aanpassing aan, en vervolgens stuur je alles via een POST weer terug naar het html-document.
he arien. maar ik heb de pagina waarom het gaat al geopend. hier maar ik vervolgens aanpassingen in, althans in een specifiek gedeelte. Hoe kan ik dan via een form de geopende pagina doorsturen naar php?
stel ik heb onderstaande pagina geopend met de naam pagina.php. Ik kan dan vervolgens alles aanpassen binnen het element "content: nu wil ik dus alles in div elemeent met id "content". opslaan? geen idee hoe je dat voor ogen heb? met javascript is dat eenvoudig. hoe ziet de form er dan uit die ik op de pagina plaats?
pagina1.php ziet er dus zo uit:
<html>
<body>
<div id="content">
<h1> deze tekst kan worden aangepast via o.a. contenteditable. styling kan ook worden aangepast via javascrit</h1>
<p>deze tekst idem dito</p>
<p> en nog meer content kan volgens</p>
</div>
</body>
</html>
[size=xsmall]Toevoeging op 25/04/2024 16:15:08:[/size]
sorry. ik kom er niet aan uit. Maar wellicht hebben wij beide iets anders voor ogen.
Als het een formulierobject is waar de pagina in bewerkt wordt, dan is het een $_POST. En anders moet je het via AJAX aan PHP overdragen. Met javascript kan dat als volgt:
// Haal het div-element op
var DivElement = document.getElementById('content');
// Haal de inhoud van het div-element op
var inhoudVanDiv = DivElement.innerHTML;
Als vervolg op de vorige PHP-code kan je met deze methode ervoor zorgen dat je de bijgewerkte code hebt.
<?php
/* Hier de rest van je script... */
echo $dom->saveHTML();
?>
he arien. ja de javascript oplossing met ajax heb ik al. dat werkt. maar was eigenlijk op zoek naar een wat meer directe manier zonder ajax eigenlijk. ik weet nu toch even niet hoe de gehele php code eruit moet komen te zien om de aangepaste pagina vervolgens te te wijzen? ik heb nu dit maar er ontbreekt natuurlijk nog het 1 en ander. wordt met deze code de gehele html op de pagina opgeslagen in $inhoud? zo ja dan zou ik vanaf daar natuurlijk het stukje eruit kunnen pikken dat is aangepast.
Wat is er volgens jou mis met AJAX? Ik denk dat het toch echt de enige manier is om elementen uit je je aangepaste content naar PHP te kunnen sturen. Of je moet met een formulier werken.
he arien. ajax is ook wel prima. maar zoals ik al zei zoek ik nog een manier puur via php. hoe zou dat form er dan uit moeten zien. wat moet ik precies doorsturen? ik weet niet helemaal hoe je dat precies ziet? ben wel benieuwd natuurlijk.
[size=xsmall]Toevoeging op 25/04/2024 17:21:47:[/size]
je bedoeld de content binnenin een formulier plaatsen natuurlijk. begrijp het al. nee dat is ook niet helemaal wat ik zoek. want in de content gebruik ik ook contactformulieren. dan heb je een form in een form. dat is om problemen vragen natuurlijk.
[size=xsmall]Toevoeging op 25/04/2024 17:23:45:[/size]
maar is er binnen php dan geen manier om de gehele geopende pagina opnieuw op te slaan? is dit iets?
[code]
<?php
// Start the buffering //
ob_start();
?>
Your page content bla bla bla bla ...
<?php
echo '1';
// Get the content that is in the buffer and put it in your file //
file_put_contents('yourpage.html', ob_get_contents());
?>
Je kan met enkel PHP niet aan de cliënt-zijde dingen opvragen omdat het een server-programmeertaal is
Je zult echt moeten samenwerken met JavaScript, en AJAX is dan de beste oplossing omdat het a-synchroon werkt. Als je een formulier hebt, dan kan je met $_POST de ingevoerde inhoud opvragen en verwerken. Dit is basiskennis PHP, en behoeft geen volledige uitleg in deze post.
Outputbuffering kan prima, maar zoals ik al zei: PHP is niet cliëntside. Dingen die je met contenteditable wijzigt, worden dan niet meegenomen.
Ikzelf ben benieuwd waarom je geen databases wilt gebruiken? Je kan hier je content gestructureerd in opslaan, en eventueel met een template-parser zoals Twig of Smarty heb je een hoop basisfuncties en gereedschap om je view-laag los te trekken van je PHP-code. En je hebt zelfs nog handige cache-functies ;-)
hoi arien. database is voor op dit moment teveel werk. is een zeer uitgebreid csm waar ik aan werk. Als ik daar een database aan gaan koppelen is veel extra werk. bovendien worden er enorm veel zaken aangepast.
zoals o.a. inline styling toevoegen classes, en dan de tekstinhoud via contenteditable.
alle html elementen zijn totaal verschillende van elkaar. weet nooit welke inhoud er wordt ingeladen.
zo heb ik fotgallerijen, videocontent etc etc.. alles wordt onder elkaar in de pagina geplaatst.
Ik zou ook niet weten hoe ik op deze wijze content in de database moet opslaan ook.
[size=xsmall]Toevoeging op 25/04/2024 17:38:56:[/size]
ik zou dan elke stukje aan php moeten koppelen ook.