Jump to content

PHP Image Button if Statements


92-3kgt
Go to solution Solved by requinix,

Recommended Posts

So i am no PHP guru and i have barely coded in it (mostly HTML changes inside a PHP script). I have a basic setup on the page i am working on.

The page has 4 buttons, they are all sending an email report to our service desk email to report any printer issues in our print labs. I have the email sending working and coded. The issue is that each button has to submit a different coded email to the service desk.

I have the four buttons as images (not a lot of people like the boring normal buttons) here is the code:

<form action="" method="post">

<br/>
<br/>
<h2>Please select issue</h2>
<br/>


<input type="image" src="testing/images/need_toner.png"/>
<input type="hidden" name="toner" id="toner" tabindex="1" />
<input type="image" src="testing/images/paper_jam.png" /><br> <input type="hidden" name="paper-jam" id="paper-jam" tabindex="2" /><input type="image" src="testing/images/printer_fault.png" />
<input type="hidden" name="printer-fault" id="printer-fault" tabindex="3" />
<input type="image" src="testing/images/other.png" />
<input type="hidden" name="other" id="other" tabindex="4" />

</form>

So the buttons come out fine and look good and all that but when you click on any of the buttons it only executes the first PHP if code and ignores to check the others. Here is my PHP code (keep in mind i am not really a PHP person, i just know some general coding.

<?php

$url = 'testing/floor4/marketing'; // Setting the URL parameter for PHP

if(isset($_POST['toner']))
{

$to = 'XXX@XXX.com';
$subject = 'TONER NEEDED - AKRON_32 Marketing Printer';
$message = 'A request for toner has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);


header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>'; 

}

if(isset($_POST['printer-fault']))
{
$to = 'XXX@XXX.com';
$subject = 'PRINTER FAULT - AKRON_32 Marketing Printer';
$message = 'A printer fault has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>';
}


if(isset($_POST['paper-jam']))
{
$to = 'XXX@XXX.com';
$subject = 'PAPER JAM - AKRON_32 Marketing Printer';
$message = 'A paper jam has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>';
}


if(isset($_POST['other']))
{
$to = 'XXX@XXX.com';
$subject = 'OTHER - AKRON_32 Marketing Printer';
$message = 'An issue marked "other" has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>';
}

?>

So the code isn't the best structured i am sure so if you can help me out that'd be awesome, like i said i am no PHP coder. It's just weird how i originally had the coding working fine before i changed the echo text and had it redirect the headers no it just ONLY executes the first email for toner.

 

I am also very sorry this script is sloppy and potentially not structured correctly?
I've been piecing together snippets from different sites

Link to comment
Share on other sites

  • Solution

Hidden inputs are all sent with the form when it's submitted. However submit buttons ( and

 

So what you need to do is figure out what image button was clicked.

 

1. Remove the hidden inputs since they're not helping you.

2. Give names to the image buttons (eg, "toner").

3. Look for each button to tell which was clicked. Note that there will not be a "toner" but instead "toner_x" and "toner_y" values.

Link to comment
Share on other sites

requinex beat me to it, but I'll post the sample code I was working on:

 

 

<form action="" method="post">
<br/><br/>
<h2>Please select issue</h2><br/>
<input type="image" src="testing/images/need_toner.png" name="toner"/>
<input type="image" src="testing/images/paper_jam.png" name="paper-jam"/><br>
<input type="image" src="testing/images/printer_fault.png" name="printer-fault"/>
<input type="image" src="testing/images/other.png" name="other"/>
</form>

 

 

if(isset($_POST['toner_x']))
{
    echo "Perform the Toner action";
}
if(isset($_POST['paper-jam_x']))
{
    echo "Perform the Paper jam action";
}
if(isset($_POST['printer-fault_x']))
{
    echo "Perform the Printer Fault action";
}
if(isset($_POST['other_x']))
{
    echo "Perform the Other action";
}

 

Replace the echo statements with the relevant code for each option. Also, the two "fields" that are returned when clicking a button (fieldName_x 7 fieldName_y) will have values for the x & y positions that the mouse clicked on the relevant image. Put this on your page to "see" how it works:

 

echo "<pre>" . print_r($_POST, 1) . "</pre>";
  • Like 1
Link to comment
Share on other sites

I'm not sure who to thank first haha but thank you guys both!!!

 

I posted on Stack overflow but most of what they were doing/saying didn't quite make sense (and one of the snippets someone posted didn't work either).

I owe you guys a beer or something!

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.