ik heb onderstaande tabel.
Hoe kan ik nou door de rijen
loopen als ik de tabel post naar een
php pagina?



<form method="post">
  <table name=tablename>
    <tr>
<td>df
</td>
     </tr>
      
      
  </table>
  
<input type="text" name="email">


  <input type="submit" value="Submit">
</form>
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);




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
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?
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.
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"
<?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>

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.

Reageren