I have been making a MVC site, I am having trouble sending the row id from my form to my controller.
The code that I am using for my form gets the row ID for each db entry and assigns it to a hidden value. When the form is submitted it sends the parameters to the controller (should send $uid) but the uid isn’t making it to the controller.
Form Code (buttons.php)
<?php $itemsDAO = new ItemsDAO(); $result = $itemsDAO->getItems(); foreach ($result as $row) { $uid = $row['id']; ?> <form action="index.php" method="post"> <fieldset> <input id='action' type='hidden' name='action' value='deleteItem' /> <p> <div class="form-group"> <div class="controls"> <input type="hidden" id="fId" name="fId" value="<?php echo $uid; ?>"> <input type="submit" class="btn btn-success" value="Delete"> </div> </div> </p> </fieldset> </form> <?php } ?>
Controller function
function deleteItem($parameters) { $id=$parameters["fId"]; if ($this->model->deleteItem( $id )) { $this->model->hasDeleteFailed = false; $this->model->setDeleteItemConfirmation(); return (true); } else $this->model->deleteItemError ( DELETE_ITEM_ERROR_STR ); }
View.php – where I am showing the list of db items and the buttons.php
$this->model->prepareItemList(); $buttons = file_get_contents( "templates/buttons.php"); $HTMLItemList = ""; foreach ( $this->model->itemList as $row ) $HTMLItemList .= "<li><strong>" . $row ["title"] . ": </strong>" . $row ["price"] . "<blockquote>" .$row ["description"] . " " . $buttons ."</blockquote></li>";
Advertisement
Answer
Okay,
step by step the $uid has to first make it into the form elements value attribute. Check the html source code to make sure this is actually happening.
place var_dump($_POST) exit; in your controller to find what is actually being recieved if anything at all.
check to make sure your result array element actual has a value and not an empty string value or NULL.
Hmm S.O. code formatting bad.
// turn on error reporting for dev to view empty or missing variable errors ini_set('error_reporting', E_ALL); $result=$itemsDAO->getItems(); foreach ($result as $row) { ($row['id'] != ''? $uid = $row['id'] : $uid ='no id found'); // debug result echo '<pre>' . print_r($row,1) .'</pre>'; }