innerhtml in php mogelijk?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Paul Weiss

Paul Weiss

21/02/2024 19:34:08
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<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>


Hieronder het php bestand tot nu toe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$dochtml = new DOMDocument();
//libxml_use_internal_errors(true);
$dochtml->loadHTMLFile("dokument.html");
$div = $dochtml->getElementById('test2')->nodeValue;
echo $div;
$div = innerHTML($dochtml->getElementById('test2'));
echo $div;
Gewijzigd op 21/02/2024 19:42:57 door Paul Weiss
 
PHP hulp

PHP hulp

28/04/2024 03:23:35
 
- Ariën  -
Beheerder

- Ariën -

21/02/2024 21:14:28
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
// Het gewenste element selecteren op basis van de ID
$element = $dom->getElementById('test2');

// De volledige h1-tag (inclusief inhoud) verkrijgen
$kop = $dom->saveHTML($element->getElementsByTagName('h1')->item(0));
Gewijzigd op 21/02/2024 21:14:41 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

25/02/2024 09:33:05
Quote Anchor link
Spambericht verwijderd.
 
Paul Weiss

Paul Weiss

25/02/2024 14:25:58
Quote Anchor link
hoi arien.

Super dank voor je bijdrage.
 
Paul Weiss

Paul Weiss

25/04/2024 09:46:20
Quote Anchor link
Om even terug te komen op bovenstaande topic. In bovenstaande topic wordt de inhoud van element met id "test2" ingelezen vanaf het externe dokument dokument.html.

Ik wil echter graag wanneer ik dokument.html heb geopend de inhoud aanpassen bijv. via contenteditable etc. vervolgens moet ik de nieuwe inhoud zien te verkrijgen verkrijgen. Wat moet ik aan bovenstaande code precies aanpassen? Ik heb al gezocht, maar kom er niet echt aan uit. alles wat ik kan vinden is voornamelijk gebasseerd op een extern bestand.
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 12:38:12
Quote Anchor link
Met file_get_contents kan je de inhoud van een bestand uitlezen.
En met file_put_contents kan je deze weer schrijven naar het bestand, waarbij de bestaande inhoud overschreven wordt.

Persoonlijk zou ik in plaats van contenteditable een editor gebruiken, zoals CKeditor, TinyMCE of iets anders.
Gewijzigd op 25/04/2024 12:39:41 door - Ariën -
 
Paul Weiss

Paul Weiss

25/04/2024 12:50:43
Quote Anchor link
he arien. bedankt voor je bijdrage. maar met file_get_contents wordt de inhoud van een bestandsnaam toch ingelezen? althans zoals ik het lees. wellicht zie ik iets over het hoofd. Maar het is dus de bedoeling dat wanneer ik een bestand heb geopend ik de inhoud (deze kan dus veranderen t.o.v het origineel) van een element met een id moet worden opgeslagen in een variable.


dus als voorbeeld zou ik de gehele inhoud van het element met id "test" willen opslaan in een variable.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div id="test>
<p>deze inhoud moet worden opgeslagen</p>
</div>


p.s. wat betreft de editor, begrijp waar je heen wilt, maar ik ben dus bezig met een geheel eigen systeem.
contenteditable wordft overigens regelmatig gebruikt bij cms.
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 13:01:46
Quote Anchor link
Is het technisch niet praktischer om alles in een keer weg te schrijven? Zonder database wordt het wel erg lastig, vrees ik, om delen van je HTML-document op te slaan

Uiteindelijk wil je content gestructureerd opslaan.
Gewijzigd op 25/04/2024 13:04:32 door - Ariën -
 
Paul Weiss

Paul Weiss

25/04/2024 13:16:38
Quote Anchor link
he arien. valt wel mee hoor. In de pagina die ik open staan meer dingen. zaken die ik niet hoef op te slaan. zoals laden stylsheet header etc. etc. het gaat echt om een gedeelte en wel waar de content staat die aangepast kan worden. Ik heb daar nu wel een oplossing, maar vind die wat omslachtig. eerst ga ik via javascript de inhoud opslaan in een variable en vervolgens via ajax wordt deze dan doorgestuurd naar een php die deze weer wegschrijft naar een bestand. Maar ik zoek een manier om dit rechtstreeks via php te doen.
Is die er wel?

Ik wil best de gehele pagina opslaan, maar hoe zou dat precies werken?
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 13:32:36
Quote Anchor link
Je kan dan je pagina verdelen in losse templates, zoals header.html, footer.html, menu.html, content_overons.html, content_routeschrijving.html etc....
 
Paul Weiss

Paul Weiss

25/04/2024 13:34:26
Quote Anchor link
ja klopt dat kan inderdaad. dat heb ik ook wel gedeeltelijk al zo gedaan.
Maar is er dan geen manier via php om van de geopende pagina de content van een div element op te vangen? behalve dan dat van een extern bestand?
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 15:40:52
Quote Anchor link
Het is zeker mogelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// HTML-fragment om te gebruiken voor demonstratiedoeleinden
$html = '<div id="content">Dit is de inhoud van mijn div</div>';

// Maak een nieuw DOMDocument-object aan
$dom = new DOMDocument();

// Laad de HTML in het DOMDocument-object
$dom->loadHTML($html);

// Zoek het div-element op basis van het id-attribuut
$divElement = $dom->getElementById('content');
$inhoud = $divElement->nodeValue;

echo "De inhoud van de div is: $inhoud";
?>
 
Paul Weiss

Paul Weiss

25/04/2024 15:51:58
Quote Anchor link
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.


Toevoeging op 25/04/2024 15:53:08:

ik zou dan $dom->loadHTML($html); moeten aanpassen en $html. vervangen voor?
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 16:04:15
Quote Anchor link
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.
 
Paul Weiss

Paul Weiss

25/04/2024 16:13:51
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<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>





Toevoeging op 25/04/2024 16:15:08:

sorry. ik kom er niet aan uit. Maar wellicht hebben wij beide iets anders voor ogen.
Gewijzigd op 25/04/2024 16:15:51 door Paul Weiss
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 16:22:28
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
// 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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
/* Hier de rest van je script... */
echo $dom->saveHTML();
?>
Gewijzigd op 25/04/2024 16:23:02 door - Ariën -
 
Paul Weiss

Paul Weiss

25/04/2024 16:35:47
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$dom = new DOMDocument();
$dom->loadHTML();
$divElement = $dom->getElementById('content');
$inhoud = $divElement->nodeValue;
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 17:08:27
Quote Anchor link
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.
 
Paul Weiss

Paul Weiss

25/04/2024 17:19:29
Quote Anchor link
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.

Toevoeging op 25/04/2024 17:21:47:

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.

Toevoeging op 25/04/2024 17:23:45:

maar is er binnen php dan geen manier om de gehele geopende pagina opnieuw op te slaan? is dit iets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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());
?>



[/code[
 
- Ariën  -
Beheerder

- Ariën -

25/04/2024 17:33:13
Quote Anchor link
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 ;-)
Gewijzigd op 25/04/2024 17:35:50 door - Ariën -
 
Paul Weiss

Paul Weiss

25/04/2024 17:37:44
Quote Anchor link
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.

Toevoeging op 25/04/2024 17:38:56:

ik zou dan elke stukje aan php moeten koppelen ook.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.