Sanjay Gupta
Sanjay Gupta

Reputation: 3

unable to edit data in table using PHP form

Please look into this code unable to find out the actual error:

This is PHP upload code:

<?php
            include_once("config.php");
            if(isset($_GET['pro_id']))
            {
            $id=$_GET['pro_id'];
            if(isset($_POST['submitBtn']))          {
            $dept_id = $_POST['dept_id'];
            $cat_id = $_POST['cat_id'];
            /*$pro_id = $_POST['pro_id'];*/
            $pro_name = $_POST['pro_name'];
            $pro_desc = $_POST['pro_desc'];
            $pro_spec = $_POST['pro_spec'];
            $pro_price = $_POST['pro_price'];
            $status = 'on';
            $pro_keywords = $_POST['pro_keywords'];
            //image names
            $pro_image = $_FILES['pro_image']['name'];
            //temp images names
            $temp_image = $_FILES['pro_image']['tmp_name'];

            if($dept_id=='' OR $cat_id=='' OR $pro_name=='' OR $pro_desc=='' OR $pro_spec=='' OR $pro_price=='' OR  $pro_image=='' OR $pro_keywords=='')
                    {
            echo "<script>alert('All the fields are mandatory')</script>";
            exit();
                    }
            else
            {
            //upload image to folder
            move_uploaded_file($temp_image,"images/product_images/$pro_image");
            $run_query1 = mysqli_query($login, "update products1 SET (dept_id,cat_id,pro_name,pro_desc,pro_spec,pro_price,pro_image,status,date,pro_keywords) values (  '$dept_id','$cat_id','$pro_name','$pro_desc','$pro_spec','$pro_price','$pro_image','$status','NOW()','$pro_keywords' WHERE pro_id='$id'");

            if($run_query1)
                    {
                echo "<script>alert('Product updated successfully')</script>";
                exit();     
                    }
            else
                {
                echo "<script>alert('Errors')</script>";
                }
            }           }

            $query1 = mysqli_query($login, "select * from products1 where pro_id='$id'");
            $query2 = mysqli_fetch_array($query1);
            ?>

This the form Part where data retrieve from table and when click on the update button nothing happened and page is redirected to view data page and showing the old data:

<form action="ViewProduct.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
            <table width="650" border="0">

            <tr>
                <td width="183" align="right">Department:</td>
                <th width="231" align="left">
                <select name="dept_id" id="dept_id">
                    <option>Select Department</option>
                 <?php
                $result=dept_show();

                while($row=mysqli_fetch_assoc($result))
                {
                    echo "<option value='{$row['dept_id']}'>{$row['dept_name']}</option>";
                }                    
                ?>
                </select></th></tr>
              <tr>
                <td width="183" align="right">Catagory</td>
                <th width="231" align="left">
                <select name="cat_id" id="cat_id">
                    <option>Select Catagory</option>
                <?php
                $result1=cat_show();

                while($row=mysqli_fetch_assoc($result1))
                {
                    echo "<option value='{$row['cat_id']}'>{$row['cat_name']}</option>";
                }                    
                ?>
                </select></th></tr>
              <tr>
                <!--<td width="231"><input type="hidden" name="pro_id" id="pro_id" value="<t?php echo $pro_id; ?>" /></td>-->
              </tr>
              <tr>
                <td align="right">Product Name/Model:</td>
                <td><input type="text" name="pro_name" id="pro_name" value="<?php echo $query2['pro_name']; ?>" /></td>
              </tr>
              <tr>
                <td align="right">Product Description:</td>
                <td><textarea type="textarea" name="pro_desc" id="pro_desc" cols="45" rows="5"><?php echo $query2['pro_desc']; ?></textarea></td>
              </tr>
              <tr>
                <td align="right">Products Specification:</td>
                <td><textarea type="textarea" name="pro_spec" id="pro_spec" cols="45" rows="5"><?php echo $query2['pro_spec']; ?></textarea></td>
              </tr>
              <tr>
                <td align="right">Product Price:</td>
                <td><input type="text" name="pro_price" id="pro_price" value="<?php echo $query2['pro_price']; ?>" /></td>
              </tr>
              <tr>
                <td align="right">Product Image:</td>
                <td><input type="file" name="pro_image" id="pro_image" value="<?php echo $query2['pro_image']; ?>" /></td>
                </tr>
                <tr>
                <td></td>
                <td><input size="45" type="text" name="text" id="text" value="<?php echo $query2['pro_image']; ?>" /></td>
              </tr>
              <tr>
                <td align="right">Keywords:</td>
                <td><input size="45" type="text" name="pro_keywords" id="pro_keywords" value="<?php echo $query2['pro_keywords']; ?>" /></td>
              </tr>
              <tr>
                <td colspan="2" align="center"><input type="submit" name="submitBtn" id="submit" value="Update" /></td>
              </tr>
            </table>
          </form>
            </div> <?php } ?>
        </td>
        </tr>
    </table>
  </div>

Upvotes: 0

Views: 107

Answers (4)

tejashree mahadik
tejashree mahadik

Reputation: 315

Try to do this steps:

First thing comment out this line,

<!--<td width="231"><input type="hidden" name="pro_id" id="pro_id" value="<t?php echo $pro_id; ?>" /></td>-->   

next step, you are sending data using POST i.e. (form method="post"), so use this

if(isset($_POST['pro_id'])) , then comment out $pro_id = $_POST['pro_id']; 

you will get $pro_id value.

Upvotes: 0

Santosh Jagtap
Santosh Jagtap

Reputation: 1065

Form method is POST and you are using GET method in if loop

if(isset($_GET['pro_id']))

Use POST here.

I have made the changes in you complete code. Use this code and if required made the changes (if issues arrived)

PHP code

<?php
        include_once("config.php");

        if(isset($_POST['submitBtn']))          
        {
        $dept_id = $_POST['dept_id'];
        $cat_id = $_POST['cat_id'];
        $pro_id = $_POST['pro_id'];*/
        $pro_name = $_POST['pro_name'];
        $pro_desc = $_POST['pro_desc'];
        $pro_spec = $_POST['pro_spec'];
        $pro_price = $_POST['pro_price'];
        $status = 'on';
        $pro_keywords = $_POST['pro_keywords'];
        //image names
        $pro_image = $_FILES['pro_image']['name'];
        //temp images names
        $temp_image = $_FILES['pro_image']['tmp_name'];

        if($dept_id=='' OR $cat_id=='' OR $pro_name=='' OR $pro_desc=='' OR $pro_spec=='' OR $pro_price=='' OR  $pro_image=='' OR $pro_keywords=='')
                {
        echo "<script>alert('All the fields are mandatory')</script>";
        exit();
                }
        else
        {
        //upload image to folder
        move_uploaded_file($temp_image,"images/product_images/$pro_image");
        $run_query1 = mysqli_query($login, "update products1 SET (dept_id,cat_id,pro_name,pro_desc,pro_spec,pro_price,pro_image,status,date,pro_keywords) values (  '$dept_id','$cat_id','$pro_name','$pro_desc','$pro_spec','$pro_price','$pro_image','$status','NOW()','$pro_keywords' WHERE pro_id='$id'");

        if($run_query1)
                {
            echo "<script>alert('Product updated successfully')</script>";
            exit();     
                }
        else
            {
            echo "<script>alert('Errors')</script>";
            }
        }     
    }

        $query2 = array();
        if(isset($_GET['pro_id']))
        {
            $id=$_GET['pro_id'];
            $query1 = mysqli_query($login, "select * from products1 where pro_id='$id'");
            $query2 = mysqli_fetch_array($query1);
        }            
        ?>

HTML Code

<form action="ViewProduct.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
        <table width="650" border="0">

        <tr>
            <td width="183" align="right">Department:</td>
            <th width="231" align="left">
            <select name="dept_id" id="dept_id">
                <option>Select Department</option>
             <?php
            $result=dept_show();

            while($row=mysqli_fetch_assoc($result))
            {
                echo "<option value='{$row['dept_id']}'>{$row['dept_name']}</option>";
            }                    
            ?>
            </select></th></tr>
          <tr>
            <td width="183" align="right">Catagory</td>
            <th width="231" align="left">
            <select name="cat_id" id="cat_id">
                <option>Select Catagory</option>
            <?php
            $result1=cat_show();

            while($row=mysqli_fetch_assoc($result1))
            {
                echo "<option value='{$row['cat_id']}'>{$row['cat_name']}</option>";
            }                    
            ?>
            </select></th></tr>
          <tr>
            <td width="231"><input type="hidden" name="pro_id" id="pro_id" value="<t?php echo $pro_id; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Product Name/Model:</td>
            <td><input type="text" name="pro_name" id="pro_name" value="<?php echo $query2['pro_name']; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Product Description:</td>
            <td><textarea type="textarea" name="pro_desc" id="pro_desc" cols="45" rows="5"><?php echo $query2['pro_desc']; ?></textarea></td>
          </tr>
          <tr>
            <td align="right">Products Specification:</td>
            <td><textarea type="textarea" name="pro_spec" id="pro_spec" cols="45" rows="5"><?php echo $query2['pro_spec']; ?></textarea></td>
          </tr>
          <tr>
            <td align="right">Product Price:</td>
            <td><input type="text" name="pro_price" id="pro_price" value="<?php echo $query2['pro_price']; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Product Image:</td>
            <td><input type="file" name="pro_image" id="pro_image" value="<?php echo $query2['pro_image']; ?>" /></td>
            </tr>
            <tr>
            <td></td>
            <td><input size="45" type="text" name="text" id="text" value="<?php echo $query2['pro_image']; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Keywords:</td>
            <td><input size="45" type="text" name="pro_keywords" id="pro_keywords" value="<?php echo $query2['pro_keywords']; ?>" /></td>
          </tr>
          <tr>
            <td colspan="2" align="center"><input type="submit" name="submitBtn" id="submit" value="Update" /></td>
          </tr>
        </table>
      </form>
        </div> <?php } ?>
    </td>
    </tr>
</table>

Upvotes: 2

bicho
bicho

Reputation: 134

Your query of update is correct? I think you must use

UPDATE products1 SET dept_id='$dept_id',cat_id ='$cat_id'... the rest of values
WHERE pro_id='$id'

And verify if your dept_id is INT as well cat_id, so if they are INT you don't need ''

UPDATE products1 SET dept_id=$dept_id,cat_id =$cat_id

Upvotes: 1

Peter
Peter

Reputation: 1715

Your pro_id field is commented out in your HTML using <!-- and -->, so the following never is true:

if(isset($_GET['pro_id']))

Also, you have a mismatch between your form method POST and $_GET that you are looking for.

Upvotes: 1

Related Questions