2016-03-05 117 views
0

我想從下拉列表和值索引中獲取值。循環每次以不同的長度運行,例如一個時間循環運行5次並創建5行。下次可能是30次,並創建30行。每行有2個下拉列表。請幫助我如何獲得每個下拉列表和索引的價值。 這裏是代碼:在循環中從php下拉列表中獲取值?

' 
    <div> 
       <form name="viewdata" method="post" onChange="this.form.submit()"> 
        <table> 
         <tr colspan=2> 
        <td><input type="checkbox" name="BSSE" value="BSSE" >BSSE&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
        <td><input type="checkbox" name="BCS" value="BCS" >&nbsp&nbsp&nbsp&nbsp&nbsp&nbspBCS&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
        <td><input type="checkbox" name="BSTN" value="BSTN" >&nbsp&nbsp&nbsp&nbsp&nbsp&nbspBSTN&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
       </tr> 
       <tr>      
        <td><input type="checkbox" name="MTH" value="MTH" >MTH&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
        <td><input type="checkbox" name="MGT" value="MGT" >&nbsp&nbsp&nbsp&nbsp&nbsp&nbspMGT&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
        <td><input type="checkbox" name="EEE" value="EEE" >&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEEE&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
        <td><input type="checkbox" name="CSC" value="CSC" >&nbsp&nbsp&nbsp&nbsp&nbsp&nbspCSC&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
        <td><input type="checkbox" name="HUM" value="HUM" >&nbsp&nbsp&nbsp&nbsp&nbsp&nbspHUM&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input></td> 
       </tr> 
       <tr> 
        <td> 
       <button type="submit" class="btn btn-success btn-sm">View</button> 
      </td> 
       </tr> 
        </table> 
       </form> 
      </div> 
      <form method = "post"> 
      <table class="table table-striped table-bordered table-hover" id="dataTables-example"> 

<?php 
$programs_title = array(); 
$programs_id = array(); 


$courses_title = array(); 
$courses_id = array(); 

$classes = array(); 
$time_table = array(); 

$sections_id = array(); 
$faculty_selected_course = array(); 

$allocation1 = array(); 
$allocation2 = array(); 
$course_loop_array = array(); 

if(isset($_POST['BSSE'])) {$programs_title[]=$_POST['BSSE'];} 
if(isset($_POST['BCS'])) {$programs_title[]=$_POST['BCS'];} 
if(isset($_POST['BSTN'])) {$programs_title[]=$_POST['BSTN'];} 

if(isset($_POST['MTH'])) {$courses_id[]=$_POST['MTH'];} 
if(isset($_POST['MGT'])) {$courses_id[]=$_POST['MGT'];} 
if(isset($_POST['EEE'])) {$courses_id[]=$_POST['EEE'];} 
if(isset($_POST['CSC'])) {$courses_id[]=$_POST['CSC'];} 
if(isset($_POST['HUM'])) {$courses_id[]=$_POST['HUM'];} 

$conn = mysql_connect("localhost","root","") or die ("cannot connect"); 
mysql_select_db('dims') or die("cannot connect to database"); 

$sql = "SELECT * FROM `user` WHERE email_id='[email protected]'"; 
$result = mysql_query($sql); 
while($row1 = mysql_fetch_array($result)){ 
     $other_faculty[] = $row1['first_name']; 
} 

foreach ($programs_title as $prog) { 

$sql = "SELECT * FROM program WHERE program_title = '$prog'"; 
$result1 = mysql_query($sql); 

if(is_null($result1)){ 
    echo die(mysql_error()); 
} 

while($row = mysql_fetch_array($result1)){ 
    $programs_id[] = $row['program_id']; 
} 

} 

foreach ($programs_id as $prog_id) { 
$sql = "SELECT * FROM time_table WHERE program_id = '$prog_id'"; 
$result = mysql_query($sql); 

if(is_null($result)){ 
    echo die(mysql_error()); 
} 

while($row = mysql_fetch_array($result)){ 
    if(is_array($sections_id)){ 
     if(!in_array($prog_id."-".$row['section_id'],$sections_id)){ 
     $sections_id[] = $prog_id."-".$row['section_id']; 
    } 
    } 
    else{ 
     $sections_id[] = $prog_id."-".$row['section_id']; 
    } 


} 

} 

$section_loop = 1; 

foreach ($sections_id as $class) { 

    $courses = array(); 

    $split = preg_split('/-/', $class); 

    $program = $split[0]; 
    $section = $split[1]; 

    $sql = "SELECT * FROM time_table WHERE program_id = '$program' AND section_id = '$section'"; 
    $result = mysql_query($sql); 

    if(is_null($result)){ 
    echo die(mysql_error()); 
    } 

    while($row = mysql_fetch_array($result)){ 
     if(is_array($courses)){ 
      if(!in_array($row['course_code'], $courses)){ 
      $courses[] = $row['course_code']; 
      } 
     } 
     else{ 
      $courses[] = $row['course_code']; 
     } 

    } 

    $sql = "SELECT * FROM program WHERE program_id = '$program'"; 
    $result = mysql_query($sql); 

    if(is_null($result)){ 
    echo die(mysql_error()); 
    } 

    while($row = mysql_fetch_array($result)){ 
     $program = $row['program_title']; 
    } 

    $sql = "SELECT * FROM section WHERE section_id = '$section'"; 
    $result = mysql_query($sql); 

    if(is_null($result)){ 
    echo die(mysql_error()); 
    } 

    while($row = mysql_fetch_array($result)){ 
     $section = $row['section_title']; 
    } 

    if(!in_array($program."-".$section, $classes)){ 
     $classes[] = $program."-".$section; 
    } 

    /*foreach ($courses_id as $course) { 
     if(!in_array($program."-".$section."-".$course, $time_table)){ 
     $time_table[] = $program."-".$section."-".$course; 
    } 
    }*/ 
    ?> 

    <thead> 
     <tr class="odd gradeX"> 
      <th colspan=6><?php echo $program."-".$section."<br>"; ?></th> 
     </tr> 

     <tr class="odd gradeX"> 
      <th>#</th> 
      <th>Course Code</th> 
      <th>Course Title</th> 
      <th>Class/Lab</th> 
      <th>Faculty</th> 
      <th>Other Faculty</th> 
     </tr> 
    </thead> 
<?php 
    $course_loop =1; 

    foreach ($courses as $course) { 
     unset($faculty_selected_course); 
      if($course!='JUMMA'){ 
       foreach ($courses_id as $value) { 
        if(stristr($course, $value)){ ?> 
    <tbody> 
<?php 

         $sql = "SELECT * FROM course WHERE course_code='$course'"; 
         $result2 = mysql_query($sql); 

         if(is_null($result2)){ 
          echo die(mysql_error()); 
         } 

         while($row2 = mysql_fetch_array($result2)){ 
          $course_title = $row2['course_title']; 
          $course_credit_hour = $row2['course_credit_hour']; 
         } 

         $sql = "SELECT * FROM faculty_course_choice WHERE course_choice1='$course' OR course_choice2='$course' OR course_choice3='$course'"; 
         $result3 = mysql_query($sql); 

         if(is_null($result3)){ 
          echo die(mysql_error()); 
         } 

         while($row3 = mysql_fetch_array($result3)){ 
          if($course == $row3['course_choice1']){ 
           $course_priority = 1; 
           $user = $row3['user_id']; 
          } 

          elseif($course == $row3['course_choice2']){ 
           $course_priority = 2; 
           $user = $row3['user_id']."<br>"; 
          } 

          elseif($course == $row3['course_choice3']){ 
           $course_priority = 3; 
           $user = $row3['user_id']."<br>"; 
          } 

          $sql = "SELECT * FROM `user` WHERE user_id='$user'"; 
          $result4 = mysql_query($sql); 

          while($row4 = mysql_fetch_array($result4)){ 
           $faculty_selected_course[] = $course_priority."::".$row4['first_name']; 
          } 
         } 
         again: 
         ?> 
         <tr class="odd gradeX"> 
         <th><?php echo $course_loop++; ?></th> 
         <th><?php echo $course; ?></th> 
         <th><?php echo $course_title; ?></th> 
         <th><?php 
         if($course_credit_hour==3){ 
          echo "Class"; 
          $allocation1 [] = $program."-".$section."-".$course."-Class"; 
          $allocation2 [] = $program."-".$section."-".$course."-Class"; 
         } 
         elseif($course_credit_hour==4){ 
          echo "Lab"; 
          $allocation1 [] = $program."-".$section."-".$course."-Lab"; 
          $allocation2 [] = $program."-".$section."-".$course."-Lab"; 
          $course_credit_hour--; ?> 
         </th> 

         <th> 
          <select name= "allocation1[]" class="form-control "> 
           <option>Select Faculty</option> 
           <?php 
           foreach ($faculty_selected_course as $faculty) { ?> 
           <option><?php echo $faculty; ?></option> 
           <?php 
           } 
           ?> 
          </select> 
         </th> 

         <th> 
          <select name= "allocation2[]" class="form-control "> 
           <option>Select Other Faculty</option> 
           <?php 
           foreach ($other_faculty as $otherfaculty) { ?> 
           <option><?php echo $otherfaculty; ?></option> 
           <?php 
           } 
           ?> 
          </select> 
         </th> 

         </tr> 
         <?php goto again; 
         } 
         ?> 
         </th> 

         <th> 
          <select name= "allocation1[]" class="form-control "> 
          <option>Select Faculty</option> 
          <?php 
          foreach ($faculty_selected_course as $faculty) { ?> 
          <option><?php echo $faculty; ?></option> 
          <?php 
          } 
          ?> 
          </select> 
         </th> 

         <th> 
          <select name= "allocation2[]" class="form-control "> 
           <option>Select Other Faculty</option> 
          <?php 
          foreach ($other_faculty as $otherfaculty) { ?> 
          <option><?php echo $otherfaculty; ?></option> 
          <?php 
          } 
          ?> 
          </select> 
         </th> 

         </tr> 

         <?php 
        } 

       } 
      } 
    } 
    $get_index = $program."-".$section."-".$course_loop; 
    $course_loop_array [] = $get_index; 
} 
?> 

         <tr> 
          <th colspan="7" > 
           <button type="submit" class="btn btn-success btn-sm">Allocate</button> 
          </th> 
         </tr> 
         </tbody> 

           </table> 
          </form> 
<?php 

if(isset($_POST['allocation1'])){ 
$output = count($_POST['allocation1']); 
echo $output; 
foreach ($_POST['allocation1'] as $value) { 
    if($value == 'Select Other Faculty' OR $value == 'Select Faculty'){ 

    } 
    else{ 
     echo $value."<br>"; 
    } 

} 
} 
$allocation1 = $_POST['allocation1']; 
foreach ($allocation1 as $value) { 
    echo $value."<br>"; 
} 

foreach ($course_loop_array as $lue) { 
    echo $lue."<br>"; 
} 

?> 


       </div>' 

//循環結束

'

+0

在這個有很多的事情困惑我。首先,應該只用於表頭,不適用於低於頭的數據元素。爲什麼兩個選擇名稱都是同一個東西,爲什麼它們是數組名稱(名稱中的[]使得PHP接收到數組類型的POST數據時) - 這是否意味着有多行select元素?爲什麼前面帶有$的PHP變量樣式中的選擇名稱?爲什麼

+0

那麼你想要什麼 - 你想每個選擇的名稱是什麼? –

+0

兩個選擇的名字是不一樣的東西。一個選擇包含少數教員成員姓名,而另一個包含全部教員成員。可以從少數教員中選擇,也可以從所有教員名單中選擇,但不能同時選擇。並有多行。每行有2個選項(1個是教職員,2個是全體教員)。如果我在

回答

0

不完全知道你是問什麼,但代碼應該是這個樣子有道理:

<th> 
    <select name="first_allocation[<?=$rowId?>]"> 
     <option>Select Faculty</option> 
     <? foreach ($faculties as $faculty) { ?> 
      <option value="<?=$faculty?>"><?=$faculty?></option> 
     <? } ?> 
    </select> 
</th> 
<th> 
    <select name="second_allocation[<?=$rowId?>]"> 
     <option>Select Other Faculty</option> 
     <? foreach ($faculties as $faculty) { ?> 
      <option value="<?=$faculty?>"><?=$faculty?></option> 
     <? } ?> 
    </select> 
</th> 

這樣,當用戶提交表單時,您會收到類似這樣的內容:

$_POST = array(
    'first_allocation' = array(
     232 => 'BCS-IIIB-CSC509-Class', 
     372 => 'BCS-IIIB-CSC509-Class', 
     // ... 
    ), 
    'second_allocation' = array(
     232 => 'BCS-IIIB-CSC509-Class', 
     372 => 'BCS-IIIB-CSC509-Class', 
     // ... 
    ), 
); 

其中232和373是$ rowId的相應值,在外部循環的每次迭代中發生變化。

如果你已經有了選擇的院系和要標記它們的使用:

<option value="<?=$faculty?>"<?=($first_allocation[$rowId] === $faculty ? ' selected' : '')?>> 
    <?=$faculty?> 
</option> 
+0

這將工作在循環?我怎麼知道「first_allocation」屬於哪一行? – Shakeeb

+0

看我的編輯,只是正確地理解你的問題。還是我? –

0

你應該從name屬性值刪除美元符號,併爲兩列使用不同的名稱:

<select name="allocation1[]" ... 


<select name="allocation2[]" ... 

然後,當用戶提交表單,您可以訪問:

$allocations1 = $_POST['allocation1']; 
$allocations2 = $_POST['allocation2']; 

這些數組的索引表示行號減1(因爲它從零開始)。

0

這可能是你所追求的

主文件,也許「mainListOfStuff.php」你可以有這樣的事情

<form action="processForm.php" method="post"> 
    <table> 
     <tr> 
      <th>Main faculty members</th> 
      <th>Other factulty members</th> 
     </tr> 
     <!-- Start of your loop for table rows --> 
     <?php 
      // YOUR LOOP FOR THE ROWS OF THE TABLE 
      // My example loop for this explanation: for (var $i = 0; $i < count([SOME LENGTH OF ROWS]); $i++) { 
      // My example start of row: echo "<tr>"; 
     ?> 
       <td> 
        <select name="allocationMain[]" class="form-control mainFaculty"> 
         <option selected value="0">Not from this faculty</option> 
         <?php 
          foreach ($faculty_selected_course as $faculty) { 
           echo "<option value=\"". $faculty ."\">". $faculty ."</option>"; 
          } 
         ?> 
        </select> 
       </td><td> 
        <select name="allocationOther[]" class="form-control otherFaculty"> 
         <option selected value="0">Not from this faculty</option> 
         <?php 
          foreach ($other_faculty as $otherfaculty) { 
           echo "<option value=\"". $otherfaculty ."\">". $otherfaculty ."</option>"; 
          } 
         ?> 
        </select> 
       </td> 
     <!-- End of your loop for table rows --> 
     <?php 
      // My example end of row: echo "<tr>"; 
      } 
     ?> 
    </table> 
</form> 

可以清理上面的頁面「mainListOfStuff.php」通過把一些jQuery的說:「不從這個教師」當有人掉期選擇框的上面的代碼

<script> 
    $(function() { 
     $("select.otherFaculty").on("change keyup", function(){ // If they choose something in a row in the other faculty 
                   // Then change the main select to the first "0" value option 
      $(this).closest("tr").find("select.mainFaculty").val(0); 
     }); 
     $("select.mainFaculty").on("change keyup", function(){ 
      $(this).closest("tr").find("select.otherFaculty").val(0); 
     }); 
    }); 
</script> 

例這裏>交換所選擇的答案

然後在processForm.php你這樣做:

<?php 

    if (!isset($_POST["allocationMain"])) exit(); // If no data was submitted then stop the php script here. 


    $mainAllocations = $_POST["allocationMain"]; // Both of these arrays should be the same length 
    $otherAllocations = $_POST["allocationOther"]; // if the form was submitted properly 

    $chosenAllocations = []; 

    for($i = 0; $i < count($mainAllocations); $i++) { 
     if ($mainAllocations[$i] == 0) { // If they have not selected "Not from this faculty" for the main select column, 
              // then select the value in the other select column 
      $chosenAllocations[$i] = $otherAllocations[$i]; 
     } else { 
      $chosenAllocations[$i] = $mainAllocations[$i]; 
     } 
    } 

    // Use the $chosenAllocations for the rest of your PHP processing 

?>