Nie mogę wymyśleć sposobu na uaktualnienie bazy danych. W bazie trzymam składniki, pobieram je tak:
  1. $Query='SELECT * FROM '.$pre.'skladniki WHERE s_a='.mysql_real_escape_string($_GET['id']).'';
  2. $result = mysql_query($Query) or die(mysql_error());
  3. $i=0;
  4. $tablica = array();
  5. while ($row = mysql_fetch_array($result)) {
  6. $tablica[$i]['s_id'] = $row['s_id'];
  7. $tablica[$i]['id'] = $row['s_a'];
  8. $tablica[$i]['s_nazwa'] = $row['s_nazwa'];
  9. $tablica[$i]['s_ilosc'] = $row['s_ilosc'];
  10. $tablica[$i]['s_jed'] = $row['s_j'];
  11. $i++;
  12. $smarty->assign('s_ile', $i);
  13. }
  14. $smarty->assign('skladniki', $tablica);

i wyświetlam:
  1. <td valign="top"><b>Składniki ({$s_ile}):</b></td>
  2. <td>
  3. {section name=sklad loop=$skladniki}
  4. Nazwa składnika: <input type="text" name="s_nazwa[]" value="{$skladniki[sklad].s_nazwa}" >
  5. Ilość: <input type="text" name="s_ilosc[]" value="{$skladniki[sklad].s_ilosc}" style="width:50px;">
  6. <select name="s_jed[]">
  7. <option value="gram" {if $skladniki[sklad].s_jed=="gram"} selected="selected"{/if}>gram</option>
  8. <option value="dekagram" {if $skladniki[sklad].s_jed=="dekagram"} selected="selected"{/if}>dekagram</option>
  9. <option value="kilogram" {if $skladniki[sklad].s_jed=="kilogram"} selected="selected"{/if}>kilogram</option>
  10. <option value="łyżeczka" {if $skladniki[sklad].s_jed=="łyżeczka"} selected="selected"{/if}>łyżeczka</option>
  11. <option value="łyżka" {if $skladniki[sklad].s_jed=="łyżka"} selected="selected"{/if}>łyżka</option>
  12. <option value="szklanka" {if $skladniki[sklad].s_jed=="szklanka"} selected="selected"{/if}>szklanka</option>
  13. <option value="mililitr" {if $skladniki[sklad].s_jed=="mililitr"} selected="selected"{/if}>mililitr</option>
  14. <option value="litr" {if $skladniki[sklad].s_jed=="litr"} selected="selected"{/if}>litr</option>
  15. <option value="pęczek" {if $skladniki[sklad].s_jed=="pęczek"} selected="selected"{/if}>pęczek</option>
  16. <option value="kostka" {if $skladniki[sklad].s_jed=="kostka"} selected="selected"{/if}>kostka</option>
  17. <option value="opakowanie" {if $skladniki[sklad].s_jed=="opakowanie"} selected="selected"{/if}>opakowanie</option>
  18. <option value="sztuka" {if $skladniki[sklad].s_jed=="sztuka"} selected="selected"{/if}>sztuka</option>
  19. <option value="szczypta" {if $skladniki[sklad].s_jed=="szczypta"} selected="selected"{/if}>szczypta</option>
  20. <option value="ziarno" {if $skladniki[sklad].s_jed=="ziarno"} selected="selected"{/if}>ziarno</option>
  21. <option value="plaster" {if $skladniki[sklad].s_jed=="plaster"} selected="selected"{/if}>plaster</option>
  22. <option value="ząbek" {if $skladniki[sklad].s_jed=="ząbek"} selected="selected"{/if}>ząbek</option>
  23. </select>
  24. <input type="checkbox" name="s_usun[]" value={$skladniki[sklad].s_id}> {$skladniki[sklad].s_id} do usunięcia<br />
  25. {/section}
  26. </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 wink.gif
  1. // usunięcie rekordów
  2. if($s_id>=1) {
  3. $del="DELETE FROM ".$pre."skladniki WHERE s_a=".mysql_real_escape_string($_GET['id']);
  4. mysql_query($del);
  5. }
  6.  
  7. // insertowanie rekordów przychodzących z $_POST
  8. $is=0;
  9. $isp=0;
  10. $s_n=$_POST['s_nazwa'];
  11. $s_ilosc=$_POST['s_ilosc'];
  12. $s_jed=$_POST['s_jed'];
  13.  
  14. foreach($_POST['s_nazwa'] as $snn) {
  15. if($s_n[$is]<>"" and $s_jed[$is]<>"" and $s_ilosc[$is]<>"") {
  16. $in="INSERT INTO ".$pre."skladniki(`s_a`,`s_nazwa`,`s_j`,`s_ilosc`)
  17. VALUES ('".$ds_id."','".htmlspecialchars($s_n[$is])."','".htmlspecialchars($s_jed[$is])."','".htmlspecialchars($s_ilosc[$is])."')";
  18. $isp++;
  19. }
  20. $is++;
  21. }

Potrzeba mi warunku, który pominie te, które zaznaczam, czyli te, które odfiltrowuję tak:
  1. if(isset($_POST['s_usun']) and $s_id>=1) {
  2. for ($i=0;$i<count($_POST["s_usun"]);$i++) {
  3. $sid = $_POST["s_usun"][$i];
  4. }
  5. }

PS. Chyba edytor forum szaleje?