Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 级联下拉列表_Php_Csv_Menu_Cascading - Fatal编程技术网

Php 级联下拉列表

Php 级联下拉列表,php,csv,menu,cascading,Php,Csv,Menu,Cascading,我有一个表单,用户从下拉列表中选择课程,从下拉列表中选择位置,并手动在文本字段中填写日期 我需要让用户选择课程和地点,用户可以从可用日期列表中进行选择 我想使用CSV文件。我真的没有其他选择,因为我不能在网上有我们的本地数据库。这是从我们的数据库每周生成两次的内容 CSV文件只包含课程、地点和日期。例如: Course Location Date Dreamweaver Intro Minneapolis, MN 1/5/2015 Dreamweaver In

我有一个表单,用户从下拉列表中选择课程,从下拉列表中选择位置,并手动在文本字段中填写日期

我需要让用户选择课程和地点,用户可以从可用日期列表中进行选择

我想使用CSV文件。我真的没有其他选择,因为我不能在网上有我们的本地数据库。这是从我们的数据库每周生成两次的内容

CSV文件只包含课程、地点和日期。例如:

Course            Location        Date
Dreamweaver Intro Minneapolis, MN 1/5/2015
Dreamweaver Intro Minneapolis, MN 3/5/2015
Dreamweaver Intro Minneapolis, MN 5/5/2015
Illustrator Intro Orlando, FL     3/5/2015
Illustrator Intro Orlando, FL     1/5/2015
Illustrator Intro Orlando, FL     5/5/2015

我是PHP的基础,不知道从哪里开始。我发现很少有关于使用CSV文件的级联下拉菜单的信息。任何帮助都将不胜感激。

我相信CSV文件如下

Dreamweaver Intro Minneapolis, MN, 5/5/2015
Illustrator Intro Orlando, FL, 3/5/2015
说了你可以读每一行,把每一行分解成“,”。 这将导致类似数组的

array("Dreamweaver Intro Minneapolis", "MN", "3/5/2015");
为课程、地点和日期创建三个数组。继续将元素添加到单个列表中

使用列表生成下拉列表。示例代码如下所示:

<?php

generateDropdownFromCsv(
"Course,            Location,        Date
Dreamweaver Intro Minneapolis, MN, 1/5/2015
Dreamweaver Intro Minneapolis, MN, 3/5/2015
Dreamweaver Intro Minneapolis, MN, 5/5/2015
Illustrator Intro Orlando, FL,     3/5/2015
Illustrator Intro Orlando, FL,     1/5/2015
Illustrator Intro Orlando, FL,    5/5/2015");

function generateDropdownFromCsv($fileContent){
  $courses = array();
  $locations = array();
  $dates = array();

  foreach( explode( "\n", $fileContent ) as $eachLine ){
    $column = explode( ",", $eachLine );
    array_push( $courses, $column[0] );
    array_push( $locations, $column[1] );
    array_push( $dates, $column[2] );    
  }

  echo "<select>\n";

  foreach( $courses as $course ){
    echo "<option>" . trim($course) . "</option>\n";
  }

  echo "</select>\n";
  echo "<select>\n";

  foreach( $locations as $location ){
    echo "<option>" . trim($location) . "</option>\n";
  }

  echo "</select>\n";
  echo "<select>\n";

  foreach( $dates as $date ){
    echo "<option>" . trim($date) . "</option>\n";
  }

  echo "</select>\n";
}


?>

我们将使用
fgets()
逐行读取CSV文件,在while循环中,我们将收集选项列表值数组,如下所示:

<?php
$handle = fopen("path/to/your/inputfile.csv", "r");
$courses = array();
$locations = array();
$dates = array();
if ($handle) {
    $l = 0;
    while (($line = fgets($handle)) !== false) {
        if ($l === 0){
            //escaping the csv header line
            $l++;
            continue;
        }
        $options = explode("," $line);
        $courses[] = trim($options[0]);
        $locations[] = trim($options[1]);
        $dates[] = trim($options[2]);
        $l++;
    }
} else {
    echo "<h1>Error: Opening the file has been failed.</h1>";
} 
fclose($handle);
?>
<!-- HTML and inside a form-->
<select name="courses">
 <?php for ($i = 0; $i < count($courses); $i++): ?>
   <option value="<?php echo $courses[$i]; ?>"><?php echo $courses[$i]; ?></option>
 <?php endfor; ?>
</select>
<select name="locations">
 <?php for ($i = 0; $i < count($courses); $i++): ?>
   <option value="<?php echo $locations[$i]; ?>"><?php echo $locations[$i]; ?></option>
 <?php endfor; ?>
</select>
<select name="dates">
 <?php for ($i = 0; $i < count($courses); $i++): ?>
   <option value="<?php echo $dates[$i]; ?>"><?php echo $dates[$i]; ?></option>
 <?php endfor; ?>
</select>


你的CSV文件正确吗?i、 e它应该是明尼苏达州明尼阿波利斯市Dreamweaver Intro,2015年1月5日,换句话说,它每行应该有两个逗号!