2015-01-09 38 views
0

我正在尝试编写一个php脚本,该脚本通过首先创建while循环来查询用户注册的学期的数据库。然后我试图创建一个for循环,以确定他们注册的类的名称和级别。PHP For Loop收到一条通知:未定义索引

//USER ID 
$id=1; 

//SEMESTER QUERY 
$qry="SELECT * FROM semesters where mem_id='$id'"; 
$result=mysqli_query($con, $qry); 

    //GRAB VALUES FROM CURRENT SEMESTER 
    while ($row=mysqli_fetch_array($result)){ 
    $semesterID = $row[1]; 
    echo '<div id="s'.$semesterID.'">'; 

     //FOR LOOP TO GRAB ROWS['c1'] TO ['c7'] 
     for ($i = 1; $i <= 7; $i++) 
     { 
     $class = $row['c'.$i.'']; 

      //IF CLASS_ID IS VALID CONTINUE SEARCH 
      if ($class!=0){ 
      $qry="SELECT * FROM allclasses where class_id='$class'"; 
      $result=mysqli_query($con, $qry); 
      $row=mysqli_fetch_array($result); 
      $classname = $row[1]; 
      $classlvl = $row[2]; 
      echo ''.$classname.' '.$classlvl.''; 
      } 
     } 
    } 

数据库信息

的学期表由这样:

| mem_id [0] |semnum [1] | semname [2] | c1 [etc...] | c2 | c3 | c4 | c5 | c6 | c7 | 

在这个PHP脚本我想:

  • 抓住所有的学期对于特定的mem_id
  • 创建一个while循环抢row[1]semesterID本学期,然后呼应它
  • 创建一个for循环row['c7']抢列row['c1']当前学期
  • 检查如果列值不为零,发现价值,在所述allclasses表
  • 终于回声出classnameclasslvl

问题:

的代码实际工作的第一个for循环但后来它通过c7

显示c2一个Notice: Undefined Index我试图研究一个解决方案,但我只看到一个脚本尝试接收POST值这个通知.. 。他们建议使用isset并检查变量,但我不确定在这种情况下它将如何应用。

+0

你可以请求显示你的数据库表结构吗? –

+0

他有点在“数据库信息”学期表是这样组成...... – bish

回答

5

我觉得这条线会导致你的麻烦

$row=mysqli_fetch_array($result); 

它在你的子循环,你覆盖你的外循环的$row变量,因此它的列不可在运行2至7了。重命名其中一个。

+0

好吧,肯定,一秒 –

+0

哇..那个制定出来。感谢一群人,我不相信我错过了这一点。 –

+0

没问题。如果它对您有帮助,请接受答案,以向可能存在相同问题的其他用户显示这是针对您问题的解决方案。并且:快乐编码;) – bish