2013-04-10 3 views
1

Я хочу выполнить викторину php, когда у вас есть полный класс, вы можете ввести свою информацию в мою базу данных, но когда я заполнил форму и положил сумбит. У этой ошибки ~значение формы не может быть введено в mysql, но может подключаться к mysql (PHP)

Примечание: Undefined индекс: ПгвЬЫате в C: \ XAMPP \ HTDOCS \ record.php на линии 19

Примечание: Undefined индекс: Lastname в C: \ XAMPP \ HTDOCS \ record.php на линия 19

Примечание: Undefined индекс: возраст в C: \ XAMPP \ HTDOCS \ record.php на линии 19 mysql_connect.inc.php

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<?php 
//資料庫設定 
//資料庫位置 
$db_server = "localhost"; 
//資料庫名稱 
$db_name = "quiz"; 
//資料庫管理者帳號 
$db_user = "root"; 
//資料庫管理者密碼 
$db_passwd = "123456"; 

//對資料庫連線 
if([email protected]_connect($db_server, $db_user, $db_passwd)) 
     die("can't connect mysql"); 

//資料庫連線採UTF8 
mysql_query("SET NAMES utf8"); 

//選擇資料庫 
if([email protected]_select_db($db_name)) 
     die("can't connect db"); 
?> 

record.php

<?php ?> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<?php 
session_start(); 

include("mysql_connect.inc.php"); 

$con = mysql_connect("localhost","root","123456"); 


mysql_query("INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Peter', 'Griffin', '35')"); 

mysql_query("INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Glenn', 'Quagmire', '33')"); 

$sql="INSERT INTO Persons (FirstName, LastName, Age) 
VALUES 
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; 

mysql_close($con) 
?> 

process.php

<html> 
<head> 
<style type="text/css"> 
#wrapper { 

    width:950px; 
    height:auto; 
    padding: 13px; 
    margin-right:auto; 
    margin-left:auto; 
    background-color:#fff; 
} 
</style> 
</head> 
<?php 

    $fid = $_GET['id']; 

?> 
<body bgcolor="#e1e1e1"> 

<div id="wrapper"> 

<center><font face="Andalus" size="5">Your Score</font></center> 
<br /> 
<br /> 

<?php 
    $answer1= $_POST['answerOne']; 
    $answer2= $_POST['answerTwo']; 
    $answer3= $_POST['answerThree']; 
    $score = 0; 

    if ($answer1 == "A"){$score++;} 
    if ($answer2 == "B"){$score++;} 
    if ($answer3 == "C"){$score++;} 
    echo "<center><font face='Berlin Sans FB' size='8'>Your Score is <br> $score/3</font></center>"; 

?> 

<br> 
<br> 
<Center> 
<?php 
    if ($score == 3) 
    { 
     echo " 
     <form action='record.php' method='post' > 
     ID: <input type='text' id='firstname'/><br> 
     Phone: <input type='text' id='lastname'/><br> 
     E-mail: <input type='text' id='age'/><br><br> 
     <input type='submit' value='Submit Data' /> 
     </form> "; 
    } 
?> 
</Center> 


</div><!--- end of wrapper div ---> 

</body> 
</html> 
+0

Следовать за ним. http://stackoverflow.com/questions/15785519/variables-occasionally-empty-how-to-prevent-undefined-variable-error/15785579#15785579 – Neo

ответ

1

Ваши поля ввода должны иметь "имя" атрибут тоже.

0

Вы забыли процитировать клавиши массива.

$_POST['firstname'] ... 
+0

Это на самом деле не требуется, если в двойных кавычках, но вы можете также сделайте это внутри двойных кавычек '" blabla {$ _POST ['name']} blabla "' – Danny

+0

'Ошибка анализа: синтаксическая ошибка, неожиданная T_ENCAPSED_AND_WHITESPACE, ожидающая T_STRING или T_VARIABLE или T_NUM_STRING в C: \ xampp \ htdocs \ record.php on line 12' Я изменил, но имею эту ошибку. –

+0

@ Danny Они требуются. Они должны фактически поднять Предупреждение, если оно было пропущено, указав, что такой константы нет и что строка ASSUMED. –

-1

Заменить это:

$sql="INSERT INTO Persons (FirstName, LastName, Age) 
VALUES 
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; 

с этим:

$sql="INSERT INTO Persons (FirstName, LastName, Age) 
VALUES 
('$_POST['firstname']','$_POST['lastname']','$_POST['age']')"; 

И добавить имя атрибуты в форму, как это:

<?php 
if ($score == 3) 
{ 
    echo " 
    <form action=\'record.php\' method=\'post\' > 
    ID: <input type=\'text\' name=\'firstname\' id=\'firstname\'><br> 
    Phone: <input type=\'text\' name=\'lastname\' id=\'lastname\'><br> 
    E-mail: <input type=\'text\' name=\'age\' id=\'age\'><br><br> 
    <input type=\'submit\' value=\'Submit Data\'> 
    </form> "; 
} 
?> 
+0

'Ошибка анализа: ошибка синтаксиса, неожиданный T_ENCAPSED_AND_WHITESPACE, ожидающий T_STRING или T_VARIABLE или T_NUM_STRING в C: \ xampp \ htdocs \ record.php в строке 12' Я изменил, но имею эту ошибку. –

+0

@DanteMan Вопрос только в том, почему вы вставляете Петра Гриффина и Гленна Куагмира в свою БД каждый раз, когда вы отправляете форму? – Daanvn

+0

Просто для проверки базы данных ... Но форма не может вводить данные в базу данных. thx u –

0
  • Во-первых, ('$_POST[firstname]','$_POST[lastname]','$_POST[age]') должен быть ("$_POST[firstname]","$_POST[lastname]","$_POST[age]") «" вместо '' получить переменные внутри проанализированного. В противном случае вы могли бы вставлять $ .... внутри своей базы данных вместо содержимого переменной.

  • Во-вторых, как указано Vidario Вам нужны котировки для индекса массива. Значение $_POST[firstname] должно стать $_POST['firstname'] или $_POST["firstname"]. И поскольку уже уже есть «вокруг переменной», теперь мы можем использовать «» для индекса.

Так что теперь у вас есть:

`("$_POST['firstname']","$_POST['lastname']","$_POST['age']")` 
  • В-третьих, как заявил Дэнни, в HTML вы должны дать входам имя, поэтому они могут быть использованы в PHP. Идентификатора недостаточно. Таким образом, <input type="..." id="blah" name="blah" />
Смежные вопросы