Nasıl birden $ _POST ['sıra'] ve değişkenler üzerinde eklerim?

2 Cevap php

Ben bu tabloların daha değişkenleri ve satır eklemek için hangi sözdizimsel olarak doğru yolu bulmak için mücadele ediyorum:

/ * [''] BEŞ DAHA $ _POST ADD ON İSTİYORUM * /

if(isset($_POST['check_prof']) && $_POST['check_prof'] == 'checked') {
$check_prof = "checked";
}else{
$check_prof = "unchecked";
} 

/ * AYNI BURAYA de burada DİĞER BEŞ ADD İSTİYORUM * /

$query = "UPDATE `Users` SET `check_prof` = '" . $check_prof . "' WHERE `id` = '" . $auth->id . "' LIMIT 1";
    mysql_query($query,$connection);
    $auth->refresh();
    }

2 Cevap

Böyle mi demek istiyorsun?

$fields = array('check_prof', 'check_this', 'check_that', 'check_whatever');

foreach($fields as $field){
    isset($_POST[$field] && $_POST[$field] == 'checked')){
        $$field='checked';
    } else {
        $$field='unchecked';
    }

    $query = "UPDATE `Users` SET `$field` = '" . $$field . "' WHERE `id` = '" . $auth->id . "' LIMIT 1";
    mysql_query($query,$connection);
    $auth->refresh();
}

Bu arada, yerine depolama "kontrol" ve bir 0 veya 1. Bu yol daha az yer kaplayacaktır türü tinyint (1) olarak saklamak ve sadece kullanabilirsiniz (bir varchar gibi) veritabanında "denetlenmeyen".

Başka bir şey, bu her alan için ayrı bir sorgu yapacağız. Bu performansı bir endişe ise tüm alanlar için değişiklik yapmak için bir sorgu yazmak daha verimli.

Ne demek istediğini anlamak ediyorum varsayarak, bu deneyin:

<?php
$arr = array('check_prof' => 'unchecked',
            'check_student' => 'unchecked');
foreach($arr as $field => $checked) {
    if (isset($_POST[$field]) && $_POST[$field] == 'checked') {
        $arr[$field] = 'checked';
    }
    // I don't know where $auth is coming from
    $query = "UPDATE `Users` SET `$field` = '" . $arr[$field] . "' WHERE `id` = '" . $auth->id . "' LIMIT 1";
    mysql_query($query,$connection);
    $auth->refresh();
}
?>

Sadece döngü bunun için $arr gerektiği gibi alanlar eklemek gerekir.