2017-06-27 10 views
-1

フォームのチェックボックスはチェックされている場合は真の値(1)になり、それ以外の場合はカラムの値が偽(0)になります。チェックボックスのないフォームは、それが私にこのエラーが発生します確認 -php mysqlフォームでチェックボックスがチェックされていないとエラーが発生する

"お知らせ:未定義のインデックス:Cで公開:行37の\ xamppの\ htdocsに\ phpoop \ create_product.php" ここ

ですがプロダクトを作成するためのProductクラス(公開変数のみを含む)

class Product{ 

    // database connection and table name 
    private $conn; 
    private $table_name = "products"; 

    // object properties 
     public $publish; 


    public function __construct($db){ 
     $this->conn = $db; 
    } 

    // create product 
    function create(){ 

     //write query 
     $query = "INSERT INTO 
        " . $this->table_name . " 
       SET 
        publish=:publish"; 

     $stmt = $this->conn->prepare($query); 

     // posted values 
     $this->publish=htmlspecialchars(strip_tags($this->publish)); 

     // to get time-stamp for 'created' field 
     $this->timestamp = date('Y-m-d H:i:s'); 
     $this->timestamp2 = date('Y-m-d H:i:s'); 

     // bind values 
     $stmt->bindParam(":publish", $this->publish); 


     if ($stmt->execute()){ 
      return true;  

     }else{ 
      return false; 
     } 

    } 

とフォームは価値がそれを使用しようとする前に、存在する場合はここであなたがチェックしている製品に

// if the form was submitted 
if ($_POST){ 

    // set product property values 
    $product->publish = $_POST['publish']; 

    if(isset($_POST['publish'])){ 
    $published = $_POST['publish']; 
    } 
    else{ 
     $published = 0; 
    } 

    // create the product 
    if($product->create()){ 
     echo "<div class='alert alert-success'>Product was created.</div>"; 
    } 


} 

?> 

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post"> 
    <input type="checkbox" name="publish" value="1" class="form-control" <?php if(isset($_POST['publish'])) echo "checked='checked'";?>/> 
    <button type="submit" class="btn btn-primary">Create Product</button> 
</form> 
+0

What's on Line 37? – Bernhard

+0

このようなものにはスニペットを使用しないでください。また、正しい構文の強調表示もできません。 –

答えて

0

を作成するために配置されている場所です:

if(isset($_POST['publish'])){ 
    $published = $_POST['publish']; 
} 
else{ 
    $published = 0; 
} 

しかし、ここで(直前それはあなたではありません):

$product->publish = $_POST['publish']; 

それを使用しようとする前にそれが存在するかどうかをチェックするために同じロジックにそれを含めてください:

if(isset($_POST['publish'])){ 
    $published = $_POST['publish']; 
    $product->publish = $_POST['publish']; 
} 
else{ 
    $published = 0; 
    $product->publish = 0; 
} 
+0

はうまくいった!どうもありがとうございます。 – DesignStuff

+0

これをアップデート製品ページにどのように実装すればよいですか? – DesignStuff

関連する問題