Hi coders <3 I am a beginner in php, mysql thing and now i am stuck in one place. I have a table with approve and reject button in it, i want whenever I will will click on approve button, it will change the status of it as approved in the mysql table. How can i do this....through button click
here is my mysql table
here is the UI
and the coding is like this
<?php
// Connect to the database
$dbLink = new mysqli('127.0.0.1', 'root', '', 'hct_db');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Query for a list of all existing files
$sql = 'SELECT `quote_id`, `name`, `mime`, `size`, `created`, `status` FROM `quote`';
$result = $dbLink->query($sql);
// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
echo '<p>There are no files in the database</p>';
}
else {?>
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th>Quote ID</th>
<th>File Name</th>
<th>File</th>
<th>Size</th>
<th>Created</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead><tbody>
<?php
while($row = $result->fetch_assoc()) {
if ($row["status"]=="Not Approved")
{
echo "<tr>";
echo "<td>" . $row['quote_id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['mime'] . "</td>";
echo "<td>" . $row['size'] . "</td>";
echo "<td>" . $row['created'] . "</td>";
echo '<td>Download</td>';
echo "<td><input type='submit' name='submit' value='Approved'></td>";
echo "<td><input type='submit' name='submit' value='Reject'></td>";
echo "</tr>";
}}
?>
</tbody>
</table>
</div>
</div>
<!-- /.table-responsive -->
<?php
$result->free();
}
// Close the mysql connection
$dbLink->close();}
?>
1) You need to use ajax.
2) For every button you can use a form such as:
<form method="post" action="approved.php" target="_self">
<td>
<input type='submit' name='submit' value='Approved'>
<input type='hidden' name='quoteID' value='<?php echo $row['quote_id']?>'>
</td>
</form>
approved.php:
mysqli_connect
$approvedElement = $_POST['quoteID'];
$query = 'UPDATE ... WHERE `Quote ID` = \''.$quoteID.'\' ';
mysqli_query($query);
So before ajax I suggest you to learn basics about GET and POST methods.
In this example you need:
• form, to redirect the user to another page (approved.php, rejected.php)
• $_POST, in the second page to retrieve the ID of the approved element, and use it in the next step
• mysql_query, after you have correctly coded the query and successfully connected to the DB
Related
Right now my array displays information that I need, but I am trying to allow users to claim the jobs by clicking the "claim button" and posting their username, user id, order id, and setting the claimed info to show it is claimed.
<h3>Current Jobs</h3>
<p class="text-muted m-b-20">These are the jobs either in progress or are available to be claimed.</p>
<div class="table-responsive">
<? echo "<table class=\"table table-striped\">
<thead>
<tr>
<tr>
<th>Order #</th>
<th>Order Type</th>
<th>Order ID Number</th>
<th>Order Status</th>
<th>Order Dates</th>
<th>Order Claimed</th>
<th>Claim Job</th>
</tr>
</thead>
<tbody>";
$order_id = $row['order_item_id'];
$user_id = $uid;
$user_name = $username;
while($row = mysql_fetch_array($wclaim))
{
echo "<tr id=" . $row['order_item_id'] . ">";
echo "<td >" . $row['order_item_id'] . "</td>";
echo "<td>" . $row['order_item_name'] . "</td>";
echo "<td>" . $row['order_id'] . "</td>";
echo "<td>" . $row['post_status'] . "</td>";
echo "<td>" . $row['post_date'] . "</td>";
echo('<td>'.(($row['claim_aktiv']==1) ? 'Yes' : 'No').'</td>');
---> if(isset($_POST["submit"])) {
"INSERT INTO claimsystem (claim_id, user_id, user_name, claim_aktiv)
VALUES ('$order_id','$user_id','$user_name','1')";
}
---> echo "<td><input type=\"submit\" name=\"submit\"></input></td>";
echo "</tr>";
}
echo "</tbody></table>";
?>
The code I need help with has a arrow in front of it
--->
When I click on the submit button it does not do anything.
Since the only information you need from the user is an identifier for the given row, you can build a simple small form into each row. Structurally it would look something like this:
while($row = mysql_fetch_array($wclaim))
{
// output your table cells
echo "<td><form method=\"post\"><input type=\"hidden\" name=\"order_item_id\" value=\"" . $row['order_item_id'] . "\" /><input type=\"submit\" name=\"submit\"></input></form></td>";
}
Note the things in that table cell:
form - Each row would have its own small form, so you're only posting just that one row's value when clicking the button.
input type="hidden" - The order_item_id value to be submitted.
input type="submit" - the submit button
You can add an action to the form to post to another page, or post back to this same page by default. When handling the post, you'd just use the value being sent from the input type="hidden":
$_POST["order_item_id"]
That would be the identifier you need to insert the record.
I have echoed my database table onto my website and have tick option next to the table where you can tick it and delete any of the entries from the website, it should delete it from the database. For some reason its not working, I'm a beginner and any help would be greatly appreciated thanks.
<form method="" action="tester.php">
<?php
include 'connect_to_mysql.php';
$count=mysql_num_rows($result);
$result = mysql_query("SELECT * FROM booking ORDER BY ID ASC");
echo "<table border='1'>
<tr>
<th>DEL</th>
<th>Name</th>
<th>Email ID</th>
<th>Phone Number</th>
<th>Collection Address</th>
<th>Collection Date</th>
<th>Collection Time</th>
<th>Make & Model</th>
<th>Message</th>
</tr>";
while($row = mysql_fetch_array($result))
{
?>
<td align="center" bgcolor="#FFFFFF"><input name="delete_these[]" type="checkbox" id="checkbox[]" value="<?php echo $row['ID']; ?>"></td>
<?php
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "<td>" . $row['phonenumber'] . "</td>";
echo "<td>" . $row['collectionaddress'] . "</td>";
echo "<td>" . $row['collectiondate'] . "</td>";
echo "<td>" . $row['collectiontime'] . "</td>";
echo "<td>" . $row['makemodel'] . "</td>";
echo "<td>" . $row['message'] . "</td>";
echo "</tr>";
}
echo "</table>";
?> <br>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if(isset($_GET['delete'])) {
for($i=0;$i<$count;$i++){
$id = $checkbox[$i];
print_r($_GET['delete_these']);
$ids = implode(', ', $_POST['delete_these']);
$sql = "DELETE FROM booking WHERE id IN($ids)";
echo "<br />SQL: $sql<br />";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
}
}
mysql_close();
?>
</form>
you have add method in your form tag--
<form method="post" action="tester.php" >
and also replace if(isset($_GET['delete'])) to if(isset($_POST['delete']))
Replace your form tag by:
<form method="post" action="tester.php">
then these 3:
if(isset($_POST['delete']))
$id =(int)$_POST['delete_these'][$i];
$sql = "DELETE FROM booking WHERE id=$id";
at the place of these 3:
if(isset($_GET['delete']))
$id = $checkbox[$i];
$sql = "DELETE FROM booking WHERE id IN($ids)";
Your $id = $checkbox[$i]; works only if register_globals directive is on, which is now deprecated (and removed as of PHP 5.4) because of security issues it causes, and if it exists in the version of PHP you are using most hosting services turn it off.
You'll be sending the data through post so you access them through $_POST. the (int) before the $_POST is to cast anything to integer so if the user try to send a string it will become 0, this will protect you from sql injection.
SIDE NOTE you should stop using mysql_* functions as they are deprecated. Check out PDO or mysqli
I am having issue with deleting rows from a database that I echoed onto my website, I have used tick check boxes and when multiples are selected they should be deleted. But it's just NOT HAPPENING! Nothing is getting deleted from the database! please help!
<form method="" action="tester.php">
<?php
include 'connect_to_mysql.php';
$count=0;
$count=mysql_num_rows($result);
$result = mysql_query("SELECT * FROM booking ORDER BY ID ASC");
echo "<table border='1'>
<tr>
<th>DEL</th>
<th>Name</th>
<th>Email ID</th>
<th>Phone Number</th>
<th>Collection Address</th>
<th>Collection Date</th>
<th>Collection Time</th>
<th>Make & Model</th>
<th>Message</th>
</tr>";
while($row = mysql_fetch_array($result))
{
?>
<td align="center" bgcolor="#FFFFFF"><input name="delete_these[]" type="checkbox" id="checkbox[]" value="<?php echo $row['ID']; ?>"></td>
<?php
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "<td>" . $row['phonenumber'] . "</td>";
echo "<td>" . $row['collectionaddress'] . "</td>";
echo "<td>" . $row['collectiondate'] . "</td>";
echo "<td>" . $row['collectiontime'] . "</td>";
echo "<td>" . $row['makemodel'] . "</td>";
echo "<td>" . $row['message'] . "</td>";
echo "</tr>";
}
echo "</table>";
?> <br>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if(isset($_GET['delete'])) {
for($i=0;$i<$count;$i++){
$id =(int)$_POST['delete_these'][$i];
$sql = "DELETE FROM booking WHERE ID='$id'";
print_r($_GET['delete_these[]']);
$sql = "DELETE FROM booking WHERE id IN($ids)";
echo "<br />SQL: $sql<br />";
$result = mysql_query($sql);
}
if($result){
}
}
mysql_close();
?>
</form>
First off you can just implode() all the gathered ids from the form and from there build the query.
Sample code:
<form method="POST" action="index.php">
<table>
<?php while($row = mysql_fetch_array($result)): ?>
<tr>
<td><input type="checkbox" name="delete_these[]" value="<?php echo $row['id']; ?>" /></td>
<td><?php echo $row['name']; ?></td>
</tr>
<?php endwhile; ?>
</table>
<input type="submit" name="delete" value="Delete Selected" />
</form>
<?php
$selected_values = array();
if(isset($_POST['delete'])) {
$selected_values = $_POST['delete_these'];
$ids = implode(',', $selected_values);
$query = mysql_query("DELETE FROM booking WHERE id IN($ids)");
// this becomes -> delete from booking where id in (1, 2, 3, ...)
}
?>
and while you still can, use mysqli or PDO, its free anyway
I have this problem in displaying the result in td inside table. I want to display all rows coming from the database.
I have code but it results only one row.
<table class="table table-striped table-bordered table-hover" id="dataTables">
<thead>
<tr>
<th>ID</th>
<th>Role</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<?php
$con=mysqli_connect("localhost", "root", "", "trackingsys");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query="SELECT * from role" ;
$result = mysqli_query($con,$query);
while ($row = mysqli_fetch_assoc($result)) {
echo '<tr>';
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['RoleName'] . "</td>";
echo "<td>" . $row['RoleDesc'] . "</td>";
echo '</tr>';
}
mysqli_close($con); ?>
</tbody>
</table>
I edited this code and put the ending tag </td>. But still it results only one row.
every time user insert information and click add button, new data will store to database and echo into this table
table
<tr>
<td colspan="4" align="right">
<input type="image" value="image" src="images/btn_add.gif" onclick="action_1()">
</td>
</tr>
<tr>
<td colspan="2" class="title_all_u">Family Member Summary</td>
</tr>
<tr>
<td>
<?php
$query = "SELECT * FROM family_child WHERE LAS_login_id = ($emp_id)";
$result = mysql_query($query) or die(mysql_error());
echo "<table border='1'>
<tr>
<th>Family Type</th>
<th>Name</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['family_child_type'] . "</td>";
echo "<td>" . $row['family_child_name'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
</td>
</tr>
and this is insert query
if ( $action ==3 ) {
$spouse_type = $_POST['spouse_type'];
$spouse_name = $_POST['spouse_name'];
$sql1 = "INSERT INTO family_spouse (LAS_login_id, spouse_type, spouse_name) VALUES ('$LAS_login_id', '".strtoupper($spouse_type)."','".strtoupper($spouse_name)."')";
this 2 code is working for insert into database and echo in the page.
How can I add delete button below echo "<td>" . $row['family_child_name'] . "</td>"; for each row that I echo so user can delete the wrong row in the display table.
echo "<td>" . $row['family_child_name'] . " <a href='page.php&action=delete&id=family_name_id'>Delete</a></td>
Then in your page get (if action == delete) > execute your query to delete the row where the ID is the id of the family child name table.
$query = "SELECT * FROM family_child WHERE LAS_login_id = ($emp_id)";
$result = mysql_query($query) or die(mysql_error());
echo "<table border='1'>
<tr>
<th>Family Type</th>
<th>Name</th>
<th>Action</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>
<td>" . $row['family_child_type'] . "</td>
<td>" . $row['family_child_name'] . "</td>
<td>
<a href='../path/process.php?action=delete&id=".$row['family_child_id']."'>
DELETE RECORD
</a>
</td>
</tr>";
}
echo "</table>";
?>
on process page check action = delete and write query for delete there
family_child_id = ur primary key of table change according to ur table details
EDIT
PROCESS PAGE:
if($_GET["action"] == "delete")
{
$sql3="DELETE FROM family_child WHERE LAS_login_id =".$_GET["LAS_login_id"];
$result3 = mysql_query($sql3);
if (mysql_affected_rows() > 0)
{
header("location:dashboard.php?tab=1");
}
}
this coding working perfectly. i tried in my pc and posted this code here. it will insert the delete button automatically when u insert the new record. and then if u click delete button it will delete the row details in mysql db..
<body>
<?
echo "<tr>
<td>";
// your database connection
// select database
$query = ("SELECT * FROM family_child");
$result = mysql_query($query) or die(mysql_error());
echo "<table border=1>
<tr>
<th>Family Type</th>
<th>Name</th>
<th>Delete Record</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['family_child_type'] . "</td>";
echo "<td>" . $row['family_child_name'] . "</td>";
echo "<td><form method=post>
<input name=id type=hidden value='".$row['family_child_name']."';>
<input type=submit name=submit value=Delete>
</form></td>";
echo "</tr>";
}
echo "</table>";
echo "</td>
</tr>";
// delete record
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['id']))
{
$id = mysql_real_escape_string($_POST['id']);
$sql = mysql_query("DELETE FROM family_child WHERE family_child_name ='$id'");
if(!$sql)
{
echo ("Could not delete rows" .mysql_error());
}
}
}
?>