POST array?
Ik zit een beetje met een lastig iets. Ik ben een web applicatie aan het ontwikkelen die een soort van email systeem heeft.
Elk bericht word simpel weergegeven in een table, en de bedoeling is dat de gebruiker elk gewenst bericht kan aanvinken (type=checkbox) en er een actie op uitvoeren (bv verwijder).
Het probleem is dat ik niet zo goed weet hoe ik doormiddel van <form method="POST"> er achter kan komen welke berichten zijn aangevinkt op dus zeg maar de volgende pagina (dus action=*).
Wat ik probeer, en misschien wel onmogelijk is om een array met berichten IDs te POSTen doormiddel van een javascript en vervolgens er een action op uit tevoeren.
Ik hoef geen complete scripts maar gewoon een korte uitleg ofzo iets :)
Hoop dat jullie me kunnen helpen :D
P.S.: Ik hoop dat wat ik probeer uitteleggen een beetje begrijpelijk is :P
posten doormiddel van js: document.formuliertje.submit()
dan verstuur je het formulier genaamd "formuliertje". zorg dat dat formulier de method "POST" heeft.
En als het goed is, heeft een aangevinkte checkbox de waarde "on" of "off", zo kun je dan kijken welke er aan staan.
maak dan zoiets als (geen de checkboxes bijvoorbeeld namen als "ch1" enz):
$checkBoxes = Array(
$post['ch1'],$post['ch2'],
$post['ch3'],$post['ch4'],
$post['ch5'],$post['ch6']
);
for ( $i=0; $i<count($checkBoxes); $i++ ) {
if ( $checkBoxes[$i] == "on" ) {
// uit te voeren script voor aangevinkt
} else {
// uit te voeren script voor niet aangevinkt
}
}
is dit wat je zoekt?
Het probleem is dat ik niet weet hoeveel checkboxes er zijn, al is het wel makkelijk er achter te komen doormiddel van een while loop counter (alle berichten komen uit een msql database) en deze vervolgens te POSTen doormiddel van een hidden input field.
Ik weet ook de 'name' van m'n checkbox dus niet, en het probleem is dus dat ik $_POST['iets'] niet kan doen. Wat ik geprobeerd heb te doen is om alle checkboxes een en dezelfde naam te geven, en dus krijg ik in JS document.getElementById("checked_messages")[0] document.getElementById("checked_messages")[1] enz. vervolgens deze te POSTen .. alleen is dat volgens mij niet mogelijk. Hiervoor heb ik dus een oplossing nodig :)
Ik zal er aan te denken om misschien in JS iets te doen zoals:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
obj = document.getElementById("checked_messages");
// pseudo
while count(obj)
checkedMess += obj.value += ',';
document.hiddenfield.value = checkedMess;
submit()
// pseudo
while count(obj)
checkedMess += obj.value += ',';
document.hiddenfield.value = checkedMess;
submit()
De value van m'n checkbox bevat m'n message ID die correspondeerd aan message ID in m'n mysql database.
Vervolgens in PHP strip ik de ',' uit de "array" (hiddenfield) met namen en kan ik elke name (value) individueel benaderen in mysql .. alleen is het wat omslachtig lijkt me. Dacht misschien kan het wat simpeler of op een 'juiste' manier.
EDIT: Of inplaats van een hidden field een session te gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Jeffrey Wilcke
je kunt ook de name attribute een volgende waarde geven: check[berichtId] nu krijg je een array ipv van alle checkboxes los. en kun je in je POST array hem alsvolgt benaderen $_POST['check'][4] = berichtId 4 aan of uit?
of met een foreach loopje er door heen wandelen
Ik ben er uit. Niet geheel zoals hierboven, maar mede dankzij jou ben ik er nu uit :)
<input type="checkbox" name="messages[]" id="messages" value="'.$row['mid'].'">
en dan gewoon in wanneer je submit()
if(isset($_POST['messages']))
{
foreach($_POST['messages'] as $mid)
// doe iets met mid
}
Te simpel gewoon haha *ashamed*
Gewijzigd op 01/01/1970 01:00:00 door Jeffrey Wilcke