sajeesh
sajeesh

Reputation: 21

Passing radio button

In my form I am trying to get the radio checked value to be passed on to the next page (which is an FPDF page) I have 4 options: Annual Leave, Sick Leave, Business Leave, & also others with a textfield.

However I have tried a lot of 'if' as well as 'switch cases' I am getting either only the element with value '1' or else 'Undefined index: rad in D:\xampp\htdocs\Application\generate_report.php on line 13'

some where I am wrong, can anyone help me please. My code below.

html form:

<form id="formmain" method="post" action="generate_report.php"   onsubmit="return_validate()">

<script type="text/javascript"> 

function selectRadio(n){ 

document.forms["form4"]["r1"][n].checked=true 

}

</script> 


    <table width="689">
    <tr>
      <td width="500d">
        <input type="radio" name="rad" value="0" />
      <label>Business Trip</label>
        <input type="radio" name="rad" value="1"/><label>Annual Leave</label>
        <input type="radio" name="rad" value="2"/><label>Sick Leave</label>
        <input type="radio" name="rad" value="3"/><label>Others</label>&nbsp;<input type="text" name="others" size="25" onclick="selectRadio(3)" />​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
       </td>
    </tr>
    </table>
  //....


 //below submit button is end of the html page: 
 <input type="submit" name="submit" value="send" />
 </form>

Generate PDF form:

  $radio = $_POST['rad']; // I am storing variable
  if($radio = 0) {
$type = 'Business Leave';
   }elseif ($radio = 1) {
    $type = 'Annual Leave';
   }elseif ($radio = 2) {
    $type = 'Sick Leave';
   } else { $type = $_POST['others']; }
//echo
$pdf->Cell(98,10, 'Reason | ' .$type , 1, 0, 'C', $fill);

Upvotes: 0

Views: 937

Answers (3)

JimP
JimP

Reputation: 1076

A further explanation on the OP. If you do not use == then you are setting the value, not checking it. Furthermore, there are levels of checking. Using the double equals (==) is effectively stating "is equal to" whereas using triple equals (===) is like stating "is absolutely equal to". Generally the == operator will do everything you need but sometimes when working with data types or specific values you might need ===. This is mostly FYI as the OP has an actionable solution.

Upvotes: 1

aksu
aksu

Reputation: 5235

You should always check if inputs are checked or any value inserted. If there's no value, then it throws an undefined index error. Also, you should replace =s to == in your if clauses. So:

PHP:

$radio = $_POST['rad']; // I am storing variable

if (isset($radio)) { // checks if radio is set

 if($radio == 0) {
  $type = 'Business Leave';
 }elseif ($radio == 1) {
  $type = 'Annual Leave';
 }elseif ($radio == 2) {
  $type = 'Sick Leave';
 } else { 
  if (isset($_POST['others'])) { // cheks if input text is set
   $type = $_POST['others']; 
  }
  else {
   echo 'Error';
  }
 }
 //echo
 $pdf->Cell(98,10, 'Reason | ' .$type , 1, 0, 'C', $fill);
 }
else {
 echo 'Error';
}

Now it should work.

Upvotes: 0

jwulf
jwulf

Reputation: 169

    if($radio = 0)

and

    elseif ($radio = 1)

and all the other elseifs have to be == 1, with two '='!

Upvotes: 1

Related Questions