2013-05-13 3 views
-2

У меня есть этот следующий код в моем файле PHP:Разрешающая Index Неизвестная ошибка

$p_adminType = $_POST['adminType']; 
$p_adminUserID = $_POST['userID']; 
$p_adminUserPass = $_POST['userPass']; 
$p_firstName = $_POST['adminFirstName']; 
$p_lastName = $_POST['adminLastName']; 

А потом, когда я исполняю файл, нажав на кнопку отправки из HTML-файла, я говорю Уведомление об ошибке:

Notice: Undefined index: userID in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 19 
Notice: Undefined index: userPass in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 20 
Notice: Undefined index: adminFirstName in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 21 

, где вы можете видеть из кода, где находятся строки 19, 20 и 21. Я попробовал добавить функцию isset() к моему коду, точно так же, как из того, что я читал с других сайтов/форумов, но когда я это делаю, он не решает мою проблему. Он только скрывает сообщение об ошибке, а переменные все еще пусты.

Как решить эту проблему? Кроме того, мне просто интересно, почему это происходит только с 3 из 5 заявлений? $p_adminType = $_POST['adminType']; и $p_lastName = $_POST['adminLastName']; просто работают нормально, но не другие 3? Может кто-нибудь, пожалуйста, просветит меня об этом?

Это HTML-файл, который у меня есть:

<form method="post" action="CaNeCo_Admin_Reg.php"> 
    <table width="400"> 
    <tr> 
     <td><b>Log-in Information:</b></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td>Administrator Type:</td> 
     <td> 
     <select name="adminType" id="adminType"> 
     <option value="0">Please Select</option> 
     <option value="1">Super Administrator</option> 
     <option value="2">Administrator</option> 
     <option value="3">Secretary</option> 
     <option value="4">Viewer</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td>User ID: </td> 
     <td><input type="text" name:"userID" id="adminUserID" placeholder="User I.D." maxlength="20" size="35"/></td> 
    </tr> 
    <tr> 
     <td>Password: </td> 
     <td><input type="password" name:"userPass" id="adminUserPass" placeholder="Password" maxlength="25" size="35"/></td> 
    </tr> 
    <tr> 
     <td>Repeat Password:</td> 
     <td><input type="password" name="repeatPass" id="adminRepeatPass" placeholder="Repeat Password" maxlength="25" size="35"/></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td colspan="25"><b>Personal Information:</b></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td>First Name: </td> 
     <td><input type="text" name:"adminFirstName" id="adminFirstName" placeholder="First Name" maxlength="20" size="35"/></td> 
    </tr> 
    <tr> 
     <td>Last Name: </td> 
     <td><input type="text" name="adminLastName" id="adminLastName" placeholder="Last Name" maxlength="25" size="35"/></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td colspan="50"><center><input type="submit" value="Submit"/></center></td> 
    </tr> 
</table> 

+1

добавить 'form' код –

+0

' и переменные еще empty' как бы ваш скрипт знает, что это значение должно быть если вы его не проходите? – Dogbert

+1

'var_dump ($ _ POST);' и проверьте, какие переменные вы получаете. – Rikesh

ответ

0

Undefined индекс, вероятно, бросили, потому что вы не определили в вашем HTML-форм эти имена. Ваша форма должна выглядеть следующим образом:

<input type='text' name='adminType'/> 
<input type='text' name='userID'/> 
<input type='text' name='userPass'/> 
<input type='text' name='adminFirstName'/> 
<input type='text' name='adminLastName'/> 

Или любой входной type вы используете. Вы также должны опубликовать свой код формы, чтобы предоставить дополнительную информацию.

Проверьте, что у вас есть именно те имена, которые указаны в вашей форме html.

UPDATE

Вы писали свой код формы и увидел ошибку. Вместо этого вы используете :, чтобы использовать =, чтобы присвоить значения вашим name свойствам для ваших входов. Если вы посмотрите, только 2 элемента, которые вы получаете на сервере, правильно отправляются на сервер, поскольку вы определили их свойство имен, например name={value}, но остальные 3 свойства определены как name:{value}. Assignament с : не существует в HTML и форма не знает, как отправить этот элемент с этим атрибутом, поэтому ваш сервер никогда не получает элемент с атрибутом с именем userID, потому что userID не определен как уже сказано (name={value}).

+0

Я уже дважды проверил эту область. поэтому я уверен, что с этим нет никаких проблем. – Jairo

+0

@Jairo Мое плохое, я переписал свой ответ. Я не хотел ссылаться на это. У вас есть ошибка в ваших свойствах, вы используете ':' вместо '=', когда вы присваиваете имя вашим входам. Для назначения значений используйте '=' и не используйте ':' – DaGLiMiOuX

+0

Спасибо! Я этого не видел. :) Одна вещь, которую я ненавижу о html-кодах. Он не говорит вам, есть ли ошибки в вашем коде. – Jairo

0

сначала проверить $ _POST провести какое-то значение или нет.

поэтому используйте print_r ($ _ POST) выше кода, это поможет вам идентифицирует ошибку,

+0

, я пробовал это делать. даже этот код показывает ту же ошибку. – Jairo

-1

Для cheking индекса существующего вы можете использовать функцию PHP как array_key_exists или IsSet, если индекс не найден вы должны инициализировать переменную, как пустой (нулевой или пустая строка):

if (array_key_exists('adminType', $_POST)) { 
    $p_adminType = $_POST['adminType']; 
} else { 
    $p_adminType = ''; 
} 
if (array_key_exists('userID', $_POST)) { 
    $p_adminUserID = $_POST['userID']; 
else { 
    $p_adminUserID = ''; 
} 
if (array_key_exists('userPass', $_POST)) { 
    $p_adminUserPass = $_POST['userPass']; 
else { 
    $p_adminUserPass = ''; 
} 
if (array_key_exists('adminFirstName', $_POST)) { 
    $p_firstName = $_POST['adminFirstName']; 
else { 
    $p_firstName = ''; 
} 
if (array_key_exists('adminLastName', $_POST)) { 
    $p_lastName = $_POST['adminLastName']; 
else { 
    $p_lastName = ''; 
} 
+0

'array_key_exists' работает медленнее, чем' isset'. – mpyw

+0

Например, '$ p_adminType = isset ($ _ POST ['adminType'])? $ _POST ['adminType']: ''; 'лучший. – mpyw

+0

Да, также, isset для $ _POST ['adminType'] = null будет false. Я использую текущий пример для более простого вида – Eugene

-1

Кстати, эти названия, кажется, быть очень запутанным.

Я думаю, вы должны переписать эти заявления:

$p_adminType = $_POST['adminType']; 
$p_adminUserID = $_POST['userID']; 
$p_adminUserPass = $_POST['userPass']; 
$p_firstName = $_POST['adminFirstName']; 
$p_lastName = $_POST['adminLastName']; 

в:

$p_adminType = $_POST['type']; 
$p_adminUserID = $_POST['userID']; 
$p_adminUserPass = $_POST['userPass']; 
$p_adminFirstName = $_POST['firstName']; 
$p_adminLastName = $_POST['lastName']; 

или:

$p_type = $_POST['adminType']; 
$p_userID = $_POST['adminUserID']; 
$p_userPass = $_POST['adminUserPass']; 
$p_firstName = $_POST['adminFirstName']; 
$p_lastName = $_POST['adminLastName']; 

или:

$p_type = $_POST['type']; 
$p_userID = $_POST['userID']; 
$p_userPass = $_POST['userPass']; 
$p_firstName = $_POST['firstName']; 
$p_lastName = $_POST['lastName']; 

или:

$p_adminType = $_POST['adminType']; 
$p_adminUserID = $_POST['adminUserID']; 
$p_adminUserPass = $_POST['adminUserPass']; 
$p_adminFirstName = $_POST['adminFirstName']; 
$p_adminLastName = $_POST['adminLastName']; 
+0

Причина, по которой моя схема именования похожа на то, потому что мне легче найти ссылку на этот путь. Я имею тенденцию испытывать трудности с запоминанием переменных, когда их по-разному называют особенно, когда у меня уже есть много переменных в моем коде. – Jairo

+0

О, я вижу ... – mpyw

0

ваш HTML должен быть таким: -

<form method="post" action="CaNeCo_Admin_Reg.php"> 
    <table width="400"> 
    <tr> 
     <td><b>Log-in Information:</b></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td>Administrator Type:</td> 
    <td> 
     <select name="adminType" id="adminType"> 
     <option value="0">Please Select</option> 
     <option value="1">Super Administrator</option> 
     <option value="2">Administrator</option> 
     <option value="3">Secretary</option> 
     <option value="4">Viewer</option> 
     </select> 
    </td> 
    </tr> 
    <tr> 
    <td>User ID: </td> 
    <td><input type="text" name="userID" id="adminUserID" placeholder="User I.D."   maxlength="20" size="35"/></td> 
</tr> 
    <tr> 
    <td>Password: </td> 
    <td><input type="password" name="userPass" id="adminUserPass" placeholder="Password" maxlength="25" size="35"/></td> 
</tr> 
    <tr> 
    <td>Repeat Password:</td> 
    <td><input type="password" name="repeatPass" id="adminRepeatPass" placeholder="Repeat Password" maxlength="25" size="35"/></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td colspan="25"><b>Personal Information:</b></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td>First Name: </td> 
     <td><input type="text" name="adminFirstName" id="adminFirstName" placeholder="First Name" maxlength="20" size="35"/></td> 
    </tr> 
    <tr> 
    <td>Last Name: </td> 
    <td><input type="text" name="adminLastName" id="adminLastName" placeholder="Last Name" maxlength="25" size="35"/></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td colspan="50"><center><input type="submit" value="Submit"/></center></td> 
    </tr> 
</table> 
Смежные вопросы