有两个未定义索引的通知

时间:2014-04-09 17:37:24

标签: php

我有以下代码,在我的 Admins 表中插入我填写字段时存储的数据。

插入工作正常,但我有两个注意事项,我试图解决这个问题,但我找不到一个好的方法。

有人可以提供一些帮助吗?

我有两个通知:

- >未定义的索引:$ insertAdmin-> bindValue中的日期(':avatar',$ 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>

3 个答案:

答案 0 :(得分:2)

我认为没有合理的理由拥有$ 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();

答案 1 :(得分:1)

您有拼写错误:

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

需要:

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

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

答案 2 :(得分:0)

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