Ik maak een tabel van x-aantal rijen en bvb 5 kolommen waar je in kolom 1 de naam van het artikel(bvb broodje) zet en in de overige 4 kolommen telkens een inputveldje plaatst voor het aantal waarbij elk input verwijst naar een optie (bvb: wit = optie 1, bruin = optie 2 wit+groenten = optie 3 en bruin+groenten = optie 4)

Het is dus mogelijk om x-aantal witte, x-aatal bruine, x-aantal witte+groenten en x-aantal bruine+groenten te kiezen in in bestelling.

Nu de vraag:

Hoe kan ik in php verwijzen naar de <TR id="product_ID"> van de rij?
Om deze dan via een lus in een array bestelling[product_ID][optie_ID] te plaatsen?


Als je met input velden werkt, dan moet je niet de tabel maar het input veld uitlezen.

Je moet elk inputveld een naam geven.
In PHP kan je die dan uitlezen met $_POST['naam']
Hopelijk is hiermee je vraagt beantwoord...
Kan je een inputveld dan ook 2 namen geven met 1 de product_ID en 2 het optie_ID? bvb broodje kaas = product_ID en wit+groenten is optie_ID.

Dit is eigenlijk waar ik mee knoei.
Geef anders een voorbeeldcode: de code van je tabel en het resultaat dat je wilt bereiken na het uitlezen van de tabel.
Dan kan je het beste zoiets gebruiken:

<form type="post" name="form1" action="">
<table>
<tr>
<td>Kaas:</td>
<td><input type="tekst" name="kaas_bruin /></td>
<td><input type="tekst" name="kaas_wit" /></td>
</tr>
</table>
</form>

(is niet getest, zal wel wat vergeten zijn denk..)
En dan kan je dat in PHP pakken als:
$_POST['kaas_bruin'] enz.

Succes!
Heb het opgelost door twee arrays te mixen
1 array met de broodjes = projectpoduct
1 array met de opties = productcategorieopties

thkxiedereen voor de tips
//////////////////////////////////////////////////////////////////////////////////////

<form action="../order/orderitems.php" method="post">

<table width='100%' border="1">

<?php
for($i=0;$i<count($_SESSION['lst_projectproduct']);$i++)
{
echo "<tr>";
echo "<td style='font-size:9px'>" . $_SESSION['lst_projectproduct'][$i][3] . "</td>";
for($ii=0;$ii<count($_SESSION['lst_productcategorieopties']);$ii++)
{
echo "<td width='30'><input size='10' name='" . $_SESSION['lst_projectproduct'][$i][0] . "_" . $_SESSION['lst_productcategorieopties'][$ii][0] . "' type='text' /></td>";
}
echo "</tr>";
}
?>

</table>
<input type='submit' name='submit' value='insert record'>
<input type='reset' name='reset' value='cancel'>
</form>


///////////////////////////////////////////////////////////////////////////////////////
Probleem is blijkbaar nog niet opgelost:
Als ik de volgende code in mijn html-doc zet krigt elk inutveld een naam die er telkens als volgt uitziet 1_0 , 1_1, 1_2, 1_3, 2_0, 2_1, 2_2, .....

<?php
for($i=0;$i<count($_SESSION['lst_projectproduct']);$i++)
{
echo "<tr>";
echo "<td style='font-size:9px'>" . $_SESSION['lst_projectproduct'][$i][3] . "</td>";
for($ii=0;$ii<count($_SESSION['lst_productcategorieopties']);$ii++)
{
echo "<td width='30'><input size='10' name='" . $_SESSION['lst_projectproduct'][$i][0] . "_" . $_SESSION['lst_productcategorieopties'][$ii][0] . "' type='text' /></td>";
}
echo "</tr>";
}
?>

Tot hier alles ok
Maar als ik nu insert record doe en mijn bestand order_bewaar_bestelling_broodjes.php word opgeroepen dan moet die elk inputveld gaan lezen.

Ik probeer het volgende:

$_SESSION['lst_orderitems'] = array();

$_SESSION['$orderteller']=0;
for($i=0;$i<count($_SESSION['lst_projectproduct']);$i++)
{
for($ii=0;$ii<count($_SESSION['lst_productcategorieopties']);$ii++)
{
$veld = $_SESSION['lst_projectproduct'][$i][0] . "_" . $_SESSION['lst_productcategorieopties'][$ii][0];
if($_POST['". $veld . "'] != NULL)
{
$_SESSION['lst_orderitems'][$_SESSION['$orderteller']][0]=$_SESSION['lst_projectproduct'][$i][0];
$_SESSION['lst_orderitems'][$_SESSION['$orderteller']][1]=$_SESSION['lst_productcategorieopties'][$ii][0];
$_SESSION['lst_orderitems'][$_SESSION['$orderteller']][3]=$_POST['$veld'];
$_SESSION['$orderteller']=$_SESSION['$orderteller']+1;

}
}
}


Het probleem zit hem hier

$veld = $_SESSION['lst_projectproduct'][$i][0] . "_" . $_SESSION['lst_productcategorieopties'][$ii][0]; ---> dit zou dus per lus 1_0 , 1_1, 1_2, 1_3, 2_0, 2_1, 2_2, ..... moeten zijn

$_POST['". $veld . "']

zou dan $_POST['1_0'], $_POST['1_1'],$_POST['1_2'] moeten geven

Maar naturlijk kan dit niet. Is hier een oplossing voor

Door rij per rij in te lezen van de tabel in mijn html-doc (maar hoe werkt dit?)
Heb het probleem opgelost.

Je moet met $key werken.

$key = $_SESSION['lst_projectproduct'][$i][0] . "_" . $_SESSION['lst_productcategorieopties'][$ii][0];

$key krijgt dan de waarde 1_1

$_POST[$key] = $_POST[1_1]

Was dus simpel maar je moet het weten

Reageren