有两个未定义索引的通知


Having two notices of undefined index

下面的代码将填充字段时存储的数据插入到我的Admins表中。

插入操作正常,但我收到了两个通知,我正在努力解决这个问题,但找不到好的方法。

那里有人可以帮忙吗?

我有两个注意事项:

->未定义的索引:$insertAdmin->bindValue中的日期(':avata',$f['avatar']);

->未定义的索引:$insertAdmin->bindValue中的日期(':date_register',$f[date']);

我的代码:

 if(isset($_POST['sendForm']))
    {
    $f['name'] = $_POST['name'];
    $f['email'] = $_POST['email'];
    //$f['avatar'] = $_POST['avatar'];
    $f['date'] = $_POST['date_register'];
    if(in_array('',$f))
    {
    echo 'Please, fill all fields.';
    }
    else
    {
      if(!empty($_FILES['avatar']['tmp_name']))
      {
         $image = $_FILES['avatar'];
         $tmp = $imagem['tmp_name'];
         $folder = '../uploads/avatars/';
         $ext = substr($image['name'],-3);
         $name = md5(time()).'.'.$ext;
         $f['avatar'] = $name;
         uploadImage($tmp, $name, '200', $folder);
    }
         $insertAdmin = $pdo->prepare("INSERT INTO admin (name, email, avatar, date_register) VALUES (:name, :email, :avatar, :date_register)");
         $insertAdmin->bindValue(':name', $f['name']);
         $insertAdmin->bindValue(':email', $f['email']);
         $insertAdmin->bindValue(':avatar', $f['avatar']);
         $insertAdmin->bindValue(':date_register', $f['date']);    
    }
    }

我的表格:

<form name="form" action="" method="post" enctype="multipart/form-data">
   <label class="line">
     <span class="data">Name:</span>
     <input type="text" name="name" value="<?php if(isset($f['name'])) echo $f['name'] ; ?>" />
   </label>

   <label class="line">
    <span class="data">Email:</span>
    <input type="text" name="email" value="<?php  if(isset($f['email'])) echo $f['email'] ; ?>" />
   </label>
   <label class="line">
    <span class="data">Avatar:</span>
    <input type="file" class="fileinput" name="avatar" size="60" />
   </label>
   <label class="line">
    <span class="data">Date of register:</span>
    <input type="text" name="date_register" id="date" value="<?php if(isset($f['date'])) echo $f['date']; else echo date('d/m/Y H:i:s');?>" />
   </label>
   <input type="submit" value="Register" name="sendForm"/>
</form>

我看不出有任何合理的理由使用$f变量,它只是让它变得令人困惑。我个人会直接使用POST

 if(isset($_POST['sendForm']
    isset($_POST['name']   &&
    isset($_POST['email']  &&
    isset($_POST['avatar'] &&
    isset($_POST['date']   &&){
   //Insert
 }else{
   //please fill out everything
 }

然后像这样执行

 $insertAdmin = $pdo->prepare("INSERT INTO admin (name, email, avatar, date_register) VALUES (:name, :email, :avatar, :date_register)");
 $insertAdmin->bindValue(':name', $_POST['name']);
 $insertAdmin->bindValue(':email', $_POST['email']);
 $insertAdmin->bindValue(':avatar', $_POST['avatar']);
 $insertAdmin->bindValue(':date_register', $_POST['date']);
 //do not forget to execute
 $insertAdmin->execute();

您有一个拼写错误:

$f['date'] = $_POST['data_register'];

需要:

$f['date'] = $_POST['date_register'];
//----------------------^

这就解释了为什么$f['date']是未定义的。

use below an check again.
if(isset($_POST['sendForm']))
{
$f['name']   = $_POST['name'];
$f['email']  = $_POST['email'];
$f['avatar'] = $_POST['avatar'];
$f['date']   = $_POST['date_register'];
if(in_array('',$f))
{
echo 'Please, fill all fields.';
}
else
{
  if(!empty($_FILES['avatar']['tmp_name']))
  {
     $image = $_FILES['avatar'];
     $tmp = $imagem['tmp_name'];
     $folder = '../uploads/avatars/';
     $ext = substr($image['name'],-3);
     $name = md5(time()).'.'.$ext;
     $f['avatar'] = $name;
     uploadImage($tmp, $name, '200', $folder);
}
     $insertAdmin = $pdo->prepare("INSERT INTO admin (name, email, avatar, date_register) VALUES (:name, :email, :avatar, :date_register)");
     $insertAdmin->bindValue(':name', $f['name']);
     $insertAdmin->bindValue(':email', $f['email']);
     $insertAdmin->bindValue(':avatar', $f['avatar']);
     $insertAdmin->bindValue(':date_register', $f['date']);    
}
}