/ / incapaz de obtener el valor del campo de texto con la ayuda de las respectivas casillas de verificación. por favor ayuda - php, mysql, html, phpmyadmin

no se puede obtener el valor del campo de texto con la ayuda de las respectivas casillas de verificación. por favor ayuda - php, mysql, html, phpmyadmin

Tengo una duda. Tengo 3 cuadros de texto y cada uno tiene casillas de verificación junto a él. Quiero mostrar los valores de solo aquellos cuadros de texto en los que se hace clic en las casillas de verificación respectivas A continuación se adjuntan los códigos HTML y PHP:

<html>
<head>
</head>
<body>
<form name="f" method="post" action="4.php">
<table>
<tr>
<th> Facility </th>
</tr>
<tr>
<td><input type="text" name="a1" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Hostel"></td>
</tr>
<tr>
<td><input type="text" name="b1" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Transport"></td>
</tr>
<tr>
<td><input type="text" name="c1" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Food"></td>
</tr>
<tr>
<td colspan="3"><input type="submit" value="submit" /></td>
</tr>
</table>
</form>
</body>
</html>

y debajo está la parte de PHP.

<?php
$a=$_POST["a1"];
$b=$_POST["b1"];
$c=$_POST["c1"];

$facilityArray = $_POST["facility"];
$facility = "";
if(count($facilityArray) > 0)
{
foreach($facilityArray as $fac)
{
$facility .= " " . $fac;
}
}

echo $facility; echo "<br>";
echo $a; echo "<br>";
echo $b; echo "<br>";
echo $c;
?>

Con la ayuda de los siguientes códigos puedoMuestra todos los valores de las casillas marcadas. También puedo mostrar los valores de todos los cuadros de texto. Pero en realidad quiero mostrar los valores de solo aquellos cuadros de texto en los que se hace clic en las respectivas casillas de verificación. Sé que puede ser una pregunta muy básica pero, por favor, ayúdame a crecer en PHP. Gracias por adelantado... :(

Respuestas

1 para la respuesta № 1

Sus cuadros de texto también deben estar en una publicación de matriz para lograr esto.

Para lograr esto cambia las líneas de entrada como:

<td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>

Desde PHP, obtendrás los cuadros de texto publicados en una matriz como:

$textbox=$_POST["textboxes"];

A continuación, debe recorrer la matriz de casillas de verificacióny si la casilla correspondiente está "activada" (al hacer clic), muestre el valor de los cuadros de texto. Para hacer esto, también necesitaría un contador para asegurarse de que está en el mismo índice de matriz para las casillas de verificación y los cuadros de texto:

 if(count($facilityArray) > 0)
{
$i = 0;
foreach($facilityArray as $fac)
{
if($fac == "on")
{
echo $textbox[$i] . "</br>";
}
$i ++;
}
}

También he agregado un nombre a su botón de envío para que solo verifique el formulario cuando se envíe. Tu página ahora debería verse algo como esto:

        <?php
if(isset($_POST["submit"]))
{
$textbox=$_POST["textboxes"];

$facilityArray = $_POST["facility"];

if(count($facilityArray) > 0)
{
$i = 0;
foreach($facilityArray as $fac)
{
if($fac == "on")
{
echo $textbox[$i] . "</br>";
}
$i ++;
}
}

}
?>
<form name="f" method="post" action="4.php">


<table>
<tr>
<th> Facility </th>
</tr>
<tr>
<td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
</tr>
<tr>
<td><input type="text" name="textboxes[]" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
</tr>
<tr>
<td><input type="text" name="textboxes[]" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
</tr>
<tr>
<td colspan="3"><input name="submit" type="submit" value="submit" /></td>
</tr>
</table>
</form>

Para asegurarnos de que la variable $ _POST existe antes de asignarla a una variable, usamos el isset (). En su caso solo actualice el segmento php como:

<?php
if(isset($_POST["submit"]))
{
if(isset($_POST["textboxes"]))
{
$textbox=$_POST["textboxes"];

if(isset($_POST["facility"]))
{
$facilityArray = $_POST["facility"];

if(count($facilityArray) > 0)
{
$i = 0;
foreach($facilityArray as $fac)
{
if($fac == "on")
{
echo $textbox[$i] . "</br>";
}
$i ++;
}
}
}
}

}
?>

Donde los únicos cambios son la adición de otras dos declaraciones if que toman una marca booleana de la función isset () de acuerdo con si la variable $ _POST se ha publicado correctamente

if(isset($_POST["textboxes"]))

Y

if(isset($_POST["facility"]))