Je dois insérer toutes les variables envoyées avec la poste, c'étaient des cases à cocher représentant chacune un utilisateur.
Si j'utilise GET, j'obtiens quelque chose comme ceci:
?19=on&25=on&30=on
J'ai besoin d'insérer les variables dans la base de données.
Comment obtenir toutes les variables envoyées avec POST? En tant que tableau ou valeurs séparées par des virgules ou quelque chose?
Réponses:
La variable
$_POST
est automatiquement renseignée.Essayez
var_dump($_POST);
de voir le contenu.Vous pouvez accéder à des valeurs individuelles comme celle-ci:
echo $_POST["name"];
Ceci, bien sûr, suppose que votre formulaire utilise le codage de formulaire typique (c.-à-d.
enctype=”multipart/form-data”
Si vos données de publication sont dans un autre format (par exemple JSON ou XML, vous pouvez faire quelque chose comme ceci:
$post = file_get_contents('php://input');
et
$post
contiendra les données brutes.En supposant que vous utilisez la
$_POST
variable standard , vous pouvez tester si une case à cocher est cochée comme ceci:if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes') { ... }
Si vous avez un tableau de cases à cocher (par exemple
<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>
Utiliser
[ ]
dans le nom de la case à cocher indique que les valeurs sélectionnées seront accessibles par le script PHP sous forme de tableau. Dans ce cas$_POST['myCheckbox']
, ne retournera pas une seule chaîne mais renverra un tableau composé de toutes les valeurs des cases à cocher qui ont été cochées.Par exemple, si j'ai vérifié toutes les cases,
$_POST['myCheckbox']
serait un tableau composé de:{A, B, C, D, E}
. Voici un exemple de la façon de récupérer le tableau de valeurs et de les afficher:$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>"; } }
la source
vous devriez pouvoir y accéder à partir de la
$_POST
variable:foreach ($_POST as $param_name => $param_val) { echo "Param: $param_name; Value: $param_val<br />\n"; }
la source
Il est obsolète et ne souhaite pas accéder directement aux superglobales (depuis php 5.5 je pense?)
Chaque IDE moderne vous dira:
Pour notre solution, pour obtenir tous les paramètres de requête, nous devons utiliser la méthode
filter_input_array
Pour obtenir tous les paramètres d'une méthode d'entrée, utilisez ceci:
Maintenant, vous pouvez l'utiliser dans
var_dump
ou vosforeach
-LoopsCe qui ne fonctionne pas, c'est d'accéder au Superglobal $ _REQUEST avec cette méthode. Il revient toujours
NULL
et c'est correct.Si vous avez besoin d'obtenir tous les paramètres d'entrée, en utilisant différentes méthodes, fusionnez-les simplement comme dans la méthode suivante:
function askForPostAndGetParams(){ return array_merge ( filter_input_array(INPUT_POST), filter_input_array(INPUT_GET) ); }
Edit: version étendue de cette méthode (fonctionne également lorsque l'une des méthodes de requête n'est pas définie):
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; }
la source
Alors, quelque chose comme le
$_POST
tableau?Vous pouvez utiliser
http_build_query($_POST)
pour les obtenir àvar=xxx&var2=yyy
nouveau dans une chaîne. Ou justeprint_r($_POST)
pour voir ce qu'il y a.la source
Pourquoi pas ça, c'est facile:
la source
En utilisant cela, vous pouvez obtenir toutes les variables de publication
la source