2014-05-02 51 views
-2

這是一個更簡潔的問題,我之前問過希望得到答案。我製作了一個表格,它應該使用一個類將提交的信息發送到數據庫。爲什麼我的表單不能將信息發送到數據庫?


beeradded.php

<?php 
session_start(); 

ini_set('display_errors', 1); 
error_reporting(E_ALL); ini_set('display_errors', 1); 

//var_dump($_POST); 
if ($_SESSION['logged_in']!="yes"){ 
    header ("Location: unauth.php"); 
} 

require "/home/carlton/public_html/PHPproject/allincludes.php"; 

//if (count($_POST)>0){ 
//need to add in validation check here 
// 
// 
// 
// 
//$validationErrors= 0; 

    //if(count($validationErrors == 0)){ 
     $form=$_POST; 
     $beer_name = $form['beer_name']; 
     $beer_type = $form['beer_type']; 
     $beer_abv = $form['beer_abv']; 
     $beer_rating = $form['beer_rating']; 

    // } 

    $new_beer = new Beer($beer_name); 
    $new_beer->setBeerType($beer_type); 
    $new_beer->setBeerABV($beer_abv); 
    $new_beer->setBeerRating($beer_rating); 

    $beereditor->addBeer($new_beer); 
    echo "Beer added."; 
echo '<a href="addbeer.php"> Back to add menu </a>'; 
//} 


editbeers.php

<?php 

class BeerEditor 
{ 
    protected $dbconn; 

    function __construct($dbconn){ 
     $this->dbconn = $dbconn; 
    } 

    function addBeer(Beer $beerObj){ 
     //making connection to db here 
     $conn = $this->dbconn->getConnection(); 

     $stmt = $conn->prepare("INSERT INTO beers (beer_name, beer_type, beer_abv, beer_rating) VALUES (:beer_name, :beer_type, :beer_abv, :beer_rating)"); 

     $stmt->bindParam(':beer_name', $beerObj->getBeerName()); 
     $stmt->bindParam(':beer_type', $beerObj->getBeerType()); 
     $stmt->bindParam(':beer_abv', $beerObj->getBeerABV()); 
     $stmt->bindParam(':beer_rating', $beerObj->getBeerRating()); 

     $result = $stmt->execute(); 

     if($result === false){ 
      var_dump($conn->errorCode()); 
     } 

     return $result; 
    } 

    function listBeers(){ 

     $conn = $this->dbconn->getConnection(); 
     $result = $conn->query('SELECT * FROM beers'); 

     $result->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'beers'); 
     $beers = $result->fetchAll(); 

     return $beers; 
    } 


} 
?> 

beer.php

<?php 
/** 
* Description of beer 
* 
* @author root 
*/ 
class beer { 

    protected $beer_name; //varchar(45) 
    protected $beer_type; //varchar(45) 
    protected $beer_abv; //decimal(4,2) alcohol percentage ex. 06.50 
    protected $beer_rating; //char(10) 1 awful beer, 10 great beer 

    public function __construct($beer_name = null){ 
     if ($beer_name !== null){ 
      $this->setName($beer_name); 
     }  
     //defaults 
     // $this->setType($beer_type); 
     // $this->setABV($beer_abv); 
     // $this->setRating($beer_rating); 


    } 

     public function setBeerName(){ 
      $this->beer_name = $beer_name; 
     } 
     public function getBeerName(){ 
       return $this->beer_name; 
     } 

     public function setBeerType(){ 
      $this->beer_type = $beer_type; 
     } 
     public function getBeerType(){ 
      return $this->beer_type; 
     } 

     public function setBeerABV(){ 
      $this->beer_abv = $beer_abv; 
     } 
     public function getBeerABV(){ 
      return $this->beer_abv; 
     } 

     public function setBeerRating(){ 
      $this->beer_rating = $beer_rating; 
     } 
     public function getBeerRating(){ 
      return $this->beer_rating; 
     } 
} 
+0

你期望它打印什麼,而不是一個數組? –

+0

不知道它是唯一的錯誤,但'$ _POST = $ form;'應該可能是'$ form = $ _POST;' –

+0

我期待它將數據發送到數據庫。我錯過了一些重要的東西? – carlgoodtoseeyou

回答

1
$new_beer->setBeerRating($beer_rating); 
echo "Beer added."; 

您將要添加一行在這兒,你叫BeerEditor的addBeer($new_beer)功能。目前,你沒有任何東西調用該函數,所以INSERT從不執行。您的Beer類中沒有任何內容與數據庫交互,因此您所做的只是設置一個本地Beer對象,然後丟棄它。

編輯: 按我的意見,你將需要:

  • 這樣定義$conn
  • 一套類似$beerEditor = new BeerEditor($conn);
  • 運行一個新的PDO連接$beerEditor->addBeer($new_beer);

谷歌可以幫助你很多,這裏

+0

所以我只需要添加'addBeer($ new_beer);''$ new_beer'上面的行? – carlgoodtoseeyou

+0

您將需要1)定義一個新的PDO連接。'$ conn' 2)設置類似於'$ beerEditor = new BeerEditor($ conn);'3)運行'$ beerEditor-> addBeer($ new_beer);' – Noah

+0

我已經在包含頂部建立了連接。或者我想。至於調用函數,我仍然無法弄清楚。我在$ new_beer下添加了'$ beereditor-> addBeer($ new_beer)'行,但是出現錯誤: '致命錯誤:在'/ home/carlton/public_html/PHPproject'中找不到類'Beer'第31行的/forms/beeradded.php' – carlgoodtoseeyou

0

它看起來像$ _POST = $ form應該是$ form = $ _ POST。你正在消除你所有的數據。另外,addBeer在你的例子中沒有被調用。 此外,您的登錄系統是可利用的。如果我沒有從瀏覽器中點擊它,我可以忽略那裏的重定向

+0

甚至在切換之前,數組仍然擁有我提交的所有數據。我切換了它,但在提交後我得到了相同的結果。 – carlgoodtoseeyou

0

除了@ doliver的回答

count($validationErrors) 

將返回1因爲它的一個Int不是一個數組。所以沒有什麼if語句內將運行

相關問題