Erro de Índice indefinido PHP
Sou novo no PHP e estou a ter este erro:
Não consegui encontrar nenhuma solução online. alguém pode ajudar-me.Notice: Undefined index: productid in /var/www/test/modifyform.php on linha 32
Notice: Undefined index: name in /var/www/test/modifyform.php on line 33
Notice: Undefined index: price in /var/www/test/modifyform.php on line 34
Notice: Undefined index: description in /var/www/test/modifyform.pai na linha 35
Aqui está o código:
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<input type="hidden" name="rowID" value="<?php echo $rowID;?>">
<p>
Product ID:<br />
<input type="text" name="productid" size="8" maxlength="8" value="<?php echo $productid;?>" />
</p>
<p>
Name:<br />
<input type="text" name="name" size="25" maxlength="25" value="<?php echo $name;?>" />
</p>
<p>
Price:<br />
<input type="text" name="price" size="6" maxlength="6" value="<?php echo $price;?>" />
</p>
<p>
Description:<br />
<textarea name="description" rows="5" cols="30">
<?php echo $description;?></textarea>
</p>
<p>
<input type="submit" name="submit" value="Submit!" />
</p>
</form>
<?php
if (isset($_POST['submit'])) {
$rowID = $_POST['rowID'];
$productid = $_POST['productid']; //this is line 32 and so on...
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
}
O que eu faço depois disso (ou pelo menos estou tentando) é atualizar uma tabela em MySQL.
Eu realmente não consigo entender porque $rowID
é definido enquanto as outras variáveis não são.
9 answers
Tenta:
<?php
if (isset($_POST['name'])) {
$name = $_POST['name'];
}
if (isset($_POST['price'])) {
$price = $_POST['price'];
}
if (isset($_POST['description'])) {
$description = $_POST['description'];
}
?>
Aparentemente o índice "productid" está em falta no seu formulário html.
Inspeccione as suas entradas de html primeiro. eg <input type="text" name="productid" value="">
Mas isso irá lidar com o erro atual PHP está levantando.
$rowID = isset($_POST['rowID']) ? $_POST['rowID'] : '';
$productid = isset($_POST['productid']) ? $_POST['productid'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$price = isset($_POST['price']) ? $_POST['price'] : '';
$description = isset($_POST['description']) ? $_POST['description'] : '';
Tenta
<?php
$rowID=$productid=$name=$price=$description="";
if (isset($_POST['submit'])) {
$rowID = $_POST['rowID'];
$productid = $_POST['productid']; //this is line 32 and so on...
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
}
Para evitar esta mudança de linha do seu código PHP a seguir à declaração if e irá lidar com o resto não é necessário definir se as declarações para cada variável
if(isset($_POST) && array_key_exists('name_of_your_submit_input',$_POST))
{
//process PHP Code
}
else
{
//do nothing
}
Deve haver um problema, quando se gera o {[[0]}. Aposto que as variáveis $name
, $price
são NULL
ou um texto vazio quando você {[4] } os coloca no campo value
do <input>
. Os campos de entrada vazios não são enviados pelo navegador, por isso $_POST
não terá as suas chaves.
isset()
.
Variáveis de teste com as seguintes:
if(isset($_POST['key'])) ? $variable=$_POST['key'] : $variable=NULL
É melhor colocá-lo em NULL
, porque
O valor nulo representa um variável sem valor.
Se está a usar o servidor wamp, então recomendo que use o servidor xampp . você . eu recebo este erro em menos de um minuto, mas eu resolvi isso usando a função (isset). e não me engano . e depois disso removo a função (isset) e não vejo nenhum erro.
A propósito, estou a usar o servidor xampp
Este erro ocorreu em algum momento atributo method (valid passing method ) Opção de erro : method= "get"but called by $Fname = $_POST ["name"]; ou
method="post" but called by $Fname = $_GET["name"];
Mais informação visita http://www.doordie.co.in/index.php
Para remover este erro, no seu formulário html deverá fazer o seguinte em enctype
:
<form enctype="multipart/form-data">
O seguinte abaixo é a causa desse erro, ou seja, se você começar com os dados do formulário no enctype, então você deve começar com multipart:
<form enctype="form-data/multipart">