вставить через флажок - PullRequest
       30

вставить через флажок

0 голосов
/ 23 ноября 2010

Я пытаюсь вставить с помощью флажка, но он сохраняет только одну запись, предположим, что в таблице у меня есть 10 записей, она сохраняет только 10-ую. Я думаю, что есть проблема для каждого. Кто-нибудь может мне помочь?

<form id="assign" name="assign" method="post" action="assign_individual_exec.php">

    <tr><td class="style3">Select course name:</td>
    <td><select name="name" class="principal2"><?php select_coursename(); ?></select></td></tr>
    <tr><td class="style3"> Start Date</td>
<td><input type="date" name="sdate" ></td><td><script language="JavaScript">
    new tcal ({
        'formname': 'assign',

        'controlname': 'sdate'
    });

    </script></td></tr>



<?php

include('member_table.php');
?>

    <tr>
      <div align="right"class="lien">

        <td><input type="submit" name="individual" value="assign to individual"  />

member_table.php

<?php


$member_id = $_SESSION['SESS_MEMBER_ID'];

   $first= mysql_query("select userid from dept_user where lead_id=$member_id");

echo "<table border='1' id=coursetable class=coursetable>
<tr>
<th>first name</th>
<th>last name</th>
<th>dept name</th>
<th>title</th>
<th>rolename</th>
<th>leader first name</th>
<th>leader last name</th>
</tr>";

 while($res = mysql_fetch_array($first)){

$user1 = $res['userid'];


$display= mysql_query("Select user.firstname, user.lastname, department.dept_name, job_title.title, role.rolename, user.userid From user Inner Join  dept_user On user.userid = dept_user.userid Inner Join  department On department.dept_id = dept_user.dept_id Inner Join  job_title On job_title.title_id = user.titleid Inner Join  role On role.roleid = user.roleid Where user.userid = $user1 "); 




$leader = mysql_query("Select firstname , lastname From user Inner Join  dept_user On user.userid = dept_user.lead_id  Where dept_user.lead_id =$member_id");

while(($row1 = mysql_fetch_array($display)) and ($lead = mysql_fetch_array($leader)))

  {

  echo "<tr>";
  echo "<td>" . $row1['firstname'] . "</td>";
  echo "<td>" . $row1['lastname'] . "</td>";
  echo "<td>" . $row1['dept_name'] . "</td>";
  echo "<td>" . $row1['title'] . "</td>";
echo "<td>"  . $row1['rolename'] . "</td>";
echo "<td>"  . $lead['firstname'] ."</td>";
echo "<td>"  . $lead['lastname'] . "</td>";
echo  "<td>" .'<input type="checkbox" name="userid" value='.$row1['userid'].'>'."</td>";
  echo "</tr>";

  }

 if ($user1 !== 0){

 $second = mysql_query("select userid from dept_user where lead_id=$user1");

 while($res1 = mysql_fetch_array($second)){

 $user2= $res1['userid'];



if($user2 !==0) {



   $display2 = mysql_query("Select user.firstname, user.lastname, department.dept_name, job_title.title, role.rolename, user.userid From user Inner Join  dept_user On user.userid = dept_user.userid Inner Join  department On department.dept_id = dept_user.dept_id Inner Join  job_title On job_title.title_id = user.titleid Inner Join  role On role.roleid = user.roleid Where user.userid = $user2 "); 


   $leader1= mysql_query("Select firstname , lastname From user Inner Join  dept_user On user.userid = dept_user.lead_id  Where dept_user.lead_id = $user1");

while(($res1 = mysql_fetch_array($display2))  and ($lead1 = mysql_fetch_array($leader1)))

  {
  echo "<tr>";
  echo "<td>" . $res1['firstname'] . "</td>";
  echo "<td>" . $res1['lastname'] . "</td>";
  echo "<td>" . $res1['dept_name'] . "</td>";
  echo "<td>" . $res1['title'] . "</td>";
echo "<td>"  . $res1['rolename'] . "</td>";
echo "<td>"  . $lead1['firstname'] . "</td>";
echo "<td>"  . $lead1['lastname'] . "</td>";
echo  "<td>" .'<input type="checkbox" name="userid" value='.$res1['userid'].'>'."</td>";
  echo "</tr>";
  }

    if ($user2 !== 0){

    $third = mysql_query("select userid from dept_user where lead_id=$user2");

while($res2 = mysql_fetch_array($third)) {

 $user3 = $res2['userid'];

 echo "<br/>";

 if ($user3 !== 0){


 $display3 = mysql_query("Select user.firstname, user.lastname, department.dept_name, job_title.title, role.rolename, user.userid From user Inner Join  dept_user On user.userid = dept_user.userid Inner Join  department On department.dept_id = dept_user.dept_id Inner Join  job_title On job_title.title_id = user.titleid Inner Join  role On role.roleid = user.roleid Where user.userid = $user3"); 

    $leader2 = mysql_query("Select firstname, lastname From user Inner Join  dept_user On user.userid = dept_user.lead_id  Where dept_user.lead_id = $user2");

while(($row = mysql_fetch_array($display3)) and ($lead2 = mysql_fetch_array($leader2)))


  {

  echo "<tr>";
  echo "<td>" . $row['firstname'] . "</td>";
  echo "<td>" . $row['lastname'] . "</td>";
  echo "<td>" . $row['dept_name'] . "</td>";
  echo "<td>" . $row['title'] . "</td>";
echo "<td>"  . $row['rolename'] . "</td>";
echo "<td>"  . $lead2['firstname'] . "</td>";
echo "<td>"  . $lead2['lastname'] . "</td>";
echo  "<td>" .'<input type="checkbox" name="userid" value='.$row['userid'].'>'."</td>";
  echo "</tr>";
  }

}
    }
}
}
}

}
}
echo"</table>";
?>

assign_training_exec.php

<?php
include('include.php'); 
    include('config.php');
    require_once('auth.php');
    session_start();


$user[]= clean($_POST['userid']);
    $name = clean($_POST['name']);
    $date = clean($_POST['sdate']);
$month = substr($date, 0 ,2);
 $day= substr($date, 3, -5); 
$yr = substr($date, 6); 
$dash = "-";
$date_str = ($yr.$dash.$month.$dash.$day);


$m_name = $_SESSION['SESS_FIRST_NAME'];

   foreach ($user as $user_array){
    $insert_query = "INSERT INTO course_detail(userid, course_id, date_assign, owner) VALUES('$user_array','$name','$date_str', '$m_name')"; 
    $insert = mysql_query($insert_query); 
}



    if($insert_buffer) {

                exit();
    }else {
        die("Query failed");
    }

?>

Ответы [ 5 ]

0 голосов
/ 24 ноября 2010

Спасибо всем вам .. Я пытался применить массив к имени ранее, но не сработал. на этот раз я удалил чистую функцию. это хорошо работает и сохранить в базе данных. но с сообщением об ошибке "запрос не выполнен". это можно исправить, только последний код .. спасибо ребята ..

0 голосов
/ 23 ноября 2010

Изменить эту строку в * member_table.php *:

(текущая строка:)

echo  "<td>" .'<input type="checkbox" name="userid" value='.$row1['userid'].'>'

изменить на:

echo  "<td>" .'<input type="checkbox" name="userid[]" value='.$row1['userid'].'>'

[] в атрибуте имени входа позволяет выполнять итерацию по нему.

0 голосов
/ 23 ноября 2010

Я ничего не могу сделать из вашего текста, но наиболее распространенной ошибкой, вероятно, является название флажков. Добавьте «[]» к их имени, и PHP автоматически преобразует его в массив со всеми проверенными значениями.

Изменение

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

до

<input type="checkbox" name="the_name[]">
0 голосов
/ 23 ноября 2010

Вы должны проверить, существует ли массив. Если ни один из флажков не установлен, в массиве $ _POST не будет записи.

0 голосов
/ 23 ноября 2010
// this assigns the result of the clean() to the new end element of the array
// $user[] = clean($_POST['userid']);
// 
// should be more like:
$user = array_clean($_POST['userid']);

Я не знаком с вашим clean (), но вам нужно использовать функцию, возвращающую массив, вместо одного значения. Метод clean (), который вы используете, может работать как с массивами, так и со скалярами, но если нет, попробуйте следующее:

function array_clean( $input_array ) {
   $clean_array = new array();
   if( !is_array($input_array) ) {
    $clean_array[] = clean($input_array);
    return $clean_array;
   }
   foreach( $input_array as $key => $value ) {
      $clean_array[$key] = clean($value);
   }
    return $clean_array;
}

Кроме того, на что указал Родольф, вам нужно добавить [] к полям, которые вы хотите вернуть в виде массива (спасибо за замечание, Родольф) ...

while( /*...*/ ) {
   //...
   echo  "<td>" .'<input type="checkbox" name="userid[]" value='.$row1['userid'].'>'."</td>";
   //...
}
enter code here
...