it-swarm.com.de

Wie lesen Sie, ob in PHP ein Kontrollkästchen aktiviert ist?

Wie lesen Sie, ob in PHP ein Kontrollkästchen aktiviert ist?

231
Thew

Wenn Ihre HTML-Seite so aussieht: 

<input type="checkbox" name="test" value="value1">

Nach dem Absenden des Formulars können Sie es überprüfen mit: 

isset($_POST['test'])

oder 

if ($_POST['test'] == 'value1') ...
294
m_vitaly

Zend Framework verwendet ein Nice-Hack-Kontrollkästchen, das Sie auch selbst ausführen können: 

Jedes generierte Kontrollkästchen ist mit einem ausgeblendeten Feld mit demselben Namen verbunden, das sich unmittelbar vor dem Kontrollkästchen befindet und den Wert "0" hat. Wenn Ihr Kontrollkästchen dann den Wert "1" hat, erhalten Sie im Ergebnis GET oder POST immer den Wert "0" oder "1"

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
91
regilero

Bei Verwendung von Kontrollkästchen als Array:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">

Sie sollten in_array() verwenden:

if(in_array('Orange', $_POST['food'])){
  echo 'Orange was checked!';
}

Vergewissern Sie sich, dass das Array zuerst eingestellt ist, z.

if(isset($_POST['food']) && in_array(...
48
rybo111

Lassen Sie Ihre HTML für Ihre Checkbox gleich sein

<input type="checkbox" name="check1">

Nachdem Sie Ihr Formular abgeschickt haben, müssen Sie dies überprüfen

if (isset($_POST['check1'])) {

    // Checkbox is selected
} else {

   // Alternate code
}

Angenommen, check1 sollte Ihr Ankreuzfeldname sein. Und wenn Ihre Formularübergabemethode GET ist, müssen Sie mit $_GET-Variablen prüfen, wie

if (isset($_GET['check1'])) {

   // Checkbox is selected
} 
37
Gautam3164
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
7
Hammad Khan

Ich benutze diesen Trick seit mehreren Jahren und er funktioniert problemlos mit dem Checkbox-Status bei aktiviertem/deaktiviertem Checkbox-Status während der Verwendung von PHP und Database.

HTML-Code: (für Seite hinzufügen)

<input name="status" type="checkbox" value="1" checked>

Hinweis: Entfernen Sie das "Kontrollkästchen", wenn Sie es standardmäßig deaktiviert anzeigen möchten

HTML-Code: (für Bearbeitungsseite)

<input name="status" type="checkbox" value="1" 
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

PHP Code: (für Seiten hinzufügen/bearbeiten)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

Hinweis: Es wird immer ein leerer Wert angezeigt, es sei denn, der Benutzer hat es geprüft. Wir haben also bereits PHP Code, um ihn abzufangen, ansonsten behalten Sie den Wert auf 0. Dann verwenden Sie einfach die $ status-Variable für die Datenbank.

4
ZEESHAN ARSHAD

Sie können den entsprechenden Wert im Array $ _POST oder $ _GET je nach Aktion Ihres Formulars als gesetzt und nicht leer markieren.

mit einem POST Formular unter Verwendung einer name von "test" (d. h .: <input type="checkbox" name="test">) würden Sie Folgendes verwenden:

if(isset($_POST['test']) {
   // The checkbox was enabled...

}
3
John Parker

Nun, die obigen Beispiele funktionieren nur, wenn Sie einen Wert einfügen wollen. Dies ist nicht hilfreich, wenn Sie unterschiedliche Werte in verschiedenen Spalten aktualisieren möchten. Hier ist also ein kleiner Trick zum Aktualisieren:


//EMPTY ALL VALUES TO 0 
$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';
            $stmtMU = $db->prepare($queryMU);
            $stmtMU->execute();
if(!empty($_POST['check_menus'])) {
    foreach($_POST['check_menus'] as $checkU) {
try {
//UPDATE only the values checked
    $queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
            $stmtMU = $db->prepare($queryMU);
            $stmtMU->execute();  
        } catch(PDOException $e) {
          $msg = 'Error: ' . $e->getMessage();}

        }
}
<input type="checkbox" value="menu_news" name="check_menus[]" />
<input type="checkbox" value="menu_gallery" name="check_menus[]" />

....

Das Geheimnis besteht einfach darin, alle VALUES zuerst zu aktualisieren (in diesem Fall auf 0), und da das nur die überprüften Werte sendet, bedeutet dies, dass alles, was Sie erhalten, auf 1 gesetzt werden sollte.

Beispiel ist PHP, gilt aber für alles.

Habe Spaß :)

2
Hiram

Um zu überprüfen, ob ein Kontrollkästchen aktiviert ist, verwenden Sie empty ()

Wenn das Formular gesendet wird, wird die CheckboxIMMERgesetzt, da ALL POSTvariables mit dem Formular gesendet werden.

Prüfen Sie, ob das Kontrollkästchen leer ist, wie folgt:

//Check if checkbox is checked    
if(!empty($_POST['checkbox'])){
 #Checkbox selected code
} else {
 #Checkbox not selected code
}
2
andy

Erfahren Sie mehr über isset, eine eingebaute "Funktion", die in if-Anweisungen verwendet werden kann, um festzustellen, ob eine Variable verwendet oder festgelegt wurde

Beispiel:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
2
user2451511
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

Kurzschlussbewertung sorgt dafür, dass Sie nicht auf your_checkbox_name zugreifen, wenn er nicht gesendet wurde.

1
Martin Thoma

Ein minimalistischer boolescher Check mit Festhalten der Schalterposition

<?php

$checked = ($_POST['foo'] == ' checked');

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
1
Rembo

Sie können es mit dem kurzen tun, wenn:

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

oder mit dem neuen PHP7 Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;
1
Mazz

filter_input (INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)

0
Thowfeek
<?php

  if (isset($_POST['add'])) {

    $nama      = $_POST['name'];
    $subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Not Checked";

    echo "Name: {$nama} <br />";
    echo "Subscribe: {$subscribe}";

    echo "<hr />";   

  }

?>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >

  <input type="text" name="name" /> <br />
  <input type="checkbox" name="subscribe" value="news" /> News <br />

  <input type="submit" name="add" value="Save" />

</form>
0
antelove

in BS3 kannst du setzen

  <?php
                  $checked="hola";
                  $exenta = $datosOrdenCompra[0]['exenta'];
                  var_dump($datosOrdenCompra[0]['exenta']);
                  if(isset($datosOrdenCompra[0]['exenta']) and $datosOrdenCompra[0]['exenta'] == 1){

                      $checked="on";

                  }else{
                    $checked="off";
                  }

              ?>
              <input type="checkbox" id="exenta" name="exenta" <?php echo $checked;?> > <span class="label-text"> Exenta</span>

Bitte beachten Sie die Verwendung von isset($datosOrdenCompra[0]['exenta'])

0