佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 971|回复: 17

PHP 疑问

[复制链接]
发表于 25-11-2013 12:58 PM | 显示全部楼层 |阅读模式
我做着一个page,点进去后是可以下comment的,可是每当进去的第一次会出error,第二次就不会了,到底是哪里出了问题,我想在点进去时的第一次不会有自动跑出comment先,因为每次进去的第一次会有error后而留下一个空的comment..
<?php session_start(); ?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
Enter your comments:<br>
<textarea name="comments" cols="40" rows="10" method="post" id="comments"></textarea><br>
<input type="submit" name="submit" value="Submit" method="post" value="Submit Form">
</form>
<form name="signup" method="POST" action="pdmenu.php">
<input type="submit" name="MainMenu" value="Main Menu" method="post" value="Submit Form">
</form>

<font size=17><b>Comments</b></font>

<br>
<?php
        if (isset($_SESSION['name']))
        $ar=fopen("myfile1.txt","a") or
    die("Problems in opening the file");
        fputs($ar,"<table border = 0 cellspacing = 0 width=100%>");
        fputs($ar,"<tr style='background-color:#33FF00;'><td>");
        fputs($ar,"<table align='right'><tr><td>");
        fputs($ar,date("d/m/Y"));
        fputs($ar,"</td></tr></table>");
        fputs($ar,"\n");
        fputs($ar,$_SESSION['name']);
        fputs($ar,"\n");
        fputs($ar,"</td></tr></table>");
        fputs($ar,$_REQUEST['comments']);
        fputs($ar,"\n");
        fputs($ar,"\n");
        fclose($ar);
?>
<?php
$ar=fopen("myfile1.txt","r") or
die("Problens in opening the file");
while(!feof($ar))
{
$line=fgets($ar);
$linenew=nl2br($line);
echo $linenew;
}
fclose($ar);
?>
这是我的代码


第一次点进去

第一次点进去

当留下comment后submit

当留下comment后submit
回复

使用道具 举报


ADVERTISEMENT

发表于 25-11-2013 01:19 PM | 显示全部楼层
去看你的Comments.php的第27行,看你做了什么。你应该是尝试Access某个Array,并且用“comment”作为index。Error Message已经写得很清楚了,你还看不明白吗?
回复

使用道具 举报

 楼主| 发表于 25-11-2013 01:37 PM | 显示全部楼层
geekman 发表于 25-11-2013 01:19 PM
去看你的Comments.php的第27行,看你做了什么。你应该是尝试Access某个Array,并且用“comment”作为index。 ...

我大概明白一点而已,就是每当我们点进去时comment.php会自动拿comment了,因为里面没东西,就error对吗?
回复

使用道具 举报

发表于 25-11-2013 01:57 PM | 显示全部楼层
是呀,很简单的问题,if(isset($_REQUEST['comments'])) 。。。
回复

使用道具 举报

 楼主| 发表于 25-11-2013 02:05 PM | 显示全部楼层
rcyaw2 发表于 25-11-2013 01:57 PM
是呀,很简单的问题,if(isset($_REQUEST['comments'])) 。。。

原来如此。isset的意思是只?
回复

使用道具 举报

发表于 25-11-2013 02:58 PM | 显示全部楼层
shern91 发表于 25-11-2013 01:37 PM
我大概明白一点而已,就是每当我们点进去时comment.php会自动拿comment了,因为里面没东西,就error对吗? ...

问题是那个Array里面并没有“comment”这个element,所以才会产生那个Error。原因可能是Array尚未被Initialized。
回复

使用道具 举报

Follow Us
 楼主| 发表于 25-11-2013 04:24 PM | 显示全部楼层
rcyaw2 发表于 25-11-2013 01:57 PM
是呀,很简单的问题,if(isset($_REQUEST['comments'])) 。。。

我放了,虽然不会有error...可是跑出一大堆warning出来
<?php
        if (isset($_SESSION['name']))
        if (isset($_REQUEST['comments']))
        $ar=fopen("myfile1.txt","a" or
    die("roblems in opening the file";
        fputs($ar,"<table border = 0 cellspacing = 0 width=100%>";
        fputs($ar,"<tr style='background-color:#33FF00;'><td>";
        fputs($ar,"<table align='right'><tr><td>";
        fputs($ar,date("d/m/Y");
        fputs($ar,"</td></tr></table>";
        fputs($ar,"\n";
        fputs($ar,$_SESSION['name']);
        fputs($ar,"\n";
        fputs($ar,"</td></tr></table>";
        fputs($ar,$_REQUEST['comments']);
        fputs($ar,"\n";
        fputs($ar,"\n";
        fclose($ar);
?>



回复

使用道具 举报

 楼主| 发表于 25-11-2013 04:25 PM | 显示全部楼层
geekman 发表于 25-11-2013 02:58 PM
问题是那个Array里面并没有“comment”这个element,所以才会产生那个Error。原因可能是Array尚未被Initi ...

那请问大大要怎么解决?
回复

使用道具 举报


ADVERTISEMENT

发表于 25-11-2013 07:07 PM | 显示全部楼层
shern91 发表于 25-11-2013 04:25 PM
那请问大大要怎么解决?

我都不知道你在Comments.php的第27行做了什么,怎么帮你?
回复

使用道具 举报

 楼主| 发表于 25-11-2013 07:27 PM | 显示全部楼层
geekman 发表于 25-11-2013 07:07 PM
我都不知道你在Comments.php的第27行做了什么,怎么帮你?

其实是27行的我是假设是这样,我们写了comment后submit才出现comment,可是当我第一次进那个comment.php时有出error,因为是空的,它读不到有任何字,应该是那样..我想解决掉的时,我第一次进去comment.php时不会自动读comment先,没有的话会出现error和跑出空的一行comment出来...
回复

使用道具 举报

发表于 26-11-2013 09:46 AM | 显示全部楼层
shern91 发表于 25-11-2013 07:27 PM
其实是27行的我是假设是这样,我们写了comment后submit才出现comment,可是当我第一次进那个comment.php时 ...

那你应该先检测Comment是否是空的,如果不是才将它显示出来,如果不存在就略过,而不是不管它存不存在都进行显示的Function啊。
回复

使用道具 举报

 楼主| 发表于 26-11-2013 05:40 PM | 显示全部楼层
geekman 发表于 26-11-2013 09:46 AM
那你应该先检测Comment是否是空的,如果不是才将它显示出来,如果不存在就略过,而不是不管它存不存在都进 ...

哦,对hor...明白明白..我试看..可以PM你问你一些PHP问题吗?
回复

使用道具 举报

发表于 27-11-2013 09:25 AM | 显示全部楼层
shern91 发表于 26-11-2013 05:40 PM
哦,对hor...明白明白..我试看..可以PM你问你一些PHP问题吗?

有什么问题就在这里讨论好了,大家也可以从中学习。如果是基于什么商业机密的那就别了,我不想承担任何为别人保守秘密的责任,万一你们公司出了内鬼,我还成了你们的第一嫌疑对象,那不是很冤?
回复

使用道具 举报

 楼主| 发表于 27-11-2013 12:01 PM | 显示全部楼层
geekman 发表于 27-11-2013 09:25 AM
有什么问题就在这里讨论好了,大家也可以从中学习。如果是基于什么商业机密的那就别了,我不想承担任何为 ...

放心,不会..因为我要问的东西比较不一样了,所以打算PM你,先看一下我一下的代码,关于数据库的

<html><head><title>Edit Own data</title></head>
<body><h1 align="center"><u>EDIT OWN DATA</u></h1><center>
<?php session_start();
/* Change next two lines */
if(isset($_SESSION['name']))
if(isset($_SESSION['pass']))
$db='miniproject';
$link = mysql_connect('localhost', 'root','');
if (! $link)
die(mysql_error());
mysql_select_db($db , $link)
or die("Couldn't open $db: ".mysql_error());
$result = mysql_query( "SELECT * FROM check_login WHERE name = ".$_SESSION['name']." AND pass = ".$_SESSION['pass']." " )
or die("SELECT Error: ".mysql_error());
$count=mysql_fetch_array($result);
//$num_rows = mysql_fetch_array($result);
//print "$_SESSION['name']";
//print "<table width=300 border=1>\n";
//while ($get_info = mysql_fetch_row($result)){
//print "<tr>\n";
foreach ($get_info as $field)
//print "\t<td>$field</td>\n";
//print "</tr>\n";

if($count==1)
        {
         header("location:pdchange_form.php");
        }
//else
//{
//header("location:pdmemu.php");
//}
//print "</table>\n";
mysql_close($link);
?>

我check了很多次,我的database,table名称没写错,可是每次得到的就是

SELECT Error: Unknown column 'shern91' in 'where clause'

这个打算查看,现在是"shern91"登陆着,就显示他的资料,那样...


回复

使用道具 举报

发表于 27-11-2013 01:14 PM | 显示全部楼层
再次强调,郑重、凝重、坚毅、和诚心诚意的强调,发代码时请用代码模式,也就是你发文时,上面的Menu里面,那个 〈 〉 的符号。你这样一大坨黏乎乎的,看得很幸苦的,我是分文不收的为你解答疑惑,那你至少该把你的代码整理得容易看一点吧?说真的,我实在没义务来这里自找难受啊。
  1. if(isset($_SESSION['name']))
  2. if(isset($_SESSION['pass']))
复制代码
你的Coding Style真的很让人暴走,为必须接手你的代码的同事(抑或者导师?)致以万二分的同情与悼念。

我想问清楚一下,你到底是要做
  1. if(isset($_SESSION['name']))
  2. {
  3.    if(isset($_SESSION['pass']))
  4.     {

  5.     }
  6. }
复制代码
还是
  1. if(isset($_SESSION['name'] && isset($_SESSION['pass']))
  2. {

  3. }
复制代码
两者是有差别的。

安妮薇(anyway),这不是重点。重点在于:
  1. $result = mysql_query( "SELECT * FROM check_login WHERE name = ".$_SESSION['name']." AND pass = ".$_SESSION['pass']." " ) or die("SELECT Error: ".mysql_error());
复制代码
你的 $_SESSION['name'] 和 $_SESSION['pass'] 都是string吧?在SQL里面,string是要用text qualifier包容着的,你可以用 " (double quote)或者 ' (single quote)当作 text qualifier,视乎哪个比较适当。如果你的string argument没有text qualifier,SQL 会把它当作是 Column Name 来处理的。

我建议你看看这个:http://en.wikipedia.org/wiki/Programming_style

这或许会挽救你将来不会被你的同事们合力绑起来架在BBQ炉上烤。

本帖最后由 geekman 于 27-11-2013 01:27 PM 编辑

回复

使用道具 举报

 楼主| 发表于 27-11-2013 01:55 PM | 显示全部楼层
geekman 发表于 27-11-2013 01:14 PM
再次强调,郑重、凝重、坚毅、和诚心诚意的强调,发代码时请用代码模式,也就是你发文时,上面的Menu里面, ...

我知道你是善心帮我的,先谢谢你,首先不好意思,我的代码太乱,我要做的就是,login的时候,create一个session是给username的,然后当我要去edit我身的资料时,要拿($_SESSION['pass'])跟database对比,如果对了,才显示"shern91"的本人资料...
  • if(isset($_SESSION['name'] && isset($_SESSION['pass']))
  • {
  • }

我要做的应该是以上的..谢谢你

回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 27-11-2013 01:57 PM | 显示全部楼层
geekman 发表于 27-11-2013 01:14 PM
再次强调,郑重、凝重、坚毅、和诚心诚意的强调,发代码时请用代码模式,也就是你发文时,上面的Menu里面, ...

谢谢你的郑重、凝重、坚毅、和诚心诚意的强调,我刚刚找到代码模式
回复

使用道具 举报

 楼主| 发表于 28-11-2013 12:57 AM | 显示全部楼层
geekman 发表于 27-11-2013 01:14 PM
再次强调,郑重、凝重、坚毅、和诚心诚意的强调,发代码时请用代码模式,也就是你发文时,上面的Menu里面, ...

已经解决了,谢谢大家
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 13-9-2025 03:04 AM , Processed in 0.133931 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表