2014-05-12 78 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