2013-07-24 30 views
0

我有行4,5,6的問題,一切工作正常,數據正在發送到數據庫以及輸出結果,但我在加載頁面時收到此消息。再次php我的網站上的評論部分

Undefined index: name in C:\xampp\htdocs\xampp\site\comment.php on line 4 

Notice: Undefined index: comment in C:\xampp\htdocs\xampp\site\comment.php on line 5 

Notice: Undefined index: submit in C:\xampp\htdocs\xampp\site\comment.php on line 6 

感謝和任何幫助,將不勝感激:) 這裏是代碼,並非常感謝你的人誰可以幫我提前

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("commentbox"); 

$name= $_POST["name"]; 
$comment= $_POST["comment"]; 
$submit= $_POST["submit"]; 

$dbLink = mysql_connect("localhost", "root", "Broadband74"); 
    mysql_query("SET character_set_client=utf8", $dbLink); 
    mysql_query("SET character_set_connection=utf8", $dbLink); 

if($submit) 
{ 
    if($name&&$comment) 
    { 
     mysql_query("INSERT INTO commenttable (name,comment) VALUES ('$name','$comment') "); 
    } 
    else 
    { 
     echo "please fill out all fields"; 
    } 
} 
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Comment box</title> 
</head> 

<body> 
<center> 
<form action="comment.php" method="POST"> 
<table> 
<tr><td>Name: <br><input type="text" name="name"/></td></tr> 
<tr><td colspan="2">Comment: </td></tr> 
<tr><td colspan="5"><textarea name="comment" rows="10" cols="50"></textarea></td></tr> 
<tr><td colspan="2"><input type="submit" name="submit" value="Comment"></td></tr> 
</table> 
</form> 
<?php 
$dbLink = mysql_connect("localhost", "root", ""); 
    mysql_query("SET character_set_results=utf8", $dbLink); 
    mb_language('uni'); 
    mb_internal_encoding('UTF-8'); 

$getquery=mysql_query("SELECT * FROM commenttable ORDER BY id DESC"); 
while($rows=mysql_fetch_assoc($getquery)) 
{ 
    $id=$rows["id"]; 
    $name=$rows["name"]; 
    $comment=$rows["comment"]; 
    echo $name . '<br/>' . '<br/>' . $comment . '<br/>' . '<br/>' . '<hr size="1"/>' 
;} 
?> 

</body> 
</html> 
+0

請使用'isset()'如:$ name = isset($ _ POST ['name'])? $ _POST ['name']:null; – Benz

+0

你真的*得到​​輸入嗎?使用'isset()'來檢查! –

+3

頁面頂部的PHP代碼在第一次加載時正在運行。由於表單尚未提交,因此它在$ _POST中查找的變量尚未設置。你應該把整個東西包裝在一個'if'中,看看錶單是否已經提交;並在將它們分配給變量時檢查每個參數是否已設置。 – andrewsi

回答

0
<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("commentbox"); 

if(isset($_POST["name"]){ 
$name= $_POST["name"]; 
} 
if(isset($_POST["comment"]){ 
$comment= $_POST["comment"]; 
} 
if(isset($_POST["submit"]){ 
$submit= $_POST["submit"]; 
} 

$dbLink = mysql_connect("localhost", "root", "Broadband74"); 
    mysql_query("SET character_set_client=utf8", $dbLink); 
    mysql_query("SET character_set_connection=utf8", $dbLink); 

if($submit) 
{ 
if($name&&$comment) 
{ 
mysql_query("INSERT INTO commenttable (name,comment) VALUES ('$name','$comment') "); 
} 
else 
{ 
echo "please fill out all fields"; 
} 
} 
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Comment box</title> 
</head> 

<body> 
<center> 
<form action="comment.php" method="POST"> 
<table> 
<tr><td>Name: <br><input type="text" name="name"/></td></tr> 
<tr><td colspan="2">Comment: </td></tr> 
<tr><td colspan="5"><textarea name="comment" rows="10" cols="50"></textarea></td></tr> 
<tr><td colspan="2"><input type="submit" name="submit" value="Comment"></td></tr> 
</table> 
</form> 
<?php 
$dbLink = mysql_connect("localhost", "root", ""); 
    mysql_query("SET character_set_results=utf8", $dbLink); 
    mb_language('uni'); 
    mb_internal_encoding('UTF-8'); 

$getquery=mysql_query("SELECT * FROM commenttable ORDER BY id DESC"); 
while($rows=mysql_fetch_assoc($getquery)) 
{ 
$id=$rows["id"]; 
$name=$rows["name"]; 
$comment=$rows["comment"]; 
echo $name . '<br/>' . '<br/>' . $comment . '<br/>' . '<br/>' . '<hr size="1"/>' 
;} 
?> 

</body> 
</html> 
+0

爲什麼不只是在'if'塊內部執行邏輯?您還需要檢查它是否爲空。 – Kermit

0

當你第一次加載該頁面沒有綁定到請求的POST數據,所以在提交表單之前它會失敗。您既可以檢查是否值使用isset(套),你可以明確地處理錯誤:

http://php.net/manual/en/language.exceptions.php

或者,你可以把形式和代碼來處理不同的頁面上。

+0

非常感謝你,我把表單和代碼用不同的形式處理,它工作得很好,這解釋了爲什麼我找不到問題,因爲我正在尋找拼寫錯誤:) – user2614834

0

您需要使用的參數有兩種mysqli_PDO功能,但:

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("commentbox"); 

$dbLink = mysql_connect("localhost", "root", "Broadband74"); 
    mysql_query("SET character_set_client=utf8", $dbLink); 
    mysql_query("SET character_set_connection=utf8", $dbLink); 

if($_POST["submit"]) 
{ 
    if((isset($_POST["name"]) && !empty($_POST["name"])) && 
     (isset($_POST["comment"]) && !empty($_POST["name"]))) 
    { 
     $name= $_POST["name"]; 
     $comment= $_POST["comment"]; 
     mysql_query("INSERT INTO commenttable (name,comment) VALUES ('$name','$comment') "); 
    } 
    else 
    { 
     echo "please fill out all fields"; 
    } 
} 
0

你必須檢查你提交表單前:

if(isset($_POST['submit'])) 
{  
    mysql_connect("localhost","root",""); 
    mysql_select_db("commentbox"); 

    $name= $_POST["name"]; 
    $comment= $_POST["comment"]; 
    $submit= $_POST["submit"]; 

    $dbLink = mysql_connect("localhost", "root", "Broadband74"); 
    mysql_query("SET character_set_client=utf8", $dbLink); 
    mysql_query("SET character_set_connection=utf8", $dbLink); 

    if($name&&$comment) 
    { 
     mysql_query("INSERT INTO commenttable (name,comment) VALUES ('$name','$comment') "); 
    } 
    else 
    { 
     echo "please fill out all fields"; 
    } 
} 
0

你的PHP代碼是每次頁面加載時執行。在第一次加載時,表單輸入未給出,並且這些值未設置。但是您的腳本嘗試使用$_POST['field'],由於PHP不知道這些字段,它只會引發Undefined Index錯誤。

這個問題的解決方案其實很簡單。使用isset()

<?php 

if(isset($_POST['submit']) { //checking if form was submitted 

mysql_connect("localhost","root",""); 
mysql_select_db("commentbox"); 

$name = isset($_POST['name']) ? $_POST['name'] : null; 
$comment= isset($_POST['comment']) ? $_POST['comment'] : null; 
$submit= isset($_POST["submit"]) ? $_POST["submit"] : null; 

$dbLink = mysql_connect("localhost", "root", "Broadband74"); 
    mysql_query("SET character_set_client=utf8", $dbLink); 
    mysql_query("SET character_set_connection=utf8", $dbLink); 

if($submit) 
{ 
    if($name&&$comment) 
    { 
     mysql_query("INSERT INTO commenttable (name,comment) VALUES ('$name','$comment') "); 
    } 
    else 
    { 
     echo "please fill out all fields"; 
    } 
} 
?> 
+0

非常感謝你的時間, 非常感激 :) – user2614834

相關問題