Nie mogę wymyśleć sposobu na uaktualnienie bazy danych. W bazie trzymam składniki, pobieram je tak:
$i=0;
$tablica[$i]['s_id'] = $row['s_id'];
$tablica[$i]['id'] = $row['s_a'];
$tablica[$i]['s_nazwa'] = $row['s_nazwa'];
$tablica[$i]['s_ilosc'] = $row['s_ilosc'];
$tablica[$i]['s_jed'] = $row['s_j'];
$i++;
$smarty->assign('s_ile', $i);
}
$smarty->assign('skladniki', $tablica);
i wyświetlam:
<td valign="top"><b>Składniki ({$s_ile}):</b></td>
<td>
{section name=sklad loop=$skladniki}
Nazwa składnika: <input type="text" name="s_nazwa[]" value="{$skladniki[sklad].s_nazwa}" >
Ilość: <input type="text" name="s_ilosc[]" value="{$skladniki[sklad].s_ilosc}" style="width:50px;">
<select name="s_jed[]">
<option value="gram" {if $skladniki[sklad].s_jed=="gram"} selected="selected"{/if}>gram</option>
<option value="dekagram" {if $skladniki[sklad].s_jed=="dekagram"} selected="selected"{/if}>dekagram</option>
<option value="kilogram" {if $skladniki[sklad].s_jed=="kilogram"} selected="selected"{/if}>kilogram</option>
<option value="łyżeczka" {if $skladniki[sklad].s_jed=="łyżeczka"} selected="selected"{/if}>łyżeczka</option>
<option value="łyżka" {if $skladniki[sklad].s_jed=="łyżka"} selected="selected"{/if}>łyżka</option>
<option value="szklanka" {if $skladniki[sklad].s_jed=="szklanka"} selected="selected"{/if}>szklanka</option>
<option value="mililitr" {if $skladniki[sklad].s_jed=="mililitr"} selected="selected"{/if}>mililitr</option>
<option value="litr" {if $skladniki[sklad].s_jed=="litr"} selected="selected"{/if}>litr</option>
<option value="pęczek" {if $skladniki[sklad].s_jed=="pęczek"} selected="selected"{/if}>pęczek</option>
<option value="kostka" {if $skladniki[sklad].s_jed=="kostka"} selected="selected"{/if}>kostka</option>
<option value="opakowanie" {if $skladniki[sklad].s_jed=="opakowanie"} selected="selected"{/if}>opakowanie</option>
<option value="sztuka" {if $skladniki[sklad].s_jed=="sztuka"} selected="selected"{/if}>sztuka</option>
<option value="szczypta" {if $skladniki[sklad].s_jed=="szczypta"} selected="selected"{/if}>szczypta</option>
<option value="ziarno" {if $skladniki[sklad].s_jed=="ziarno"} selected="selected"{/if}>ziarno</option>
<option value="plaster" {if $skladniki[sklad].s_jed=="plaster"} selected="selected"{/if}>plaster</option>
<option value="ząbek" {if $skladniki[sklad].s_jed=="ząbek"} selected="selected"{/if}>ząbek</option>
</select>
<input type="checkbox" name="s_usun[]" value={$skladniki[sklad].s_id}> {$skladniki[sklad].s_id} do usunięcia<br />
{/section}
</td>
Uaktualnić umiem, nie ma problemu. Ale sobie wymysliłem, że zaznaczę jakieś składniki do usunięcia i przy następnej operacji na bazie usunięcie zaznaczonych rekordów. Niestety, usuwam rekord a na jego miejscu pojawia się identyczny z nowym ID

// usunięcie rekordów
if($s_id>=1) {
}
// insertowanie rekordów przychodzących z $_POST
$is=0;
$isp=0;
$s_n=$_POST['s_nazwa'];
$s_ilosc=$_POST['s_ilosc'];
$s_jed=$_POST['s_jed'];
foreach($_POST['s_nazwa'] as $snn) {
if($s_n[$is]<>"" and $s_jed[$is]<>"" and $s_ilosc[$is]<>"") {
$in="INSERT INTO ".$pre."skladniki(`s_a`,`s_nazwa`,`s_j`,`s_ilosc`)
$isp++;
}
$is++;
}
Potrzeba mi warunku, który pominie te, które zaznaczam, czyli te, które odfiltrowuję tak:
if(isset($_POST['s_usun']) and
$s_id>=1
) { for ($i=0;$i<count($_POST["s_usun"]);$i++) {
$sid = $_POST["s_usun"][$i];
}
}
PS. Chyba edytor forum szaleje?
Ten post edytował Kshyhoo 19.01.2012, 20:12:57