Reputation: 1008
I have a jQuery function to dynamically add rows containing input fields, this exists on a form, the function adds text boxes (distinct names) to each cell in the table
an example of the generated HTML would be:
<table width="400" border="0" cellspacing="0" cellpadding="2px" margin="0" >
<tbody>
<tr>
<td><input type="text" name="name_1"></td>
<td><input type="text" name="surname_1"></td>
<td><input type="text" name="age_1"></td>
</tr>
<tr>
<td><input type="text" name="name_2"></td>
<td><input type="text" name="surname_2"></td>
<td><input type="text" name="age_2"></td>
</tr>
<tr>
<td><input type="text" name="name_3"></td>
<td><input type="text" name="surname_3"></td>
<td><input type="text" name="age_3"></td>
</tr>
</tbody>
I am reading the "$_POST['varName'] data with the following code:
<?php
$cnt = 1 ;
$fName = ( $name ."_" .$cnt) ;
do {
echo("$_POST[$fName] <br>");
$cnt = $cnt +1 ;
$fName = ( $fldName ."_" .$cnt) ;
} while (isset($_POST[$fName]));
?>
however, i would like to simply loop through each row in the table and read the data sequentially in a loop (using PHP), my idea is to pass the table object to a php function, is this possible?
Basically i am looking for a solution to read the table data, where each row contains input boxes "name_X", "surname_x" and "age_x" and i will not know how many rows exist at design time... (i will never have more than 9 rows)
Hope this is clear! ... Any Suggestions?
Upvotes: 1
Views: 8584
Reputation: 1008
I Used both the name array and the simple for loop to find a suitable answer. Thanks All!
HTML: I have a js function that adds the following to a table dynamically (Button on form)
<tr>
<td><input type="text" name="name[]" ></td>
<td><input type="text" name="surname[]" ></td>
<td><input type="text" name="age[]"> </td>
</tr>
PHP: and this is the way that i process the table within the form
<?php
$rowCount = count($_POST['name']);
echo "<table>";
for($i=1; $i<=$rowCount; $i++)
{
echo "<tr>";
echo "<td>".$_POST['name'][$i -1]."</td>";
echo "<td>".$_POST['surname'][$i -1]."</td>";
echo "<td>".$_POST['age'][$i -1]."</td>";
echo "</tr>";
}
echo "</table>";?>
Upvotes: 0
Reputation: 161
You could use a hidden field and set there the number of rows as value using javascript. In the php script you can then use a simple for loop.
Simething like this:
$rowCount = $_POST['hiddenName'];
for($i=1; i<=$rowCount; $i++)
{
$_POST['name_'.$i]
...
}
Upvotes: 1
Reputation: 2812
i'm pretty sure you must use an array in the name="" values
<td><input type="text" name="name[]"></td>
Upvotes: 4