2017-03-06 12 views
0

PHPを使用してHTMLフォームを使用してSQLテーブルを更新しようとしています。PHP変数をリセットし続ける

私は、VCR名を検索して詳細を表示し、ユーザがデータベース内の詳細を変更するための更新フォームが表示されるようにしたいと考えています。

しかし、私が更新フォームの更新ボタンを押すたびに、新しい詳細を保持する変数は空になり、未定義になります。

<?php require('connect.php'); ?> 
<?php require('headerPrivate.php'); ?> 
<?php require('session.php');?> 


<?php 
      //SEARCH PHP CODE 
      //THIS WORKS FINE AND ALL THE DETAILS APPEAR 
      if(isset($_POST["search"])) 
      { 

      //CREATE VARIABLES 
      $username=$_SESSION['username']; 
      echo "username: ".$username; 
      echo '<br>'; 

      $vcrName=$_POST['name']; 
      echo "VCR Name: ".$vcrName; 
      echo '<br>'; 
      echo '<br>'; 


      //SELECT * FROM PRODUCT 
      $sql="SELECT * 
        FROM product 
        INNER JOIN user 
        ON product.owner_ID=user.user_ID 
        WHERE username='$username' AND name='$vcrName'"; 
      echo "SQL SELECT 1: ".$sql; 
      echo '<br>'; 
      echo '<br>'; 

      //$vcrName=$_POST['name']; 


      $result = mysqli_query($con,$sql); 

       echo '<div class="row">'; 


        echo '<div class="col-xs-6 col-md-4">'; 
         while ($row_all = mysqli_fetch_assoc($result)) 
           { 
          echo '<form method="post">'; 
           echo "<u>Title: ".$row_all["name"].'</u>'; 
           echo '<br>'; 

           echo '<small>'; 
            echo " Price: ".$row_all["price"]; 
           echo '</small>'; 
           echo '<br>'; 

           echo "<p><u>Short Description:</u> ".$row_all["short_descripton"]."</p>"; 
           echo '<br>'; 

           echo "<p><u>Long Description:</u> ".$row_all["long_description"]."</p>"; 
           echo '<br>'; 

           echo '<hr>'; 
          echo '</form>'; 

        echo '<div>'; 

           } 
       echo '</div>'; 
      } 
?> 

     <content> 

      <!--SEARCH FOR VCR NAME--> 
      <form class="form" method="post"> 

       <label for="name" class="sr-only">VCR Name</label> 
       <input type="text" name="name" class="form-control" placeholder="VCR Name" required="" autofocus="" autocomplete="off"> 

       <button name="search" type="search" class="btn btn-success btn-block">Search</button> 

      </form> 
<?php 

//This is where i run into issues. The old name in the variable $vcrName is empty and i need it for the update SQL statement. 


      //UPDATE PHP 
      if(isset($_POST["alter"])) 
      { 

       //CREATE A SESSION VARIABLE FOR THE CUSTOMER ID 
       $customer_ID=$_SESSION['customer_ID']; 
       echo "Customer ID: ".$customer_ID; 
       echo '<br>'; 


       //CREATE VARIABLES 
       $changeTitle=$_POST["titleChange"]; 

       $changesDescChange=$_POST["sDescChange"]; 

       $changelDescChange=$_POST["lDescChange"]; 

       $changepriceChange=$_POST["priceChange"]; 

       $vcrName=$_POST['name']; 

       //UPDATE SQL 
       $sql_update="UPDATE product 
          SET 
          name='$changeTitle', 
          short_descripton='$changesDescChange', 
          long_description='$changelDescChange', 
          price='$changepriceChange' 
          WHERE 
          owner_ID='$customer_ID' AND name='$vcrName'"; 

       echo "SQL Update 0: ".$sql_update; 
       echo '<br>'; 
       echo '<br>'; 


       echo "Updated Name: ".$changeTitle; 
       echo '<br>'; 
       echo '<br>'; 


       echo "SQL Update 1: ".$sql_update; 
       return $sql_update; 
       echo '<br>'; 
       echo '<br>'; 

       $result_update = mysqli_query($con,$sql_update); 

       if($result_update){ 
        echo "Update Successful!"; 
       } 

       else { 
        echo "Update Unsuccessful"; 
       } 

      }  

?> 
       <!--UPDATE FORM--> 
       <form class="form" method="post"> 

        <label for="titleChange" class="sr-only">VCR Name</label> 
        <input type="text" name="titleChange" class="form-control" placeholder="VCR Name" required="" autofocus="" autocomplete="off"> 

        <label for="sDescChange" class="sr-only">Short Description</label> 
        <input type="text" name="sDescChange" class="form-control" placeholder="Short Description" required="" autofocus="" autocomplete="off"> 

        <label for="lDescChange" class="sr-only">Long Description</label> 
        <input type="text" name="lDescChange" class="form-control" placeholder="Long Description" required="" autofocus="" autocomplete="off"> 

        <label for="priceChange" class="sr-only">Price</label> 
        <input type="text" name="priceChange" class="form-control" placeholder="Price" required="" autofocus="" autocomplete="off"> 

        <button name="alter" type="submit">Change</button> 

       </form> 
     </content> 
    </body> 
</html> 
+0

これはウェブプログラミングの仕組みです。ブラウザからのすべてのリクエストは、新しいリクエストであり、ブラウザが送信する情報のみが含まれます。隠されたフォーム要素、またはクッキー、またはセッションを使用します(実際には、同じユーザーが戻ってくるように、クッキーによって識別されるファイル)。 – IMSoP

+0

あなたのHTML「フォーム」には「」要素はありません。あなたは '$ _POST'で何も得られません。 – miken32

+0

@ miken32 Huh?両方の例で ''要素がたくさん見られます。最初は1つ、2番目は4つです。 – IMSoP

答えて

0

あなたのPHPコードが存在しないPOST変数を参照:

<input type="hidden" name="name" value="<?=htmlspecialchars($vcrName)?>"/> 

:あなたの更新フォームで

$vcrName=$_POST['name']; 

、あなたは隠された値としてそれを渡す必要がありますこれらが2つの別々のPHPスクリプト(あるいはそうであれば、なぜそうであるか)は明らかではないので、その値を取得するためにデータベース呼び出しを行う必要があるかもしれません。ユーザインタフェースの観点からは、とにかくレコードを更新するときには、通常、既存の値が与えられる。これは、データを取得し、各フォーム要素にvalue属性を与えることを意味します。

関連する問題