Comment créer un bouton AND qui ajoute une instruction AND à une requête?

L.fcg

Je crée un type de générateur de requête et je souhaite implémenter un bouton pour ajouter une instruction AND à ma requête. J'ai créé une version dans laquelle j'ai implémenté 1 instruction AND, mais c'est un peu sournois et je veux que l'utilisateur ait la possibilité de faire plus d'une instruction AND. C'est le code que j'ai en ce moment.

MISE À JOUR Voici mon fichier .php:

   <?php

include "connect.php";

//Ophalen van de waarden uit de tabel(len) en veld(en) 
$table          = $_GET['tableSelected'];
$field          = $_GET['fieldSelected'];
$attribute      = $_GET['attributeSelected'];
$operator       = $_GET['operatorSelected'];
$fieldList      = $_GET['fieldList'];

$fieldstr = $fieldList . ",ST_AsGeoJSON(ST_Transform(l.geom,4326))";

$sql = "SELECT $fieldstr
        FROM $table l";

if (!empty($field) && !empty($operator) && !empty($attribute)) {
    $sql .= " WHERE {$field} {$operator} '{$attribute}' AND {$field}";
};

//echo ($sql);
?>

Et voici une image de ce à quoi cela devrait ressembler: Cliquez ici

Jeroen

Quelques choses:

  • Votre sql actuel échouera si la première paire est vidée car il n'y aura WHEREque des ANDclauses.
  • L'utilisation de tableaux en html vous permet d'utiliser des tableaux en php, ce qui rend tout beaucoup plus facile à traiter en effectuant une boucle dessus.

Un exemple simple:

html:

<select name="field[]">...</select>
<select name="operator[]">...</select>
<select name="value[]">...</select>

Vous pouvez utiliser javascript pour ajouter plus de paires du même code exact.

Maintenant, en php, vos $_POSTvariables seront des tableaux, vous pouvez donc faire quelque chose comme:

$sql = 'SELECT ...';

# this array will contain all "AND" conditions
$pairs = [];

# loop over all your select groups
foreach ($_POST['field'] as $key => $field) {
    if (!empty($field) && !empty($_POST['operator'][$key]) && !empty($_POST['value'][$key])) {
        $pairs[] = $field . " " . $_POST['operator'][$key] . " '" . $_POST['value'][$key] . "'";
    }
}

# add the conditions
if (count($pairs) > 0) {
    $sql .= ' WHERE ' . implode(' AND ', $pairs);
}

# add sort order, execute sql, etc...

En passant, vous devez remplacer la valeur par un espace réservé et utiliser des listes blanches pour les noms de base de données, de table et de colonne et les opérateurs pour éviter l'injection SQL / la rupture de votre requête.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Initialiser un tableau NumPy en fonction de son index

Vérifiez si tous les côtés d'un tableau numpy multidimensionnel sont des tableaux de zéros

obtenir la taille des types de données primitifs en python

Déclaration / définition de tableau C ++ et Java: différences

Commutateur de sécurité Spring vers les autorités d'authentification Ldap et de base de données

Comment détecter une chaîne qui ne contient que des espaces?

Spring @Transactional annule systématiquement la transaction en cas d'exception

Emplacement de la page précédente sur IronRouter

seuillage de l'image RVB dans OpenCV

Charger une vidéo à partir d'un fichier avec Kinect pour Windows avec SDK v2.0

Le code du pilote dans le module du noyau ne s'exécute pas?

Télégramme sur application iOS

Erreur requestCode renvoyée onActivityResult d'une autre activité

Accès aux éléments du tableau NumPy ne figurant pas dans une liste d'index donnée

numpy: valeur non valide rencontrée dans true_divide

Indexation de tableau numpy Python. Comment ça marche?

ajustement d'un cercle à une image binaire

UiPickerView avec étiquette fixe personnalisée et mise en page automatique

Ombre triangulaire sur ruban CSS

Problème de compilation CUDA avec CMake

matrice de rotation dans openCV

numpy: définition des valeurs sur zéro en fonction de plusieurs conditions

suppression d'entrées d'un tableau numpy

installation des wrappers python pour vlfeat

indexation de tableau multidimensionnel numpy

Empilez la colonne entière pour la table en CSS

mot clé synchronisé et verrous sur les méthodes d'instance

Poussée CUDA: copie d'un appareil à l'autre

Tableau C ++ 11 unique_ptr et paramètres du constructeur

TOP liste

  1. 1

    Comment exécuter un fichier python avec des droits d'administrateur dans pycharm

  2. 2

    comment obtenir un objet de requête dans les tests unitaires de django?

  3. 3

    mongo kafka connect source

  4. 4

    Vérifier la longueur du nombre à partir du message, puis utiliser la valeur dans l'instruction

  5. 5

    comment convertir une chaîne en un tuple dateutil jour de la semaine sans utiliser eval

  6. 6

    Comment ajouter un texte dans un texte Python/Tkinter

  7. 7

    Aide de variable de débogage pprint jinja2

  8. 8

    Dans les modèles Hugo, comment vérifier la longueur du tableau de fichiers JSON?

  9. 9

    Impression de la longueur du chemin le plus court dans le labyrinthe

  10. 10

    Exécuter la requête externe pour chaque date obtenue à partir de la requête interne

  11. 11

    Recherche de dicton Jinja2 à l'aide d'une clé variable

  12. 12

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  13. 13

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  14. 14

    définir une propriété pour chaque nœud dans neo4j

  15. 15

    Pourquoi cette requête Java échoue-t-elle? renvoyer 0 quand il y a des résultats

  16. 16

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  17. 17

    Laravel 8: Attempt to read property "id" on null

  18. 18

    Comment obtenir tous les champs d'un objet (y compris sa superclasse), à l'aide de l'API Mirrors de Dart?

  19. 19

    Référencement des assemblys de structure .net 4.7 dans la solution .net core 2

  20. 20

    Microsoft.WebApplication.targets

  21. 21

    obtenir le nombre de marqueur affiché sur la carte

chaudétiquette

Archive