redeemefy
redeemefy

Reputation: 4849

UPDATE query is not working php

Going to try to keep it short. I have a while loop in grid.php file to fill up a table as such...

<?php while($product = $products->fetch_assoc()) { ?>
  <tr>
    <td><?php echo $product['cd_id']?></td>
    <td><?php echo $product['cd_title']?></td>
    <td><?php echo $product['cd_musician_fname']?></td>
    <td><?php echo $product['cd_musician_lname']?></td>
    <td><?php echo $product['cd_price']?></td>
    <td><a href="edit.php?id=<?echo $product['cd_id'];?>" type="button" class="btn btn-primary">Edit</a></td>
    <td><a href="delete.php?id=<?echo $product['cd_id'];?>" type="button" class="btn btn-danger">Delete</a></td>
  </tr>
<?php } ?>

If I click the first anchor tag takes me to a edit.php file and here is the head code for that file.

<?php include '_includes/db.php';
$cd_id   = trim($_GET['id']);
$message = '';
include '_includes/connection.php';
if($db->connect_error){
  $message = $db->connect_error;
}else{
  $sql  = "SELECT * FROM CD WHERE cd_id = $cd_id";
  $result = $db->query($sql);
  $row = $result->fetch_assoc();
  if($db->error){
    $message = $db->error;
   }
 }
?>

Now I will show the html of edit.php

<!--        Product Musician last name-->
      <fieldset class="form-group">
        <label for="cd_musician_lname">Musician's lirst name</label>
        <input type="text" class="form-control" id="cd_musician_lname" name="cd_musician_lname" value="<?php echo $row['cd_musician_lname'];?>">
      </fieldset>
      <!--        End of Musician last name-->

      <!--        Product price-->
      <fieldset class="form-group">
        <label for="cd_price">Product price</label>
        <input type="text" class="form-control" id="cd_price" name="cd_price" value="<?php echo $row['cd_price'];?>">
      </fieldset>
      <!--    End of Product price-->

      <!--    Form submit button-->
      <a href="edit_confirm.php?id=<?echo $row['cd_id'];?>" type="submit" class="btn btn-primary">Update Record</a>
      <a class="btn btn-primary" href="index.php" role="button">Go Back Home</a>

I have the edit.php page working just fine but if I make changes in the fields and click the submit anchor tag I get all the fields of the row empty but the PK. Here is the code for the final edit_confirm.php file

<?php
include '_includes/db.php';

$cd_id             = trim($_GET['id']);
$cd_title          = $_POST['cd_title'];
$cd_musician_fname = $_POST['cd_musician_fname'];
$cd_musician_lname = $_POST['cd_musician_lname'];
$cd_price          = $_POST['cd_price'];

$message = '';
include '_includes/connection.php';

if($db->connect_error){
  die("Connection failed: ".$db->connect_error);
} else {
$sql = "UPDATE CD SET cd_title='".$cd_title."', cd_musician_fname='".
$cd_musician_fname."', cd_musician_lname='".
$cd_musician_lname."',   cd_price='".$cd_price."' WHERE cd_id = $cd_id ";
$db->query($sql);
var_dump($sql);
 }
?>

<!DOCTYPE html>
<html lang="en">
<head>
<?php include '_includes/main-head.php';?>
</head>
  <body>
  <?php include '_includes/main-navbar.php';?>

  <div class="container">
    <hr>
    <?php
    if($db->query($sql) === TRUE){ ?>
      <h1>Record updated successfully.</h1>
      <?php echo $cd_title; ?>
      <?php echo $record->affected_rows ?> 
      <p> record was updated in the database.</p></br>
   <?php } else { ?>
    <p>Error updating the record: </p> <?php $db->error; ?>
   <?php }; ?>


    <hr>
    <a class="btn btn-primary" href="index.php" role="button">Go Back Home</a>
    </div>
    <?php include '_includes/main-script.php';?>
  </body>
</html>

If you notice in the edit_confirm.php I did a var_dump to see what are the values in the variables and it shows empty.

I need help with this. Thank you in advance.

Upvotes: 1

Views: 1144

Answers (2)

Thiago Bel&#227;o
Thiago Bel&#227;o

Reputation: 114

Man the better way to do this is make it simple to test if the record is updating or not

formsample.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php 
    include("connection.php");
    $id =  $_GET['id'];
    $query= "select * from clients where id = '$id'";

    $sql = mysqli_query($connect, $query);
    $result = mysqli_fetch_assoc($sql);
    ?>
    <form action="process.php" method="post">
    <input type="text" name="name" id="name" value="<?php echo $result['name'] ?>" />
    <input type="text" name="email" id="email" value="<?php echo $result['email'] ?>" />
    <input type="hidden" name="id" id="id" value="<?php echo $id?>" />
    <input type="submit" />
    </form>
    </body>
    </html>

process.php

        <?php 
    include("connection.php");
    $id = $_POST['id'];
    $name = $_POST['name'];
    $email= $_POST['email'];
    $query = "UPDATE clients set name= '$name', email ='$email' where id = '$id'";
    $sql = mysqli_query($connect, $query);


    ?>

Upvotes: 2

Octo
Octo

Reputation: 139

<a href="edit_confirm.php?id=<?echo $row['cd_id'];?>" type="submit" class="btn btn-primary">Update Record</a>

This is not the proper way to submit a form - it won't work at all.

You need to have a form opening and closing tag, the target address is in the action attribute of the form element, and the method is on there too and should be post for this form (method="POST"). In your code you have a link where you should have a submit input so it won't submit the data, it will just redirect you to that URL. You should have something like this:

<input type="submit" value="Update Record" />

http://www.w3schools.com/html/html_forms.asp

Upvotes: 1

Related Questions