id's halen uit input name attribuut met str_split
Met behulp van een switch statement genereer ik input velden binnen een formulier "productForm".
switch ($row['Par_Type']){
case text:
while ( $opt = mysql_fetch_array($resultHaalOptions, MYSQL_BOTH)){
print "<input type=\"".$row['Par_Type']."\" name=\"".$row['Par_Name'].":".$row['Par_ID'].":".$opt['Opt_ID']."\" value=\"" .$row['Opt_Value']. "\" onChange='document.getElementById(\"productForm\").submit();'>";
}
break;
Dit komt er dan bijvoorbeeld uit:
<input type="text" name="OnvKosten:10:32" value="" onChange='document.getElementById("productForm").submit();'>
De volgende stap is het opslaan van de gegevens. Deze gegevens bestaan uit een aantal onderdelen.
1. de value (geen probleem).
2. een parent en een option ID (wel een probleem).
Deze Par_ID en Opt_ID stuur ik nl mee met het name attribuut van het input veld.
Als ik op de normale (bij mij bekende manier) een formulier verwerk, kom ik er niet uit.
Voorbeeld:
if($_SERVER['REQUEST_METHOD'] == 'POST' &&isset($_POST['Product:1:1']))
{
$OnvKosten = $_POST['OnvKosten:10:32'];
}
Nu wil ik graag het stukje 'OnvKosten:10:32' splitten en de onderdelen in afzonderlijke variabelen kuinnen stoppen.
Iemand een idee?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
switch ($row['Par_Type']){
case text:
while ( $opt = mysql_fetch_array($resultHaalOptions, MYSQL_ASSOC)){
print "<input type=\"".$row['Par_Type']."\" name=\"".$opt['id']."\" value=\"" .$row['Opt_Value']. "\" onChange='document.getElementById(\"productForm\").submit();'>";
}
break;
?>
switch ($row['Par_Type']){
case text:
while ( $opt = mysql_fetch_array($resultHaalOptions, MYSQL_ASSOC)){
print "<input type=\"".$row['Par_Type']."\" name=\"".$opt['id']."\" value=\"" .$row['Opt_Value']. "\" onChange='document.getElementById(\"productForm\").submit();'>";
}
break;
?>
Ik neem gewoon aan dat je in die tabel met opties toch ook wel minimaal één kolom met de id hebt? In dat geval hoef je alleen de ID door te geven. Aan de hand daarvan kun je gewoon de rest van de info ophalen (indien nodig).
Gewijzigd op 01/01/1970 01:00:00 door Jan Willem van der Veer
Nou, ik heb niet het hele verhaal verteld.
Ik schrijf de informatie weg in verschillende tabellen die later als filter voor het tonen van opties gaan werken.
Ik moet i.i.g. uit een input veld naast de value (en dat kan een reeds gedefinieerde waarde zijn, maar ook iets wat je invult) ook de Par_ID en de Opt_ID wegschrijven samen met een Product_ID (ik ben namenlijk aan een Product opties aan het toevoegen).
Het wegschrijven gebeurd in een drietal tabellen te weten:
- Product
- HuidigeOpties
- HuidigeAttributen
In elke tabel schrijf het Product_ID en vervolgens de optie-parent, de optie, het optie-attribuut en de meegegeven optiewaarde.
bijv:
tbl_HuidigeAttributen
HuidAtt_ID | Prod_ID | Opt_Par_ID | Att_ID | Att_Value
hierin schrijf ik dan b.v. weg:
(autonr) | 53 | 3 | 7 | achterdeur
Ik heb dus meerdere id's nodig om weg te kunnen schrijven. Die geef ik met het name attribuut mee, maar hoe krijg ik ze er weer uit?
De waarden ophalen.
Dat ga ik even proberen.
Er is geen directe manier om het name attribuut als waarde uit te lezen
dus het stukje ['name_van_het_hidden_field'] tussen de rechte haken?
het punt is n.l. ook dat de input velden en hun namen dynamisch worden opgebouwd en er nogal wat variaties zijn. Per product is de inhoud van het formulier voor een groot deel totaal verschillend.
Maar dat is weer een ander probleem :-)
Enorm bedankt voor de snelle reacties!
$query_string = "";
if ($_POST) {
$kv = array();
foreach ($_POST as $key => $value) {
$kv[] = "$key=$value";
}
$query_string = join("&", $kv);
}
else {
$query_string = $_SERVER['QUERY_STRING'];
}
echo $query_string;
Deze methode geeft mij de mogelijkheid elk key/value paar afzonderlijk als record weg te schrijven in een tabel als HuidigeAttributen.
Dat geeft allerlei voordelen.
De opties die ik aan een product hang zijn daarmee volledig variabelbaar zonder dat ik ze van te voren vast hoef te leggen in de wegschrijftabel.
Daarom is voor mij wel van belang dat ik de optie_id's en optie_values stop in het name/value pair van het input field.
Miscchien is mijn vraag nu iets heldeder.
Gewijzigd op 01/01/1970 01:00:00 door ruben