Несколько вставок на PHP с помощью флажков - PullRequest
1 голос
/ 10 сентября 2010

У меня есть этот код, который я сделал до сих пор:

$assign = $_POST['assign'];

if(!empty($name) && !empty($description) && !empty($deadline))
{
    if(validateDate($deadline))
    {
        $final_deadline = strtotime($deadline);

        $sql .= "INSERT INTO projects
                (project_id, project_name, project_description, project_deadline, project_status, project_priority)
                VALUES ('" . $project_id . "', '" . $name . "', '" . $description . "', '" . $final_deadline . "', '" . $status . "', '" . $priority . "');";

        if(is_array($assignments))
        {
            foreach($assignments as $assigned_user)
            {
                $sql .= "INSERT INTO assignments (user_id, project_id) VALUES('" . $assigned_user . "', '" . $project_id . "');";
            }
        }
        else
        {
            echo '<br /><br />not an array<br />';
        }

        $result = mysql_query($sql) or die(mysql_error());

        echo '<br />' . var_dump($assignments);
    }
    else
    {
        $_SESSION['ERROR'] = "Not a valid deadline";
        header("Location: dashboard.php");
    }
}

Который использовал бы этот список флажков:

<input type="checkbox" value="<?php echo $row['user_id']; ?>" id="<?php echo $row['username']; ?>" class="usercheckbox" name="assign[]" />

Проблема, которая возникает, когда я отправляю форму для вставки записи для каждого из отмеченных полей, она возвращает пустой массив ...

Это говорит это:

Примечание: неопределенный индекс: назначить в [..] в строке 41

не массив

NULL

Таким образом, в основном у флажков ничего нет, у флажков уже есть значения, assign[] правильный, теперь я не знаю, в чем проблема, что он не содержит ничего при отправке формы.

Ответы [ 5 ]

3 голосов
/ 10 сентября 2010

Проверены ли какие-либо флажки?Если вы отправляете форму со снятыми флажками, она ничего не будет отправлять.

Если вы хотите, чтобы предупреждающее сообщение исчезло, добавьте if(isset($_POST['assign'])) перед тем, как установить $ assign.Затем добавьте else { $assign = array() } Это инициализирует $ assign для пустого массива, чтобы вы не получили больше предупреждений об использовании $ assign в нулевом состоянии.

2 голосов
/ 10 сентября 2010

В коде FORM вы используете assign [], а в коде PHP - $ assignments, они становятся двумя разными переменными.

2. при проверке на чекбоксы я думаю, что значение превращается в «проверено», а не в значение (это могло быть неправильно уже некоторое время, так как я это сделал)

Изменить Я был не прав, он использует значение

0 голосов
/ 10 сентября 2010

Во-первых, я думаю, вы не использовали тег формы или неправильный атрибут метода.

<form method="post" action="target.php">
....
</form>

если это не так, попробуйте var_dump в массиве Post

var_dump($_POST);

в файле Target PHP, если он пустой, ничего не отправлялось. Как я помню, флажок попадает в массив, только если он выбран, поэтому попробуйте использовать

if(isset($_POST['assign'])){
   //...
}else{
   //What to do if it isn't set.
}

Если вы не решите свою проблему, спросите еще раз и отправьте сообщение var_dump.

0 голосов
/ 10 сентября 2010

Ваш код правильный.Попробуйте $ _REQUEST [] вместо $ _POST.Убедитесь, что по крайней мере один флажок установлен перед отправкой.

0 голосов
/ 10 сентября 2010

Вы уверены, что ваша ФОРМА использует метод POST?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...