R
Ron Kr.
17-02-2026 17:55
gewijzigd op 17-02-2026 17:56
Ja, je kan de gehele html van de tabel versturen. Het is netter om dit als json naar de php te sturen.
<form id="form1" method="post" action="verwerk.php">
<table id="tabel">
<tbody>
<tr><td>Fruit A</td><td>Kers</td></tr>
<tr><td>Fruit B</td><td>Kiwi</td></tr>
<tr><td>Fruit C</td><td>Peer</td></tr>
</tbody>
</table>
<button type="submit">Verstuur</button>
</form>
<div id="resultaat"></div>
<script>
const form1 = document.getElementById("form1");
form1.addEventListener("submit", function (event) {
event.preventDefault();
const tabelHTML = document.getElementById("tabel").outerHTML;
fetch("verwerk.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ tabel: tabelHTML })
})
.then(function(response) { return response.json(); })
.then(function(data) {
document.getElementById("resultaat").innerHTML = data;
})
.catch(function(error) { console.error(error); });
});
</script>
De html van de tabel krijg je in $html
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$data = json_decode(file_get_contents("php://input"), true);
$html = $data['tabel'];
header('Content-Type: application/json');
echo json_encode("HTML van tabel is ontvangen");
}
Ik hoor wel of dit is wat je zoekt.
[size=xsmall]
Toevoeging op 17/02/2026 18:16:15: [/size]
Op verzoek van Charles Frey. Deze snippet heb ik van ChatGPT.
Zo kan je in php de inhoud van elke <td> uitlezen.
function leesTabel ($html) {
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
$rows = $dom->getElementsByTagName('tr');
$array = [];
foreach ($rows as $row) {
$cols = $row->getElementsByTagName('td');
if ($cols->length >= 2) {
$array[] = [
'fruit' => $cols->item(0)->nodeValue,
'soort' => $cols->item(1)->nodeValue
];
}
}
return $array;
}
Onder regel
$html = $data['tabel'];
komt deze regel waar $inhoudTabel een array is
$inhoudTabel = leesTabel($html);
Link gekopieerd
?
Onbekende gebruiker
18-02-2026 15:25
ik ga het is uit proberen
[size=xsmall]
Toevoeging op 19/02/2026 03:50:03: [/size]
<?php
$data = $_POST['dfg'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$data = json_decode(file_get_contents("php://input"), true);
$html = $data['tabel'];
header('Content-Type: application/json');
echo json_encode("HTML van tabel is ontvangen");
echo $html;
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
$rows = $dom->getElementsByTagName('tr');
foreach ($rows as $row)
{
$counter++;
echo "aantal " . $counter;
}
}
?>
<form method="post">
<table name=dfg>
<tr>
<td>df
</td>
</tr>
</table>
<input type="text" name="email">
<input type="submit" value="Submit">
</form>
ik heb nu dit maar het werkt niet
Link gekopieerd
R
Ron Kr.
20-02-2026 13:48
gewijzigd op 20-02-2026 13:49
Ron Kr. op 16/02/2026 18:42:31
Javascript is nodig.
Je hebt van alles bij elkaar gezet.
Waar is je Javascript?
Waarvoor wil je het gebruiken?
Link gekopieerd
- Ariën -
20-02-2026 13:50
gewijzigd op 20-02-2026 13:51
Kan je in het vervolg ook iets meer vertellen dan een 'werkt niet'? Infeite werkt het wel, maar niet op de manier zoals je verwacht.
We zijn liever benieuwd wat er precies gebeurt. Krijg je foutmeldingen? Wat zie je? Wat gebeurt er wel, dan wat je anders had verwacht?
Kortom: wees zo uitgebreid mogelijk.
Link gekopieerd
Dat <table>...</table> binnen <form method="post">...</form> staat, betekent niet dat de hele tabel wordt gepost: alleen de input in <input>-elementen wordt verzonden. (En dan als een array inderdaad, maar die zal leeg zijn wanneer er niets in de inputs is ingevuld.)
Link gekopieerd
R
Ron Kr.
20-02-2026 17:47
gewijzigd op 20-02-2026 18:12
Ik zie dat je alleen het aantal rijen wil tellen.
Bestand "index.php"
<?php
// Functie haalt html van complete pagina op
function paginaHtml ($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // pagina als string
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // volg redirects
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // check NIET het ssl cert
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // check NIET hostname in ssl cert
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
// wijzigen! De url van jouw pagina
$paginaUrl = "https://localhost/test/index.php";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$inhoud = paginaHtml($paginaUrl);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($inhoud);
libxml_clear_errors();
$rows = $dom->getElementsByTagName('tr');
echo "Aantal rijen: " . $rows->length;
}
?>
<form method="post" action="index.php">
<table name="dfg">
<tr><td>ab</td></tr>
<tr><td>cd</td></tr>
<tr><td>ef</td></tr>
</table>
<input type="text" name="email">
<input type="submit" value="Submit">
</form>
Link gekopieerd
Maar als je alleen de rijen wilt tellen, is het mogelijk efficiënter om in javascript die rijen te tellen en alleen het getalletje "3" of "42" te POSTen.
ik ben niet zo goed in plain javascript, maar in jQuery zou het iets zijn als
var trs = $('#dfg').find('tr');
var aantalTrs = trs.length;
// in een form-element stoppen
$('input#aantaltrs').val(aantalTrs);
Waarbij ik dan <table id="dfg"> en <input name="aantaltrs" id="aantaltrs" value=""> heb bedacht.
Link gekopieerd