Erro de Índice indefinido PHP

Sou novo no PHP e estou a ter este erro:

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

Não consegui encontrar nenhuma solução online. alguém pode ajudar-me.

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.

Obrigado por ter tomado o seu tempo para me responder. Saúde!

Author: Dyin, 2012-05-16

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'];
}

?>
 35
Author: Adam, 2017-03-16 11:58:32

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'] : '';
 6
Author: Robert Wilson, 2012-05-16 07:21:04

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'];

}
 2
Author: sumish1985, 2014-11-04 06:18:36
Isto está a acontecer porque o seu código PHP está a ser executado antes do formulário ser publicado.

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
         }
 2
Author: Akshat Maltare, 2016-11-28 18:27:48

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.

De qualquer forma, podes verificar isso com 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.

 0
Author: Dyin, 2012-05-16 07:19:47
Isto está a acontecer porque estás a tentar mostrar o valor antes de O atribuir. U basta preencher os valores e enviar o formulário que irá mostrar o resultado correto Ou u pode escrever o código ur php abaixo de marcas de formulário Ele vai correr sem quaisquer erros
 0
Author: rohit sonawane, 2013-12-18 09:24:56

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

 0
Author: Amjad Glory amjad iqbal, 2015-07-23 15:32:24

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

 -1
Author: OpenWebWar, 2014-05-29 11:57:18

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">
 -2
Author: Omary, 2014-08-02 07:56:51