Necesito insertar todas las variables enviadas con la publicación, eran casillas de verificación que representaban a un usuario.
Si uso GET, obtengo algo como esto:
?19=on&25=on&30=on
Necesito insertar las variables en la base de datos.
¿Cómo puedo enviar todas las variables con POST? ¿Como una matriz o valores separados por comas o algo así?
Respuestas:
La variable
$_POST
se completa automáticamente.Intenta
var_dump($_POST);
ver el contenido.Puede acceder a valores individuales como este:
echo $_POST["name"];
Esto, por supuesto, supone que su formulario está utilizando la codificación de formulario típica (es decir,
enctype=”multipart/form-data”
Si los datos de su publicación están en otro formato (por ejemplo, JSON o XML, puede hacer algo como esto:
$post = file_get_contents('php://input');
y
$post
contendrá los datos sin procesar.Suponiendo que está utilizando la
$_POST
variable estándar , puede probar si una casilla de verificación está marcada como esta:if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes') { ... }
Si tiene una serie de casillas de verificación (p. Ej.
<form action="myscript.php" method="post"> <input type="checkbox" name="myCheckbox[]" value="A" />val1<br /> <input type="checkbox" name="myCheckbox[]" value="B" />val2<br /> <input type="checkbox" name="myCheckbox[]" value="C" />val3<br /> <input type="checkbox" name="myCheckbox[]" value="D" />val4<br /> <input type="checkbox" name="myCheckbox[]" value="E" />val5 <input type="submit" name="Submit" value="Submit" /> </form>
El uso
[ ]
en el nombre de la casilla de verificación indica que el script PHP accederá a los valores seleccionados como una matriz. En este caso$_POST['myCheckbox']
, no devolverá una sola cadena, pero devolverá una matriz que consta de todos los valores de las casillas de verificación que se marcaron.Por ejemplo, si he comprobado todas las casillas,
$_POST['myCheckbox']
sería una matriz que consiste en:{A, B, C, D, E}
. A continuación, se muestra un ejemplo de cómo recuperar la matriz de valores y mostrarlos:$myboxes = $_POST['myCheckbox']; if(empty($myboxes)) { echo("You didn't select any boxes."); } else { $i = count($myboxes); echo("You selected $i box(es): <br>"); for($j = 0; $j < $i; $j++) { echo $myboxes[$j] . "<br>"; } }
fuente
debería poder acceder a ellos desde la
$_POST
variable:foreach ($_POST as $param_name => $param_val) { echo "Param: $param_name; Value: $param_val<br />\n"; }
fuente
Está en desuso y no desea acceder a superglobales directamente (¿desde php 5.5, creo?)
Cada IDE moderno le dirá:
Para nuestra solución, para obtener todos los parámetros de solicitud, tenemos que usar el método
filter_input_array
Para obtener todos los parámetros de un método de entrada, use esto:
Ahora puedes usarlo en
var_dump
tusforeach
-LoopsLo que no funciona es acceder al $ _REQUEST Superglobal con este método. Siempre vuelve
NULL
y eso es correcto.Si necesita obtener todos los parámetros de entrada, pasando por diferentes métodos, simplemente combínelos como en el siguiente método:
function askForPostAndGetParams(){ return array_merge ( filter_input_array(INPUT_POST), filter_input_array(INPUT_GET) ); }
Editar: versión extendida de este método (funciona también cuando uno de los métodos de solicitud no está configurado):
function askForRequestedArguments(){ $getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array(); $postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array(); $allRequests = array_merge($getArray, $postArray); return $allRequests; }
fuente
Entonces, ¿algo como la
$_POST
matriz?Puede usar
http_build_query($_POST)
para volver a ponerlos en unavar=xxx&var2=yyy
cadena. O simplementeprint_r($_POST)
para ver qué hay allí.fuente
Por qué no esto, es fácil:
fuente
Usando esto puedes obtener todas las variables de publicación
fuente