Hidden field
Ik heb de tabel maatprijs met de volgende kolommen:
id, produkt, maat, prijs
Nu heb ik id, produkt en maar al gevuld.
Ik moet alleen nog een prijs koppelen aan de ingevoerde produkten met maten.
Met de volgende functie maak ik een tabelletje waarin ik de prijzen aan de maten wil geen koppelen:
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
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
<?php
function display_db_table_select($tablename, $artnr)
{
$result_id = mysql_query("SELECT product, maat FROM $tablename WHERE product=$artnr") or die (mysql_error()) ;
$column_count = mysql_num_fields($result_id);
print("<H1>Prijzen</H1>\n");
print("<TABLE BORDER=0>\n");
while ($row = mysql_fetch_row($result_id))
{
print("<TR ALIGN=LEFT VALIGN=TOP>");
for ($column_num = 0;
$column_num < $column_count;
$column_num++)
print("<TD>$row[$column_num]</TD>\n");
print("<TD><p>Prijs<br/>
<input type=\"text\" name=\"prijs[]\"
size=\"20\" maxlength=\"25\">
</p></TD>");
print("</TR>\n");
}
print("</TABLE>\n");
}
?>
function display_db_table_select($tablename, $artnr)
{
$result_id = mysql_query("SELECT product, maat FROM $tablename WHERE product=$artnr") or die (mysql_error()) ;
$column_count = mysql_num_fields($result_id);
print("<H1>Prijzen</H1>\n");
print("<TABLE BORDER=0>\n");
while ($row = mysql_fetch_row($result_id))
{
print("<TR ALIGN=LEFT VALIGN=TOP>");
for ($column_num = 0;
$column_num < $column_count;
$column_num++)
print("<TD>$row[$column_num]</TD>\n");
print("<TD><p>Prijs<br/>
<input type=\"text\" name=\"prijs[]\"
size=\"20\" maxlength=\"25\">
</p></TD>");
print("</TR>\n");
}
print("</TABLE>\n");
}
?>
Nu wil ik via dit formulier ook nog graag maat gaan benoemen zodat ik bij het verwerken in de DB de maat via $_POST['maat'] kan gaan oproepen.
Dit wou ik via een hidden field doen, maar ik heb geen idee hoe.
Kan iemand mij daarmee helpen?
Dat moet de maat zijn van de regel in de db waar hij op dat moment is aanbeland.
Hoe roep ik die op?
Maar in de bovenstaande functie werkt dat lijkt mij niet zo simpel toch?
Want....?
Hoe zou jij dat dan daarin verwerken?
Op precies dezelfde manier zoals je de prijs aangeeft, alleen dan met andere waarden, maar volgens mij snap ik jou niet helemaal.
Je hebt een tabel met id, product, maat, prijs, en nu wil je via een formulier de prijs per product kunnen invullen?
Bij de prijs geef ik geen waarde aan.
Ik wil het hidden field waarde gekoppeld hebben aan zijn waarde in de db.
Dus de rij waar de functie op dat moment is aanbeland in de db en dan de kolom maat daarvan.
En die maat verschilt dus per rij die de functie bijlangs gaat.
Best moeilijk om dit duidelijk te verwoorden.
Dat klopt.
Meer ik heb ook meerdere dezelfde produkten met meerdere maten. Die staan elk op een regel in de tabel.
Nu wil ik dat ik aan alle maten bij 1 product een prijs op kan geven.
Dus in dat invulveld krijg ik bijv.:
prod: 12345 maat:100x200 prijs:.......
prod: 12345 maat:200x300 prijs:.......
Die prijzen vul ik dus in. En dat moet dan weer in 1x verwerkt worden in de db.
Ben ik te onduidelijk?
Quote:
Meer ik heb ook meerdere dezelfde produkten met meerdere maten. Die staan elk op een regel in de tabel.
Dat is een slecht datamodel. Je zou een aparte tabel moeten hebben voor de producten en de maten. Dan zou je namelijk kunnen zeggen tegen MySQL
Geef die en die prijs aan producten waarvan het nummer dit is EN de maat dat. Zoals je het nu hebt wordt het heel erg lastig om een goede query op te stellen. Een query als:
SELECT product
FROM producten
WHERE product LIKE '%12345%'
zal je wel alle producten geven met het goede nummer maar om een prijsupdate bij de goede record terecht te laten komen zul je al iets moeten doen als:
UPDATE producten
SET prijs = 123
WHERE producten LIKE '%12345%'
AND producten LIKE '%maat:100x200%'
Dit soort queries kan heel snel fout gaat omdat je met stringvergelijkingen bezig bent.
Als je een tabel maten zou hebben:
maten
id
breedte
hoogte
en in je tabel producten een veld 'nummer'
dan kon je met INT waarden aan de gang en heel precies de juiste records updaten. Zoals je hopelijk ziet is een goed datamodel van levensbelang voor je DB.
maar ook met het juiste datamodel hou ik hetzelfde probleem.
Ik weet niet hoe ik een waarde moet toewijzen aan de maat in dat hidden field.
Maar stel dat je 1 maat kunt ophalen, dan zou het zo moeten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sql = "
SELECT maat
FROM producten
WHERE product = 12345";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo '<pre>';
echo $sql;
echo '</pre>';
}
else {
$row = mysql_fetch_assoc ($res));
}
?>
$sql = "
SELECT maat
FROM producten
WHERE product = 12345";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo '<pre>';
echo $sql;
echo '</pre>';
}
else {
$row = mysql_fetch_assoc ($res));
}
?>
Hierna heb je de maat dus in $row['maat'] en zou je je hidden field zo kunnen echoën.