1

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.

3
  • Do you have short tags enabled? <?echo $product['cd_id'];?> (Having not used short tags ever I'm not sure the echo can run into that even). You also shouldn't just pass user input direct to SQL. Commented Nov 1, 2015 at 23:39
  • Cd_price is enclosed in quotes. Is it a char or number data type? Commented Nov 1, 2015 at 23:43
  • I don't know if short tags are enable. I just add the php that was missing. I think that one was the only one missing. Commented Nov 2, 2015 at 0:12

2 Answers 2

2

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); ?> 
Sign up to request clarification or add additional context in comments.

2 Comments

It is empty. Don't know why is not getting the value from the post.
Try to post it to another php file in the action of the form form action='dostuff.php' in the other file u debug the result
1
<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

3 Comments

It is wrap in form tags. I just past the last to fields.
The a tag still won't work though (even with type="submit" in it), it's not submitting the form, just redirecting you.
Good answer. May want to name the submit input so there's just the one thing to check for if the page is submitted.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.