2014-05-12 58 views
0

我正在尝试提交提交表单。如果字段为空,但它不会将数据插入到表中,并且在提交之后仅返回带有标题的页面,则会返回错误。我不知道,因为没有错误呼应未显示任何错误,但未插入数据库

我的验证

<?php 
    // define variables and initialize with empty values 
    $nameErr = $comErr = $catErr =$priceErr =$linkErr =""; 
    $name = $description = $category = $price = $link = ""; 


if ($_SERVER["REQUEST_METHOD"] == "POST") { 
print_r($_POST); 
     if ($_POST["name"] == "") { 
      $nameErr = "Name the app"; 
     } 
     else { 
      $name= $_POST["name"]; 
     } 
     if ($_POST["price"] == "") { 
      $priceErr = "Price the app"; 
     } 
     else { 
      $price= $_POST["price"]; 
     } 
     if ($_POST["link"] == "") { 
      $linkErr = "Link the app"; 
     } 
     else { 
      $link= $_POST["link"]; 
     } 
      if ($_POST["category"] == "") { 
      $catErr = "Missing"; 
     } 
     else { 
      $category = $_POST["category"]; 
     } 
     if (empty($_POST["description"])) { 
      $comErr = "Missing"; 
     } 
     else { 
      $description= $_POST["description"]; 
     } 
    if (empty($rateErr) && empty($comErr) && empty($catErr)&& empty($linkErr) && empty($priceErr)) { 
      try { 
       $con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
       $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
       $sql = "INSERT INTO apps (app_name, category, price, link, description, date_added) VALUES (:name, :category, :price, :link, :description, :date)"; 

       $stmt = $con->prepare($sql); 
       $stmt->bindValue(":name", $name); 
       $stmt->bindValue(":category", $category); 
       $stmt->bindValue(":price", $price); 
       $stmt->bindValue(":link", $link); 
       $stmt->bindValue(":description", $description); 
       $stmt->bindValue(":date", now()); 
       $stmt->execute(); 
       echo "Submitted successfully"; 
      }catch(PDOException $e) { 
       echo $e->getMessage(); 
      } 
      } 

    } 

?> 

而且形式

<form method="POST" 
action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
App name <input type="text" name="name" value="<?php echo htmlspecialchars($name);?>"> 
<span class="error"><?php echo $nameErr;?></span> 
<br /> 
Price <input type="text" name="price" value="<?php echo htmlspecialchars($price);?>"> 
<span class="error"><?php echo $priceErr;?></span> 
<br /> 
Download link <input type="text" name="link" value="<?php echo htmlspecialchars($link);?>"> 
<span class="error"><?php echo $linkErr;?></span> 
<br /> 
<select name="category"> 
<option value=""></option> 
<option value="maths">maths</option> 
<option value="driving">driving</option> 
<option value="languages">languages</option> 
<option value="literature">literature</option> 
<option value="science">science</option> 
    <option value="psychology">psychology</option> 
    <option value="psychology">biology</option> 
<option value="IT">IT</option> 
<option value="other">Other</option> 
</select> 
<span class="error"><?php echo $catErr;?></span> 
<br /> 
<textarea rows="4" cols="50" name="description" value="<?php echo htmlspecialchars($description);?>"> 
Enter text here...</textarea> 
<span class="error"><?php echo $comErr;?></span> 
<input type="submit" name="submit" value="Submit"> 
</form> 
+0

你有成功消息的问题? – Ranjith

+0

没有你的贡献我们找不到解决方案。 – Ranjith

+0

不,如果我提交表单,我只是得到一个只有标题的空白页面,没有错误,也没有消息 – user3623523

回答

1

你是不是附和任何错误什么是错的。 您正在返回“已成功提交”,但您不在函数中。 如果你想看到这个消息,你应该放置回声“提交成功”。

看来你的代码没有经过$ _SERVER [“REQUEST_METHOD”]。

尝试使用if(isset($ _ POST)),并用print_r($ _ POST)打印$ _POST, 只是为了验证表单是否正确发布数据。

+0

当我进入表单页面时然后显然显示错误,并打印Array(),然后在提交后它再次给我带有标题的空白页面。你认为这可能与HTML格格不入?它不显示任何错误:/ – user3623523

0

检查你的数据库连接代码

$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 

与替换下面的一个,这是工作和价值观得到插入......可能,这也可能是

$con = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
+0

我不这么认为,我使用该代码来连接我的应用程序中的其他任何地方,我只是把include(“config.php”);这也是我为这个表单的页面所做的 – user3623523