【问题标题】:How to send a radio button and a checkbox value from a html form?如何从 html 表单发送单选按钮和复选框值?
【发布时间】:2015-11-03 21:19:30
【问题描述】:

我正在创建一个带有选择、输入、单选按钮和复选框等的表单。 我的问题的部分代码是这样的:

formulario.html

<form action="suporte_email.php" method="post" name="formulario" id="formulario" >

    <div class="conjunto7" id="conjunto7">
    		   <label for="garantia">Garantia</label><br>
    		     <div>
    			 <input id="radio1" type="radio" name="radio"  value="Sim">
    			    <label for="radio1"><span><span></span></span> Sim </label>
    			 </div>
    			 
    			 
    		     <div>
    			   <input id="radio2" type="radio" name="radio"  value="Não">
    			    <label for="radio2"><span><span></span></span> Não </label>
    			 </div>
    </div>
    		  
    		  <br><br><br><br>
    		  
    <div class="conjunto8" id="conjunto8">
    		   <label for="contrato">Contrato</label><br>
    		      <div>
    			    <input id="checkbox1" type="checkbox" name="checkbox"  value="Sim">
    			     <label for="checkbox1"><span></span> Sim </label>
    			  </div>
                  
    			  <div>
    			    <input id="checkbox2" type="checkbox" name="checkbox"  value="Não">
    				 <label for="checkbox2"><span></span> Não </label>
    			  </div>
    </div>

</form>

suporte_email.php

//Get Data
$nome = $_POST['nome'];                    
$empresa = $_POST['empresa'];              
$contacto = $_POST['contacto'];            
$email = $_POST['email'];                  
$marca = $_POST['marca'];                   
$other = $_POST['other'];                    
$serial_number = $_POST['serial_number'];     
$garantia = $_POST['garantia'];               
$contrato = $_POST['contrato'];             
$permissoes = $_POST['permissoes'];           
$descricao_avaria = $_POST['descricao_avaria'];
$checkbox = $_POST['checkbox'];
$radio = $_POST['radio'];

   // Parse/Format/Verify Data
   $to      = "teste@gmail.com"; 
   $from    = '';
   $subject = "Formulário de Suporte";

   $email_body = "$crlf De: $nome$crlf Email: $email$crlf Assunto: $subject$crlf$crlf Empresa: $empresa$crlf Contacto: $contacto$crlf Marca: $marca$crlf Outra: $other$crlf Número de Série: $serial_number$crlf Garantia: $garantia$crlf Contrato: $contrato$crlf Tipo de Suporte: $permissoes$crlf$crlf Descrição da Avaria: $descricao_avaria";

   // Setup EMAIL headers, particularly to support UTF-8
   // We set the EMAIL headers here, these will be sent out with your message
   // for the receiving email client to use.
   $headers = 'From: ' . $from  . $crlf .
           'Reply-To: ' . $email  . $crlf .
           'Content-Type: text/plain; charset=UTF-8' .  $crlf .
           'Para: Website'  .  $to . $crlf .
           'X-Mailer: PHP/' . phpversion();


   // Then we pass the headers into our mail function
   mail($to, $subject, $email_body, $headers);
   header('Location: agradecimentos.html');

}

基本上,当我收到电子邮件时,单选按钮和复选框中的变量不会出现。我想从收音机和复选框接收选定的值。

P:S: 还尝试将$garantia 的位置更改为$radio,将$contrato 的位置更改为$checkbox。

【问题讨论】:

  • 您的收音机和复选框在 POST 上相互覆盖。您需要具有诸如name="checkbox[]" 之类的字段名称 - 以便您可以发布一个数组。然后,在 PHP 中,您可以通过 $_POST['checkbox'] 访问它们或将它们内爆成单个字符串 implode(", ", $_POST['checkbox'])
  • @HalfCrazed 所以我更改了 name="radio" 我把 name="radio[]" 放在哪里和 name="checkbox" 我把 name="checkbox" 放在哪里对吗?我将尝试运行该代码并告诉你是否有效:D 谢谢!
  • 非常感谢@HalfCrazed 的帮助,但我用 foreach 编写了代码,但它仍然没有发送带有 radio 和 checkbox 值的电子邮件。

标签: php html checkbox radio-button forms


【解决方案1】:

您的复选框具有相同的名称:

<input id="checkbox1" type="checkbox" name="checkbox"  value="Sim">
<input id="checkbox2" type="checkbox" name="checkbox"  value="Não">

这意味着表单中的最后一个复选框是在 $_POST 中设置值的复选框。

单选按钮可以使用重复的名称,因为它们是OR 类型的选择 - 组中只能选择一个单选按钮。但是复选框是AND - 您可以选择多个复选框,这意味着每个复选框都必须有一个唯一的名称。

或者,您可以使用 PHP 的数组名 hack:

<input id="checkbox2" type="checkbox" name="checkbox[]"  value="Não">
                                                    ^^---

它告诉 PHP 期望同一个字段名有多个不同的值,它会在 $_POST 中为每个值生成一个数组。

【讨论】:

  • 好的,我没注意到 :p 非常感谢。我的另一个问题与 .php 有关,因为发送时这些值显示为空。那么,对于单选按钮,我可以使用相同的 name="radio[]" 对吗?
  • 在 PHP 中,您发布的值将是数组......所以,foreach($_POST['checkbox'] as $value) echo $value; - 但是,您需要弄清楚如何处理数据......另外,就像我对您的其他评论一样问题,如有必要,您可以将值内爆为单个字符串。
  • 对于单选按钮,没有必要。您不能在 name=... 集合中选择多个单选按钮,因此只有一个值(应该)被发送到服务器。
猜你喜欢
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多