Download link for each form? - php

I have set a site where I display small panels have some text on it and download button, all these data are linked from mysqli I successfully printed them but How do I Do like if button click open a link from the database depends on the button clicked,
I'm developing a shop by the way, So How do I achieve this? Here's my code also:
<?php
$query = "SELECT * FROM `combolist`";
$results = mysqli_query($db, $query);
if ($results)
{
while($row = mysqli_fetch_array($results))
{
echo "<div class='panel panel-primary'>";
echo "<div class='panel-heading'><span class='glyphicon glyphicon-list-alt'></span><b> ".$row['comboTitle']."</b> ".$row['comboDesc']."";
echo "<form>
<button type='submit' name='purchase' class='btn btn-default btn-block'>Download 2¢</button>
</form><b>".$row['addedDate']."</b> - Added Date";
echo "</div>";
echo "</div>";
}
}
?>
<?php
if (isset($_GET['purchase']))
{
$inciar_sessiono = $_SESSION["username"];
if ($credits > 2) {
$credits--;
$do_update = "UPDATE `users` SET credits='$credits' WHERE username='$inciar_sessiono'";
$results = mysqli_query($db, $do_update);
// ON SUCCESS OPEN LINK FROM DATABAWES?
echo '<script type="text/javascript">
window.open("http://google.com");
</script>';
} else {
echo " no funds";
}
}
?>
<div class="panel panel-primary">
<div class="panel-heading"><span class="glyphicon glyphicon-list-alt"></span> <b>Combolists
</b>
<form>
<button type="submit" name="purchase" class="btn btn-default btn-block">Download 2¢</button>
</form>
</div>
</div>

If I understand your question correctly you need to identify which button the user is clicking on. If that is the case a hidden form field would be a good solution.
<input type="hidden" id="yourid" name="downloadlink_id" value="2">
Then you can use the value of the hidden field, in my case "2" and fetch the value using $_GET['downloadlink_id'] in a mysqli query to get the value and use it in a mysqli query.
Like this:
SELECT comboDownloadLink FROM table_name WHERE id=2
Edit: You can get the correct id and print it in your while-loop:
echo '<form>';
echo '<input type="hidden" id="yourid" name="downloadlink_id" value=".$row["id"]">';

So I suppose you have a link in your DB. You can add link it by $row['comboDownloadLink'] . So now if you want to add it to the button you can place the button into an <a> tag like <a href='".$row['comboDownloadLink']."' target='_blank'><button ... > </a> . Now it's redirecting your user to a blank page and starting the download.

Related

Form submission shows the result after the second page refresh only in PHP

I created a form where as soon as I click on the input of the submit, it writes me a value on the column to the database table.
So far everything is fine, but when the current page reloads, I can't see the result that was written to the database.
I can only see the result if I submit the form for the second time on the same page.
My code:
<?php
$increId = $_order->getRealOrderId();
$pathAss = 'My file';
$connectionresource = Mage::getSingleton('core/resource');
$connectionWrite = $connectionresource->getConnection('core_write');
$table = 'sales_flat_order';
$query = "UPDATE ".$table." "
. "SET upload_file_1='" . $pathAss . "'"
. " WHERE increment_id='".$increId."'";
$connectionWrite->query($query);
?>
<form id="abbLogoOrder" action="" method="post" enctype="multipart/form-data">
<a href="<?php echo $_order->getupload_file_1(); ?>"
title="<?php echo basename($_order->getupload_file_1()); ?>">
<?php echo basename($_order->getupload_file_1()); ?>
</a> //THIS VALUE RETURNS EMPTY AFTER FIRST SUBMIT FORM
<b>
<?php
/* $testget = ['getupload_file_'.$count.'()'];
echo $_order->$testget; */
?>
</b>
<div class="upload-btn-wrapper">
<button class="btn" style="font-size:13px;">SELECT YOUR FILES</button>
<input type="file" name="abbFile<?php echo $count; ?>[]" id="abbFile<?php echo $count; ?>" multiple="multiple" />
<input type="submit" value="SEND" />
</div>
</form>
What am I doing wrong?
You are not re-fetching the order details after the save function. So the details are getting from the initial state, so the result is old, but the next reload it changes to updated value and shows the right output.
But still it's unclear where you are loading the order object.

How to send data that is not in a textbox via post in PHP

I want to send the id no. in a form so that i can delete the specific row, how do I do it?
...
$query = "SELECT id, text1, file FROM dynamic";
$resultObj = $connection->query($query);
...
<?php while($row = $resultObj->fetch_assoc()): ?>
<p><?=$row['text1']?><br>
<?php echo "<img src=".$row['file']." height=200 width=300 />"?>
</p><form action="server.php" method="post"> <button type="submit" name="delete_data">Delete</button></form>
<br> <br>
<?php endWhile; ?>
...
The button should then delete the specific entry only
You can place all into one form. Names can have brackets generating an array. Buttons can have a value.
<button type='submit' name='delete_data[]' value='{$row['file']}'>Delete</button>
Consider doing this with checkboxes and one button 'Delete checked items'.

Move image from one table to another using button

I am creating a button that will allow an admin to verify the image from users:
I don't know how to get the image ID when I click accept or reject.
Here's my code:
<?php
while($row = mysqli_fetch_array($result)) {
echo "<div class='grid-item'><img src='unimages/{$row['un_image']}'
onclick=onClick(this) style='width:98%' class='verifyimage' />
<form method='post' action='adminverify.php'>
<input class='button1' type='submit' name='accept' value='✓'>
<input class='button2' type='submit' name='reject' value='✘'>
</form>
</div>
";
}
mysqli_close($db);
?>
</div>
If the admin accepts, then the image should move from table2 to table1.
I know using INSERT INTO and DELETE will work, but how do I get the id for my picture.
Table 1:
Table 2:
Mmmh, you can use GET method for easier script:
while($row = mysqli_fetch_array($result)) {
echo "
<a href='?&action=accept&id={$row['un_id']}'>Accept</a>
<a href='?&action=reject&id={$row['un_id']}'>Reject</a>
";
}
And you use it like :
if(isset($_GET['action']) && isset($_GET['id'])) {
$image_id = $_GET['id']
// Then check if you must accept or reject with $_GET['action'] value
}
I'd add a hidden input that will be sent with the form:
echo "<div .....
<form....>
<input type='hidden' name='imageId' value='{$row['un_id']}'>
....
</form></div>";
You'll then have it in your receiving php script as
$image_id = $_POST['imageId'];

Why is it that the first user.id only display in the modal?

Why is it that the first user.id only display in the modal?
Here is my sample code
if($_SESSION['type'] == "Client" || $_SESSION['type'] == "Nursemaid")
{
$query = $con->query("SELECT * FROM `accounts` WHERE type = 'Agency'");
}
while($row = mysqli_fetch_array($query))
{
?>
<div>
<?php echo $row['username']; ?>
<?php echo $row['type'] ?>
<button data-toggle="modal" data-target="#reqNm">Request nursemaid</button>
</div>
This is my modal target
<div class="modal" id="reqNm">
<input type="text" name="a" value="<?php echo $row['user.id']; ?>">
<input type="checkbox" name="t1" value="gwapa">sample
<input type="checkbox" name="t2" value="but.an">sample
</div>
<?php
}?>
I don`t understand why it is only the first data can be display in my modal.
But if I dont use modal, it is okay.
That would be because you're only setting the first/last ID to the modal. You'd be better off with a solution similar to this.
1 Set a "data-id" attribute on the "modal" click link as such;
<button id="a-custom-button-id" data-toggle="modal" data-target="#reqNm" data-id="<?php echo $row['id']; ?>">Request nursemaid</button>
2 Create a jQuery event on the click of said button
jQuery(document).on('click', 'button#a-custom-button-id', function() {
var id = jQuery(this).data('id'); // fetch the ID
// place the ID as the value for your modal item;
jQuery('.modal input[name="a"]').val(id);
});
That way, when the user clicks the button, it'll populate the input with the relevant ID.
Note: This code is untested, you will need to configure it to ensure it works as required.

Retrieve DIV-content inside a Form

I have been searching for help from various forums and similar posts, but without any progress.
I have three pages, one that lets me insert information about projects into my database, a second that show the images and names of every project in the database, and a third page which I want to have a function that shows the image and name of the selected project in the second page.
Code on the second page(dashboardadmin.php):
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$conn = mysqli_connect("localhost","root","","wildfire");
if(mysqli_connect_errno())
{
echo mysqli_connect_error();
}
$sql= "SELECT pid, project_name, image, image_type FROM project";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
echo "<form action='omprojekt.php' method='post'>
<div id='comp' name='comp'>
<img src=pic.php?pid=".$row['pid']." width=100xp height=100xp/>"." ".$row['project_name']."
</div>
<input type='submit' name='submit' value='Choose' />
</form>";
}
}
else {
echo "0 results";
}
mysqli_close($conn);
?>
Code on the third page (omprojekt.php):
<?php
/* Tried both of the $val variables but of course only one at a time. This is only to show you what I have tried. */
$val = isset($_POST['comp']) ? $_POST['comp'] : '';
$val = $_POST['comp'];
if(isset($_POST['submit'])){
echo "$val";
}
?>
In the last code you can see that I have two $val variables, but I have only used one of them at a time in my codes. The purpose of showing both of them here is to show you that I have tried both of them.
What I want to do is to make the third page show the image and name of the selected project in the second page. As you see, I have tried to retrieve the content from the DIV using the same "name". The problem is that the third page(omprojekt.php) doesn't show any content at all, and not even any errors.
You're expecting the div to submit like an input, but it won't, because it's not an input. So put it in an input.
if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
// Don't use and id attribute because you're in a loop and you might have multiple id's with the same value.
echo "<form action='omprojekt.php' method='post'>
<div>
<img src=pic.php?pid=".$row['pid']." width=100xp height=100xp/>"." ".$row['project_name']."
</div>
<input type='hidden' name='pid' value='".$row['pid']."'>
<input type='hidden' name='project_name' value='".$row['project_name']."'>
<input type='submit' name='submit' value='Choose' />
</form>";
}
}
Then on the next page,
$val = (isset($_POST['pid']) && isset($_POST['project_name'])) ?
"<img src=pic.php?pid={$_POST['pid']} width=100xp height=100xp/> {$_POST['project_name']}" : '';
For the sake of completeness, there are a few other things wrong with your code.
1) The width and height attributes on the iamge should have quotes, and do not accept "px", they are just numbers. If you want to use "px" you should use style instead. <img src='' style='width:20px; height:20px;' />
2) You should be escaping user input before running it through your query.
Data will only be sent from a <form> to the action script if it exists in an <input...> HTML tag. You cannot pick data out of randon <DIV> tags etc.
So you could do this by using a hidden input field like this ( this is only one way )
if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
echo "<form action='omprojekt.php' method='post'>
<div>
<img src=pic.php?pid=".$row['pid'] .
" style="width:100px;height:100px" /> " .
$row['project_name']."
</div>
<input type='hidden' name='comp' value='" . $row['pid'] . "' />
<input type='submit' name='submit' value='Choose' />
</form>";
}
}
Now when you get to omprojekt.php the $_POST['comp'] variable will exist.
You can have as many hidden input fields as you like so if you want to pass the project_name as well just add another hidden field.

Categories