Javascript 在循环中从php中的下拉列表中获取值?
我想从下拉列表和值索引中获取值。循环每次以不同的长度运行,例如一次循环运行5次并创建5行。下一次可能是30次,并创建30行。每行有2个下拉列表。请帮助我如何获得每个下拉列表和索引的值。 以下是代码:Javascript 在循环中从php中的下拉列表中获取值?,javascript,php,arrays,post,foreach,Javascript,Php,Arrays,Post,Foreach,我想从下拉列表和值索引中获取值。循环每次以不同的长度运行,例如一次循环运行5次并创建5行。下一次可能是30次,并创建30行。每行有2个下拉列表。请帮助我如何获得每个下拉列表和索引的值。 以下是代码: ' <div> <form name="viewdata" method="post" onChange="this.form.submit()"> <table>
'
<div>
<form name="viewdata" method="post" onChange="this.form.submit()">
<table>
<tr colspan=2>
<td><input type="checkbox" name="BSSE" value="BSSE" >BSSE      </input></td>
<td><input type="checkbox" name="BCS" value="BCS" >      BCS      </input></td>
<td><input type="checkbox" name="BSTN" value="BSTN" >      BSTN      </input></td>
</tr>
<tr>
<td><input type="checkbox" name="MTH" value="MTH" >MTH      </input></td>
<td><input type="checkbox" name="MGT" value="MGT" >      MGT      </input></td>
<td><input type="checkbox" name="EEE" value="EEE" >      EEE      </input></td>
<td><input type="checkbox" name="CSC" value="CSC" >      CSC      </input></td>
<td><input type="checkbox" name="HUM" value="HUM" >      HUM      </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='hhh@comsats.edu.pk'";
$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>'
'
BSSE   
       
  nbsp nbsp nbsn nbsp nbsp nbsp nbsp
MTH
        
  nbsp nbsp nbsp nbsp nbsp受试者
  nbsp nbsp nbsp csc nbsp nbsp nbsp
  nbsp nbsp nbsp nbspHUM nbsp nbsp nbsp
看法
不完全确定您要的是什么,但代码应该是这样的:
<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>
其中232和373分别是$rowId的值,在外部循环的每次迭代中都会发生变化
如果您已经拥有所选的学院并希望将其标记为这样,请使用以下命令:
<option value="<?=$faculty?>"<?=($first_allocation[$rowId] === $faculty ? ' selected' : '')?>>
<?=$faculty?>
</option>
您应该从名称
属性值中删除美元符号,并为两列使用不同的名称:
<select name="allocation1[]" ...
<select name="allocation2[]" ...
这些数组的索引表示行号减去1(因为它以零开头)。这可能就是您要找的
主文件,可能是“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>
主要教员
其他工厂成员
不是从这个学院来的
不是从这个学院来的
当有人交换选择框时,您可以通过放入一些jQuery来清理上面的页面“mainListOfStuff.php”,该jQuery将所选答案交换为“notfromthefaculty”
<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>
$(函数(){
$(“select.otherFaculty”)。在(“change keyup”上,如果他们在其他faculty的行中选择了某个内容,则使用function(){//
//然后将主选择更改为第一个“0”值选项
$(this.nexist(“tr”).find(“select.main”).val(0);
});
$(“select.mainfuncil”)。打开(“更改键控”,函数(){
$(this.nexist(“tr”).find(“select.otherFaculty”).val(0);
});
});
以上代码示例如下>
然后在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
?>
这里面有很多东西让我很困惑。首先,应该只对表的标题使用,而不是对标题下的数据元素使用。为什么这两个select名称是相同的,为什么它们是数组名称(当PHP接收到一个数组类型的POST数据时,名称中带有[])-这是否意味着有多行select元素?为什么选择名称的样式是PHP变量,前面有$?为什么元素中没有包含值?那么您想要什么-您想要每个select的名称是什么?两个select名称不是一回事。一个选择包含少数教员姓名,而另一个选择包含所有教员姓名。可以从少数教员中进行选择,也可以从所有教员列表中进行选择,但不能同时从两个教员中进行选择。并且有多行。每行有2个选择选项(1是少数教员,2是所有教员)。如果我在中包含值,我会得到什么?如果您包含下面@Marco的答案所示的值,浏览器会将其作为$\u POST变量的值发送,并为所选选项选择“name”。现在我开始明白你的要求了。因此,他们需要能够从一个或另一个选择框中进行选择,但不是同时从两个选择框中进行选择,我明白了。现在就写下我认为是解决您问题的答案,很快就会发布:)这将在循环中起作用?我如何知道“第一次分配”属于哪一行?请参阅我的编辑,刚刚正确理解了您的问题。还是我?
<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>
<?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
?>