Jag exprimenterar lite med en admin-miljö för en adressbok där det finns en lista med kryssrutor som indikerar om inlägget ska visas eller inte. Det är ju bara att anta att dom som lämnas ute inte är kryssade? dvs har du kryssat 3, 5 och 7 av 10 så vet du ju att resten är avkryssade, då loopar du igenom dom du har, resten sätter du till 0... Eller så gör du det enkelt för dig.Omarkerade checkboxar lämnar inget spår i $_POST
Så, om användaren avmarkerar kryssrutan ska postens fält 'Display' vara lika med '0'. Men problemet är att avmarkeringen inte sparas i $_POST. Där sparas bara de som är markerade. Hur gör jag för att ta reda på vilka som är avmarkerade?
PS: Jag har sett att vissa (i mitt fall som ex) sätter alla posters Display till '0' och därefter ändrar till '1' på den som har markerade kryssrutor, men lösningen vill jag undvika eftersom att det inte nödvändigtvis är så att alla poster visas i listan. Det kan ju tex vara så man bara har valt att visa vissa efter ett visst datum...Sv: Omarkerade checkboxar lämnar inget spår i $_POST
t.ex. psuedo kod:
i = 0
while (i < antalet_kryssrutor) {
if (i är ikryssad) {
gör något...
} else {
du har hittat en avkryssad och nummret är värdet på i...
gör något annat...
}
}
antar dock att du vet hur många kryssrutor du har innan du skickar iväg... vet du inte det kan du skicka med antalet i en variable.Sv:Omarkerade checkboxar lämnar inget spår i $_POST
Jag antar att du vill uppdatera ett fält i en databas så följande skulle enkelt lösa ditt problem
$sql = "UPDATE tabell SET display = 0 WHERE userid = " . $uid;
# Kör dennaa fråga
$sql = "";
for (reset($chkvisa);$rad = current($chkvisa); next($chkvisa))
{
if strlen($sql) > 0 { $sql .= ","; }
$sql = $rad;
}
$sql = "UPDATE tabell SET display = 1 WHERE userid = " . $uid . " AND displayitem IN (" . $sql . ")";
# Kör denna fråga
Sedan så vart det klart