Irin,
Quite a number of issues here, actually. We'll start with your question
and work from there. Using the checkbox <input type="checkbox"
name="Cheque" value="Cheque"> as an example, the code you would use to check
if it was set is:
if($_GET['Cheque'] == 'Cheque') {
// The Cheque checkbox was checked.
} else {
// The Cheque checkbox was NOT checked.
}
I cannot see why you would need an if...else if...else structure here
unless you only wanted to see if the Cash, Nets, OR Cheque checkbox was
selected. In that case I would use radio buttons instead of checkboxes and
give them all the same name, e.g.
<input type="radio" name="paymentType" value="Cash">
<input type="radio" name="paymentType" value="Nets">
<input type="radio" name="paymentType" value="Cheque">
Then do something like:
if($_GET['paymentType'] == 'Cash') {
// The Cash checkbox was checked.
} else if($_GET['paymentType'] == 'Nets') {
// The Nets checkbox was NOT checked.
} else {
// This must be the Cheque radio button.
}
Now a couple of caveats in your script:
You are using the GET method to send form data, which is fine. Just be
careful when sending large forms, as there is a limit on the amount of data
you can send using GET. I recommend using the POST method instead because
you can set the MAX_POST_SIZE in your php.ini file.
Next:
Cash: <?php echo "$$_GET[cheque]";?><BR>
This code fragment and others like it in your script are problematic.
$$_GET['cheque'] is actually saying "Give me the value stored in
$_GET['cheque'], use that as a variable name, and retrieve the value stored
in that new variable." In simplified code this would look like:
<?php
$_GET['cheque'] = 'foo';
$foo = 'bar';
echo $_GET['cheque']; // Returns 'foo';
echo $$_GET['cheque']; // Returns 'bar';
?>
If you don't want the extra dollar sign to be interpreted then do something
like this:
Cash: <?php echo "\$$_GET[cheque]";?><BR>
Next, your array index name MUST be surrounded by either single or double
quotes unless it is a number or a constant. If you don't, PHP assumes you
are actually asking for the value stored in a constant named 'cheque'.
Thus, your code becomes this:
Cash: <?php echo "\$$_GET['cheque']";?><BR>
Lastly, PHP really likes array variables to be enclosed in curly braces when
they are used within a string. This means one final change:
Cash: <?php echo "\$${_GET['cheque']}";?><BR>
I hope that answered your question!
-Rob
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 01, 2003 11:04 PM
To: [EMAIL PROTECTED]
Subject: if..else condition for checkbox
Hi all,
May I just ask how do I do a "if..elseif..else" condition to check if
a
"checkbox" have been checked. For some reference, I have attached my HTML
code
and PHP code below:
HTML:
<html>
<head>
<title>Payment Mode</title>
<style type="text/css">
@import url(receipt.css);
</style>
</head>
<body>
<form action="checkbox.php" method="get">
<br><br><br>
<div id="pagecontent1">
<div class="sectionheading">
Payment Mode:<br>
</div>
<div class="lighter">
<input type="checkbox" name="Cash" value="Cash" >Cash<br>
</div>
<div class="darker">
<input type="checkbox" name="Nets" value="Nets">Nets<br>
</div>
<div class="lighter">
<input type="checkbox" name="Cheque"
value="Cheque">Cheque<br></div><br>
<div class="sectionheading">
*For Cheque plus Cash payment only:
</div>
<div class="lighter">
Cheque: $ <input name="cheque" type="text" size="6" maxlength="6"><br>
</div>
<div class="darker">
Cash: $ <input name="cash" type="text" size="6"
maxlength="6"><br></div><br>
<input type="submit" name="submit" value="submit" align="center">
</div>
</form>
</form>
</body></html>
PHP Code:
<HTML>
<HEAD>
<title>Payment Mode</title>
<style type="text/css">
@import url(receipt.css);
</style>
</HEAD>
<BODY>
<br><br>
<div id="pagecontent1">
<div class="sectionheading">
<br>
<tr>
<td valign="top" class="darker" width="200">
<?php
}
?>
<?php echo "Payment Mode:Cash Plus Cheque"; ?>
<br>
</div>
</td>
Cash: <?php echo "$$_GET[cheque]";?><BR>
Cheque:<?php echo "$$_GET[cash]";?><BR>
<br>
<?php
$total = $_GET[cheque] + $_GET[cash];
$total=number_format($total, 2, ".", " ");
echo "<BR>Total payable: $$total<BR><BR>";
?>
</div>
</BODY>
</HTML>
Regards,
Irin.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php