Home >Backend Development >PHP Tutorial >关于退选课程的代码,系统提示未定义变量。

关于退选课程的代码,系统提示未定义变量。

WBOY
WBOYOriginal
2016-06-23 14:10:34867browse

退选课程提交后,系统提示错误,第15、35、38行有未定义的变量“xuehao” 请问我应该怎么修改?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>退选课题</title></head><body><?php //######################退选课题界面3########################## include "config.php"; include "header.php";?><?php extract($_POST);        $query="select * from $student_table where xuehao='".$xuehao."'";		mysql_query("set names 'GB2312'");		$result=mysql_query($query);		$row=mysql_fetch_array($result);		$id=$row['id'];		$query1="select number as sn,surplus as ssn from $jiaoshi_table where id='$id'";		mysql_query("set names 'GB2312'");		$result1=mysql_query($query1);		$row1=mysql_fetch_array($result1);		if($row1['sn']==1)		{		    $query2=mysql_query("update $jiaoshi_table set xuehao='未选' where id='$id'");			$query3=mysql_query("update $jiaoshi_table set surplus=surplus+1 where id='$id'");		}		else		{		     if(($row1['sn']-$row1['ssn'])==1)			     $query7=mysql_query("update $jiaoshi_table set xuehao='未选' where id='$id'");			 else		     	$query6=mysql_query("update $jiaoshi_table set xuehao=replace(xuehao,concat('".$xuehao."','\n'),'') where id='$id'");			 $query8=mysql_query("update $jiaoshi_table set surplus=surplus+1 where id='$id'");			    $query5="update $student_table set id=0 where xuehao='".$xuehao."'";		mysql_query("set names 'GB2312'");		$result5=mysql_query($query5);		if($result5==true)		{		   echo"<p align=\"center\"><font color=\"#FF0000\"><b><big>退选课题成功!</big></b></font>";		   echo "<meta http-equiv=\"refresh\" content=\"2;url=back_keti.php\">";		   exit;	     }		 else		 {           echo"<p align=\"center\"><font color=\"#FF0000\"><b><big>退选出错,请返回重新退选</big></b></font></p>";           echo "<meta http-equiv=\"refresh\" content=\"1;url=back_keti.php\">";            exit;         }		 }?><?php include "foot.php";?></body></html>


回复讨论(解决方案)

看你前一个页面的form表单都有什么

看你前一个页面的form表单都有什么

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>退选课题</title><style type="text/css"><!--.STYLE1 {font-size: 14px}--></style></head><body><?php //######################退选课题界面2##########################  include "config.php";  include "admin_header.php"; ?> <?php extract($_POST);  if ($xuehao=="" || $id=="")  {	echo"<p align=\"center\"><font color=\"#FF0000\"><b><big>请把信息填写完整。</big></b></font></p>";	echo "<meta http-equiv=\"refresh\" content=\"1;url=back_keti.php\">";	exit;	 }       else    $query="select * from $student_table where xuehao='$xuehao'"; mysql_query("set names 'GB2312'"); $result=mysql_query($query); $row=mysql_fetch_array($result); if($row==0) {	echo"<p align=\"center\"><font color=\"#FF0000\"><b><big>你的输入有误,请重新输入。</big></b></font></p>";	echo "<meta http-equiv=\"refresh\" content=\"2;url=back_keti.php\">";    exit; }  $query="select id as sm from $student_table where xuehao='$xuehao'"; mysql_query("set names 'gb2312'"); $result=mysql_query($query); $row=mysql_fetch_array($result); if($row['sm']==0) {	echo"<p align=\"center\"><font color=\"#FF0000\"><b><big>你还没有选择课题!</big></b></font></p>";	echo "<meta http-equiv=\"refresh\" content=\"2;url=back_keti.php\">";    exit; }   $query="select * from $jiaoshi_table where id='$id'"; mysql_query("set names 'gb2312'"); $result=mysql_query($query); $row=mysql_fetch_array($result); if($row==0) {	echo"<p align=\"center\"><font color=\"#FF0000\"><b><big>课题号不存在,请重新输入!</big></b></font></p>";	echo "<meta http-equiv=\"refresh\" content=\"2;url=back_keti.php\">";    exit; } ?><table width="700" border="0" cellspacing="1" cellpadding="0" bgcolor="#333333" align="center">  <tr>   <td width="78" height="30" bgcolor="#FFFFFF">       <div align="center" class="text">         <p class="STYLE1">学生学号</p>      </div>    </td>    <td width=97 height="30" bgcolor="#FFFFFF">       <div align="center" class="STYLE1">学生姓名</div>    </td>    <td width="329" height="30" bgcolor="#FFFFFF">     <div align="center" class="STYLE1"> 课题名称 </div>    </td>    <td width=106 height="30" bgcolor="#FFFFFF">       <div align="center" class="STYLE1">指导教师</div>    </td>    <td width=84 height="30" bgcolor="#FFFFFF">     <div align="center" class="STYLE1">职称</div>    </td>	<td width=84 height="30" bgcolor="#FFFFFF">     <div align="center" class="STYLE1">退选</div>    </td>  </tr>   <?php   $n=0;    $query=mysql_query("select * from $jiaoshi_table,$student_table where $jiaoshi_table.id=$student_table.id and $student_table.xuehao='$xuehao'");   mysql_query("set names 'gb2312'");   while($row=mysql_fetch_array($query)){        if(($n%2)!='0'){ 	  echo "<tr bgcolor=#FFFFff>";}	  else{	  echo "<tr bgcolor=#E4E4E4>";	  }     echo"	 <td   height='22' class='STYLE1'> <div align='center'>".$row['xuehao']."</div></td>	 <td   height='22'> 		<div align='center' class='STYLE1'>".$row['name']."</div></td>    <td   height='22' class='STYLE1'> <div align='center'>".$row['subject']."</div></td>    <td   height='22' class='STYLE1'> <div align='center'>".$row['teacher']."</div></td>	<td   height='22' class='STYLE1'> <div align='center'>".$row['zhicheng']."</div></td>	<td   height='22' class='STYLE1'><div align='center'>		<a href=back_keti2.php?xuehao=".$row['xuehao']." >退选</a></div></td>  </tr> ";   $n++;   } ?></table> <p><?php include "foot.php";?>

退选
兄弟,这不是GET提交吗?那边用POST接受???会出问题吧

退选
兄弟,这不是GET提交吗?那边用POST接受???会出问题吧 惭愧啊,意思是我把POST改成GET?

要是改了的话,back_keti2.php中其他的变量就没发获取了吧。
我看了一下,back_keti2.php里除了变量$xuehao也没什么其他的了。
改一下试试吧,我认为应该可以用

要是改了的话,back_keti2.php中其他的变量就没发获取了吧。
我看了一下,back_keti2.php里除了变量$xuehao也没什么其他的了。
改一下试试吧,我认为应该可以用 我试了一下,好像不对,什么都不显示了。

你怎么改的,改完后的代码发出来看看。

在back_keti2.php先var_dump一下$_GET吧。。
PS: 我好奇,退课的页面只传了一个学号变量,back_keti2.php怎么知道要退哪门课程

你怎么改的,改完后的代码发出来看看。 我不懂语法,只是把POST改为了GET。正确的语句应该是怎样的?

echo "";
这句话是自动跳转的意思。
我估计是你成功了。但是看不到成功。因为成功之后接着马上就跳到back_keti.php了

echo "";
这句话是自动跳转的意思。
我估计是你成功了。但是看不到成功。因为成功之后接着马上就跳到back_keti.php了 没有,它就停留在那一页,地址栏里是back_keti2.php?xuehao=我输入的学号
我就是把extract($_POST);改成extract($_GET);对吗?

那么改是对的,那么现在还报错吗

  var_dump($_GET);
?>
接受界面头部加一个这个,看有没有结果

那么改是对的,那么现在还报错吗 不报错了,但是页面是空白的,什么也不显示。再查询一下,发现退选的课程还在。


那么改是对的,那么现在还报错吗 不报错了,但是页面是空白的,什么也不显示。再查询一下,发现退选的课程还在。 改了之后,结果是这样的

array (size=1)  'xuehao' => string '我输入的学号' (length=9)

获取值那里应该都没有错了。
问题就在第二页的几个SQL语句上了吧。
没走到最下面的if语句。
中间的sql语句不清楚变量,看不懂。

还是有问题,谁能帮我解决解决~~

等了两天了,继续等。

extract($_REQUEST);
$_POST 和 $_GET 的内容都包括在 $_REQUEST 中,没有特别的要求,不需要分得那么细

你只是 退选
只传递了学号,并没有传递课程

并没有看到你是如何实现“退选”的代码

extract($_REQUEST);
$_POST 和 $_GET 的内容都包括在 $_REQUEST 中,没有特别的要求,不需要分得那么细

你只是 退选
只传递了学号,并没有传递课程

并没有看到你是如何实现“退选”的代码 我退选的代码就是那几条update语句,貌似就是我第15,35,38行的问题,总是提示我“Undefined variable:xuehao”是不是我的书写格式有问题?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn