Kontrollkästchen stellen normalerweise Binärdaten dar, die in der Datenbank als Ja / Nein-, J / N- oder 1/0-Werte gespeichert sind. HTML-Kontrollkästchen haben einen schlechten Charakter, um nur dann einen Wert an den Server zu senden, wenn das Kontrollkästchen aktiviert ist! Das bedeutet, dass das Serverskript auf einer anderen Site im Voraus wissen muss, welche Kontrollkästchen auf der Webseite möglich sind, um positive (aktivierte) oder negative (nicht aktivierte) Werte speichern zu können. Tatsächlich sind nur negative Werte problematisch (wenn der Benutzer den zuvor (vor) geprüften Wert deaktiviert - wie kann der Server dies wissen, wenn nichts gesendet wird, wenn er nicht im Voraus weiß, dass dieser Name gesendet werden soll). Wenn Sie ein serverseitiges Skript haben, das dynamisch ein UPDATE-Skript erstellt, liegt ein Problem vor, da Sie nicht wissen, welche Kontrollkästchen empfangen werden sollen, um den Y-Wert für aktivierte und den N-Wert für nicht aktivierte (nicht empfangene) festzulegen.
Da ich die Werte 'Y' und 'N' in meiner Datenbank speichere und sie über aktivierte und deaktivierte Kontrollkästchen auf der Seite darstelle, habe ich für jeden Wert (Kontrollkästchen) ein ausgeblendetes Feld mit 'Y'- und' N'-Werten hinzugefügt und dann Kontrollkästchen nur zur visuellen Darstellung verwendet Darstellung und verwenden Sie die einfache JavaScript-Funktion check (), um den Wert von if entsprechend der Auswahl festzulegen.
<input type="hidden" id="N1" name="N1" value="Y" />
<input type="checkbox"<?php if($N1==='Y') echo ' checked="checked"'; ?> onclick="check(this);" />
<label for="N1">Checkbox #1</label>
Verwenden Sie einen JavaScript-Onclick-Listener und rufen Sie die Funktion check () für jedes Kontrollkästchen auf meiner Webseite auf:
function check(me)
{
if(me.checked)
{
me.previousSibling.previousSibling.value='Y';
}
else
{
me.previousSibling.previousSibling.value='N';
}
}
Auf diese Weise werden "Y" - oder "N" -Werte immer an das serverseitige Skript gesendet. Es weiß, welche Felder aktualisiert werden sollten, und es ist nicht erforderlich, den Wert "checbox" on "in" Y "umzuwandeln oder das Kontrollkästchen nicht empfangen in" N "zu konvertieren '.
HINWEIS: Leerzeichen oder neue Zeilen sind ebenfalls Geschwister, daher benötige ich hier .previousSibling.previousSibling.value. Wenn kein Leerzeichen dazwischen ist, dann nur .previousSibling.value
Sie müssen den Onclick-Listener nicht wie zuvor explizit hinzufügen. Mit der jQuery-Bibliothek können Sie den Click-Listener mit der Funktion dynamisch hinzufügen, um den Wert aller Kontrollkästchen auf Ihrer Seite zu ändern:
$('input[type=checkbox]').click(function()
{
if(this.checked)
{
$(this).prev().val('Y');
}
else
{
$(this).prev().val('N');
}
});