Pilsner, ten pociąg nie pojedzie...
Zacznę od początku.
Przerabiam cms w którym bloki menu albo są, albo nie dla wszystkiego co się wyświetla. Chcę to zmienić i zrobić dedykowane menu dla wyświetlanych elementów,np. dla wolnych stron.
Przy tworzeniu wolnej strony mam z boku panel z dostępnymi blokami menu. Lista bloków jest zmienna i pobierana jest z tabeli "menu" ale checkboxy działają niezależnie - w momencie powstawania dokumentu są nieaktywne.
Wybieram, które bloki menu chcę żeby się wyświetlały razem z tym tworzonym dokumentem - zaznaczam checkboxy i wysyłam POSTem do tego samego pliku (jeszcze nie zapisuje całego dokumentu).
ID wybranych checkboxów potrzebuję w dwóch celach:
1. Robię z nich nazwę pliku w którym znajdują adresy do wybranych bloków menu i na podstawie tej nazwy są one wyświetlane, np.: 2-4-14-.php wyświetli trzy bloki menu o ID 2, 4 14.
2. ID jest potrzebne do identyfikacji wybranych menu podczas ponownej edycji danego pliku w panelu admina, czyli kiedy wyedytuję wolną stronę, wartość dla checkbox zostanie wyjęta z komórki bazy i przekazana do panelu menu dokumentu. Tu na podstawie przypisanych do chceckboxów ID zaznaczone zostaną odpowiednie pozycje na liście.
Tyle teoria, teraz pokażę jak to wygląda w kodach.
To panel z blokami menu do wyboru. Po zaznaczeniu i wysłaniu przez POST, wartości dla aktywnych chceckbox zwracane są przez $zpost['BX'].
<?php
if($_POST['savmenu'])
{
$ile=count($_POST['m_s']); for($k=0;$k<$ile;$k++)
{ $zpost['BX']=$_POST['m_vis'];}
unset($_POST['savmenu']); }
db_read('ID,seq,text,disp','menu','m','ta',' ORDER BY seq');
for($i=0;$i<$ile;$i++) {
<form method="post" action="asnav.php">
<tr>
<td height="20">'.(($cfg['num']==1)?($i+1).'. ':'').$m[$i]['text'].'</td>
<td align="center"><input type="hidden" name="m_s['.$i.']" onblur="if(this.value==0) { this.value=''.$m[$i]['seq'].'' }" class="itm" value="'.$m[$i]['seq'].'" /><input class="itm" name="m_id['.$i.']" value="'.$m[$i]['ID'].'" /></td>
<td align="center"><input type="checkbox" name="m_vis['.$i.']"'.(($zpost['BX'][$i])?' checked="checked"':'').' /></td>
</tr>';
}
<tr>
<td style="padding-top:10px; border-top:1px solid #ededeb;" colspan="3" align="center"><input type="submit" name="savmenu" value="zapisz" /></td>
</tr>';
?>
Pilsner, to co zaproponowałeś:
<?php
$dane = $_POST['twoje_czekbosky']
?>
zwraca jedynie stan czekboksów a nie ich ID
Coś mi się wydaje, że chyba za bardzo kombinuję, bo przecież POSTA wykorzystuję w stanie, w jakim teraz jest, i po wyjęciu z bazy również w takiej formie. Sprawdzę to.