2017-10-09 5 views
0

Je rencontre des problèmes lors de la récupération des données du bouton radio. Je peux récupérer d'autres données des autres balises html mais dans le bouton radio je ne peux pas. Pourquoi donc? Pouvez-vous m'aider?PHP: impossible de récupérer les données du bouton radio POST

Mon code HTML est ici:

<form enctype="multipart/form-data" name="markpayment" method="post" action="test.app"> 
    <input type="hidden" name="action" value="mark_payment"> 
    <input type="hidden" name="client-id" value="{$details[row]->id}"> 
    <input type="hidden" name="invoice-id" value="{$details[row]->invoice_id}"> 
    <input type="hidden" name="period" value="{$details[row]->period}"> 
    <table width="100%" border="0" style="padding-top: 10px;"> 
    <tr align="center"> 
     <td class="radiobut"> 
     <input type="radio" id="choice1" name="payment_status" value="paid"> Paid</td> 
     <td class="radiobut"> 
     <input type="radio" id="choice2" name="payment_status" value="declined"> Declined</td> 
    </tr> 
    <tr align="center"> 
     <td colspan="2"> 
     <div class="paddingRow3"> 
      <select class="selectbut" id="payments" name="payment-method"> 
      <option value="Cheque">Cheque</option> 
      <option value="Deposit">Deposit</option> 
      <option value="Cash">Cash</option> 
      </select> 
     </div> 
     </td> 
    </tr> 
    <tr align="right"> 
     <td colspan="2"> 
     <div class="paddingRow3"> 
      <a href="javascript:void(0);" class="update" onclick="document.markpayment.submit()">Update</a> 
     </div> 
     </td> 
    </tr> 
    </table> 
</form> 

Alors que mon script PHP est ici:

if($_REQUEST['action'] == 'mark_payment'){ 
    echo '<pre>'; 
    print_r($_REQUEST); 
    exit; 
} 

Ma sortie sera comme ceci:

Array 
(
    [NONCE] => f305790c4d8b060121b99fe84a8fdf1a62321b3b06b9097caa8439e2f9c5bae7 
    [action] => mark_payment 
    [client-id] => 2699422 
    [invoice-id] => 13008351 
    [period] => 11 
    [payment-method] => Cheque 
) 
+1

avez-vous cliqué/sélectionné l'une des options radio? – Akintunde007

+0

@ Akintunde je l'ai fait, mais cela n'a pas fonctionné –

+0

@ Commentaire Akintunde est correct. Pour tester pouvez-vous définir checked = "true" pour l'une des radios et voir si la valeur atteint le serveur? – Juan

Répondre

1

Vous avez double name attributs de payment_status pour vos deux choix. Ils doivent être différents, ou seul le dernier élément d'entrée (#choice2) sera disponible.

Je suis allé avec payment_status_paid et payment_status_declined dans l'exemple suivant, mais vous pouvez également utiliser la notation carrée name="payment_status[]" support pour faire un tableau de POST données.

<form enctype="multipart/form-data" name="markpayment" method="post" action="test.app"> 
    <input type="hidden" name="action" value="mark_payment"> 
    <input type="hidden" name="client-id" value="{$details[row]->id}"> 
    <input type="hidden" name="invoice-id" value="{$details[row]->invoice_id}"> 
    <input type="hidden" name="period" value="{$details[row]->period}"> 
    <table width="100%" border="0" style="padding-top: 10px;"> 
    <tr align="center"> 
     <td class="radiobut"> 
     <input type="radio" id="choice1" name="payment_status_paid" value="paid"> Paid</td> 
     <td class="radiobut"> 
     <input type="radio" id="choice2" name="payment_status_declined" value="declined"> Declined</td> 
    </tr> 
    <tr align="center"> 
     <td colspan="2"> 
     <div class="paddingRow3"> 
      <select class="selectbut" id="payments" name="payment-method"> 
      <option value="Cheque">Cheque</option> 
      <option value="Deposit">Deposit</option> 
      <option value="Cash">Cash</option> 
      </select> 
     </div> 
     </td> 
    </tr> 
    <tr align="right"> 
     <td colspan="2"> 
     <div class="paddingRow3"> 
      <a href="javascript:void(0);" class="update" onclick="document.markpayment.submit()">Update</a> 
     </div> 
     </td> 
    </tr> 
    </table> 
</form> 

Pour que l'on est choisi, utilisez une condition:

if($_REQUEST['action'] == 'mark_payment'){ 
    echo '<pre>'; 
    print_r($_REQUEST); 
    if ($_POST['payment_status_paid']) { 
     // Payment was successful 
    } 
    else { 
     // Payment was declined 
    } 
    exit; 
} 

Hope this helps!

+0

Salut, encore ça n'a pas fonctionné :( –