[我已经编辑了整篇文章,以便打印整个脚本。我发布了一个类似的较短版本,因为我认为因为西班牙语会更容易...但当然......它不会......]
我有这样的表格:
<b>3. Selecciona una opción</b><br>
<input type ="checkbox" name="servicios[]" value="uno">Un sólo servicio<br>
<input type ="checkbox" name="servicios[]" value="dos">Dos servicios<br>
<input type ="checkbox" name="servicios[]" value="tres">Tres o más<br>
要获得用户所选择的内容:
$servicios = $_POST['servicios'];
if(isset($servicios)){
foreach ($servicios as $servicio) {
echo $x."<br>";
}
}
现在,我有一个数据库,并且有一个开关,我得到的数据库等同于用户选择的元素:
$consulta=mysqli_query($conexion,$query)
if($_SERVER['REQUEST_METHOD']=='POST') {
while($datosdelabase=mysqli_fetch_assoc($consulta)){
if(isset($servicios)){
foreach ($servicios as $servicio) {
switch ($servicio) {
case 'uno':
$servicios=$datosdelabase['uno'];
break;
case 'dos':
$servicios=$datosdelabase['dos'];
break;
case 'tres':
$servicios=$datosdelabase['tres'];
break;
}
echo "Servicios:".$servicio.": ".$servicios."<br>";
}
}
...
在数据库内部,我的每列都有整数值。
如果用户选择ie那样。 UNO。我使用$ servicio获得“Unsóloservicio”,使用$ servicios获得1(因为这是我从数据库获得的。
现在当我尝试获取类型时,我得到一个字符串而不是数组?那是为什么?
echo gettype($servicios); // string
var_dump($servicios); // returns: string(2) "Two"
答案 0 :(得分:3)
因为你在这里设置$ servicios:
$servicios=$datosdelabase['uno'];
或:
$servicios=$datosdelabase['dos'];
等...
编辑以删除错误的陈述:
您正在echo gettype($servicios);
中设置case
,这是数据库中的单个字符串
编辑:这是要更改的代码:
foreach ($servicios as $servicio) {
switch ($servicio) {
case 'uno':
$servicios=$datosdelabase['uno']; <--- CHANGE THIS to $servicios_2=$datosdelabase['uno'];
break;
case 'dos':
$servicios=$datosdelabase['dos']; <--- CHANGE THIS to $servicios_2=$datosdelabase['dos'];
break;
case 'tres':
$servicios=$datosdelabase['tres']; <--- CHANGE THIS to $servicios_2=$datosdelabase['tres'];
break;
}
echo "Servicios:".$servicio.": ".$servicios."<br>";
}
答案 1 :(得分:1)
因为这样的行会覆盖$ servicios的值
switch ($servicio) {
case 'uno':
$servicios=$datosdelabase['uno'];
...
$servicios=$datosdelabase['dos'];
....
$servicios=$datosdelabase['tres'];
你应该做的是使用另一个变量来获取$ datosdelabase中的值。你不应该使用$ servicios,因为那是你正在遍历的数组。
你可以试试这个。
$consulta=mysqli_query($conexion,$query)
if($_SERVER['REQUEST_METHOD']=='POST') {
while($datosdelabase=mysqli_fetch_assoc($consulta)){
if(isset($servicios)){
foreach ($servicios as $servicio) {
switch ($servicio) {
case 'uno':
$serviciosVal=$datosdelabase['uno'];
break;
case 'dos':
$serviciosVal=$datosdelabase['dos'];
break;
case 'tres':
$serviciosVal=$datosdelabase['tres'];
break;
}
echo "Servicios:".$servicio.": ".$serviciosVal."<br>";
}
}
...
我刚刚在案例中使用了$ serviciosVal而不是$ servicios。