Comment vérifier les champs optionnels dans $ _POST
Question
Pour le moment, mon code ressemble à ceci:
# Assign values for saving to the db
$data = array(
'table_of_contents' => Pour le moment, mon code ressemble à ceci:
<*>
Cela mènerait à des déclarations sans fin si ... Même avec la syntaxe ternaire, c'est toujours compliqué. Y a-t-il un meilleur moyen?
POST['table_of_contents'],
'length' => Pour le moment, mon code ressemble à ceci:
<*>
Cela mènerait à des déclarations sans fin si ... Même avec la syntaxe ternaire, c'est toujours compliqué. Y a-t-il un meilleur moyen?
POST['length']
);
# Check for fields that may not be set
if ( isset( Pour le moment, mon code ressemble à ceci:
<*>
Cela mènerait à des déclarations sans fin si ... Même avec la syntaxe ternaire, c'est toujours compliqué. Y a-t-il un meilleur moyen?
POST['lossless_copy']) )
{
$data = array(
'lossless_copy' => Pour le moment, mon code ressemble à ceci:
<*>
Cela mènerait à des déclarations sans fin si ... Même avec la syntaxe ternaire, c'est toujours compliqué. Y a-t-il un meilleur moyen?
POST['lossless_copy']
);
}
// etc.
Cela mènerait à des déclarations sans fin si ... Même avec la syntaxe ternaire, c'est toujours compliqué. Y a-t-il un meilleur moyen?
La solution
Que diriez-vous de cela:
// this is an array of default values for the fields that could be in the POST
$defaultValues = array(
'table_of_contents' => '',
'length' => 25,
'lossless_copy' => false,
);
$data = array_merge($defaultValues, Que diriez-vous de cela:
<*>
array_merge ()
fusionnera les valeurs, les valeurs les plus récentes remplaçant les précédentes.
Si vous ne voulez pas faire confiance à array_merge ()
, vous pouvez effectuer une boucle foreach ()
.
POST);
// $data is now the post with all the keys set
array_merge ()
fusionnera les valeurs, les valeurs les plus récentes remplaçant les précédentes.
Si vous ne voulez pas faire confiance à array_merge ()
, vous pouvez effectuer une boucle foreach ()
.
Autres conseils
Vous pouvez créer un tableau de champs facultatifs:
$optional = array('lossless_copy', 'bossless_floppy', 'foo');
foreach ($optional as $field) {
if (isset( Vous pouvez créer un tableau de champs facultatifs:
<*>POST[$field])) {
$data[$field] = Vous pouvez créer un tableau de champs facultatifs:
<*>POST[$field];
}
}
foreach ($fields = array();
$table = 'Current_Table';
// we are not using mysql_list_fields() as it is deprecated
$query = "SHOW COLUMNS from {$table}";
$result = mysql_query($query);
while ($get = mysql_fetch_object($result) ) {
$fields[] = $get->Field;
}
foreach($fields as $field) {
if (isset(foreach (<*>
n'oubliez pas de désinfecter vos valeurs $ _POST!
modifier : si vous souhaitez faire correspondre des valeurs facultatives $ _POST avec des champs pouvant ou non exister dans votre table, vous pouvez procéder de la manière suivante (je suppose en utilisant mysql):
<*>POST as $key => $value) {
$data[$key] = $value;
}
n'oubliez pas de désinfecter vos valeurs $ _POST!
modifier : si vous souhaitez faire correspondre des valeurs facultatives $ _POST avec des champs pouvant ou non exister dans votre table, vous pouvez procéder de la manière suivante (je suppose en utilisant mysql):
<*>POST[$field]) ) {
$data[$field] = foreach (<*>
n'oubliez pas de désinfecter vos valeurs $ _POST!
modifier : si vous souhaitez faire correspondre des valeurs facultatives $ _POST avec des champs pouvant ou non exister dans votre table, vous pouvez procéder de la manière suivante (je suppose en utilisant mysql):
<*>POST as $key => $value) {
$data[$key] = $value;
}
n'oubliez pas de désinfecter vos valeurs $ _POST!
modifier : si vous souhaitez faire correspondre des valeurs facultatives $ _POST avec des champs pouvant ou non exister dans votre table, vous pouvez procéder de la manière suivante (je suppose en utilisant mysql):
<*>POST[$field];
}
}
n'oubliez pas de désinfecter vos valeurs $ _POST!
modifier : si vous souhaitez faire correspondre des valeurs facultatives $ _POST avec des champs pouvant ou non exister dans votre table, vous pouvez procéder de la manière suivante (je suppose en utilisant mysql):
<*>POST as $key => $value) {
$data[$key] = $value;
}
n'oubliez pas de désinfecter vos valeurs $ _POST!
modifier : si vous souhaitez faire correspondre des valeurs facultatives $ _POST avec des champs pouvant ou non exister dans votre table, vous pouvez procéder de la manière suivante (je suppose en utilisant mysql):
<*>$formfields = <*>
Ceci ajoutera tous les champs qui sont retournés, y compris soumettre. Si vous avez besoin de savoir si une case à cocher n'a pas été cochée, vous devrez utiliser le code que vous avez posté. Si vous ne vous souciez que des cases à cocher cochées, vous pouvez utiliser le code ci-dessus.
Cela ne fonctionnerait probablement pas pour plusieurs champs de formulaire utilisant le même nom, tels que les boutons radio.
EDIT: Utilisez le code d'Owen, c'est plus propre, le mien est une version plus verbeuse de la même chose.
POST;
$data = array();
foreach(array_keys($formfields) as $fieldname){
$data[$fieldname] = <*>
Ceci ajoutera tous les champs qui sont retournés, y compris soumettre. Si vous avez besoin de savoir si une case à cocher n'a pas été cochée, vous devrez utiliser le code que vous avez posté. Si vous ne vous souciez que des cases à cocher cochées, vous pouvez utiliser le code ci-dessus.
Cela ne fonctionnerait probablement pas pour plusieurs champs de formulaire utilisant le même nom, tels que les boutons radio.
EDIT: Utilisez le code d'Owen, c'est plus propre, le mien est une version plus verbeuse de la même chose.
POST[$fieldname];
}
Ceci ajoutera tous les champs qui sont retournés, y compris soumettre. Si vous avez besoin de savoir si une case à cocher n'a pas été cochée, vous devrez utiliser le code que vous avez posté. Si vous ne vous souciez que des cases à cocher cochées, vous pouvez utiliser le code ci-dessus.
Cela ne fonctionnerait probablement pas pour plusieurs champs de formulaire utilisant le même nom, tels que les boutons radio.
EDIT: Utilisez le code d'Owen, c'est plus propre, le mien est une version plus verbeuse de la même chose.