2010-09-10 3 views
1

я этот кусок кода я сделал до сих пор:Несколько ВСТАВИТЬ-х PHP с помощью флажков по

$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[] верны, теперь я не знаю, в чем проблема, что она ничего не содержит при отправке формы.

+1

** mysql_real_escape_string ** - это еще что-то, что вам нужно для чтения, и изменить 'name =" присваивать [] "' '' '= = присваивать '' браузер автоматически делает массив для отправки. – RobertPitt

+0

mmh ... [] необходимо оставить или $ _POST ['assign'] не будет массивом, а просто будет содержать значение последнего флажка. – pilif

ответ

3

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

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

2

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

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

Редактировать Я был неправ, он делает использование значение

0

Вы уверены, что ваш FORM использует метод POST?

-1

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

+0

Неправильный код. '$ assign! = $ assignments'. – ZeissS

0

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

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

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

var_dump($_POST); 

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

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

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

Смежные вопросы