rijen loopen
ik heb onderstaande tabel.
Hoe kan ik nou door de rijen
loopen als ik de tabel post naar een
php pagina?
Hoe kan ik nou door de rijen
loopen als ik de tabel post naar een
php pagina?
Ik snap niet precies wat je probeert te bereiken?
Gaat het om formulier-velden die in jouw tabel staat, die je in een loop uit wilt lezen om vervolgens te POST'en?
Gaat het om formulier-velden die in jouw tabel staat, die je in een loop uit wilt lezen om vervolgens te POST'en?
ik probeer een html tabel te posten en vervilgens uit te lezen
Je zult die HTML-code van die tabel dan op zijn minst in een formulierelement moeten plaatsen.
dat begrijp ik. Ik probeer dectabel mbv de id in php na de post op te vragen maar ik krijg alleen een lege array
Laat je hele relevante code eens zien?
Je kan een tabel wel een name geven maar de tabel wordt niet meegestuurd in een formulier
Toevoeging op 16/02/2026 19:56:52:
Javascript is nodig.
De beste manier is om met ajax en json de tabel te versturen.
Als de tabel niet groot is kan je een <input type="hidden"> voor elke cel geven.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<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>
<script>
const form1 = document.getElementById("form1");
form1.addEventListener("submit", function () {
const table = document.getElementById("tabel");
const rows = table.querySelectorAll("tr");
rows.forEach(function(tr, trIndex) {
let cells = tr.querySelectorAll("td");
cells.forEach(function(td, tdIndex) {
let input = document.createElement("input");
input.type = "hidden";
input.name = "cell[" + trIndex + "][" + tdIndex + "]";
input.value = td.textContent.trim();
form1.appendChild(input);
});
});
});
</script>
In php heb je dan array $_POST['cell']
<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>
<script>
const form1 = document.getElementById("form1");
form1.addEventListener("submit", function () {
const table = document.getElementById("tabel");
const rows = table.querySelectorAll("tr");
rows.forEach(function(tr, trIndex) {
let cells = tr.querySelectorAll("td");
cells.forEach(function(td, tdIndex) {
let input = document.createElement("input");
input.type = "hidden";
input.name = "cell[" + trIndex + "][" + tdIndex + "]";
input.value = td.textContent.trim();
form1.appendChild(input);
});
});
});
</script>
In php heb je dan array $_POST['cell']
Is het ook mogelijk om de hele html string opbte vragen in php
Ik vind het fijn hoe je duidelijk uitlegt dat je door de tabelrijen wilt loopen nadat je het formulier naar PHP hebt verstuurd. Het voorbeeld maakt goed duidelijk wat je probeert te doen. Misschien zou een klein PHP voorbeeld waarin je laat zien hoe je de rijgegevens verwerkt, het nog begrijpelijker maken.
Een html-formulier stuurt niet alle html-elementen daarbinnen op naar de server.
Alleen input-elementen, zoals
<input>, <textarea>, <select>
Of je moet een leuk stuk javascript erop loslaten om dat te emuleren.
Je kunt zo'n table wel in een <textarea> plaatsen, maar dan zie je op de pagina dus niet de layout. Of je maakt je <textarea> hidden en dan toon je daarnaast ook je <table> als html "voor de kijker"
Je zou dan in $_POST['naamvandetextarea'] je table aantreffen.
Toevoeging op 17/02/2026 09:28:49:
Fijn hoe Charles middels AI een niets-zeggend antwoord produceert om zijn linkje in zijn profiel te promoten.
Alleen input-elementen, zoals
<input>, <textarea>, <select>
Of je moet een leuk stuk javascript erop loslaten om dat te emuleren.
Je kunt zo'n table wel in een <textarea> plaatsen, maar dan zie je op de pagina dus niet de layout. Of je maakt je <textarea> hidden en dan toon je daarnaast ook je <table> als html "voor de kijker"
Je zou dan in $_POST['naamvandetextarea'] je table aantreffen.
Toevoeging op 17/02/2026 09:28:49:
Fijn hoe Charles middels AI een niets-zeggend antwoord produceert om zijn linkje in zijn profiel te promoten.
@Ivo P: Opsich is er niks mis om zijn site in zijn profiel te tonen. Maar ik denk dat het zinvoller is als we elk profiel maar gewoon standaard afschermen. Bovendien was er grote kans geweest dat Charles in een volgend bericht een verkapte spampoging deed in een brak geformuleerd antwoord. Maar dit figuur heb ik gebanned omdat de alarmbellen van de spam-detector hier al afgingen.
Ja, je kan de gehele html van de tabel versturen. Het is netter om dit als json naar de php te sturen.
De html van de tabel krijg je in $html
Ik hoor wel of dit is wat je zoekt.
Toevoeging op 17/02/2026 18:16:15:
Op verzoek van Charles Frey. Deze snippet heb ik van ChatGPT.
Zo kan je in php de inhoud van elke <td> uitlezen.
Onder regel
$html = $data['tabel'];
komt deze regel waar $inhoudTabel een array is
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<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>
<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
Code (php)
1
2
3
4
5
6
2
3
4
5
6
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");
}
$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.
Toevoeging op 17/02/2026 18:16:15:
Op verzoek van Charles Frey. Deze snippet heb ik van ChatGPT.
Zo kan je in php de inhoud van elke <td> uitlezen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
}
$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
Gewijzigd op 17/02/2026 17:56:41 door Ron Kr.
ik ga het is uit proberen
Toevoeging op 19/02/2026 03:50:03:
ik heb nu dit maar het werkt niet
Toevoeging op 19/02/2026 03:50:03:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?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>
$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
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?
Gewijzigd op 20/02/2026 13:49:11 door Ron Kr.
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.
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.
Gewijzigd op 20/02/2026 13:51:39 door - Ariën -
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.)
Ik zie dat je alleen het aantal rijen wil tellen.
Bestand "index.php"
Bestand "index.php"
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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>
// 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>
Gewijzigd op 20/02/2026 18:12:39 door Ron Kr.
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
Waarbij ik dan <table id="dfg"> en <input name="aantaltrs" id="aantaltrs" value=""> heb bedacht.
ik ben niet zo goed in plain javascript, maar in jQuery zou het iets zijn als
Code (php)
1
2
3
4
2
3
4
var trs = $('#dfg').find('tr');
var aantalTrs = trs.length;
// in een form-element stoppen
$('input#aantaltrs').val(aantalTrs);
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.




