Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    Clausola or e parentesi in query dinamica

    Salve a tutti,

    ho finito di scrivere da zero il motore di ricerca del gestionale di cui a pezzi vi ho fatto partecipi nei mesi passati tramite problemi riscontrati e curiosità sopraggiunte.

    Ho costruito una classe search con alcuni metodi ed un metodo contenitore finale che va a costruire dinamicamente la query di ricerca, e se non c'è ricerca costruisce il body del form di ricerca. Tutto bene finchè non si seleziona la clausola OR in una delle congiunzioni, cosa che mi costringe a fare un numero "n" di controlli sull'OR della linea precedente e anche su quello della successiva per capire come settare le parentesi nel modo giusto.

    Parte del codice


    Codice PHP:

    //body composto da optgroup e select tratte da array di appoggio con le liste di optionkey => value.

    public function implodeQuery() {
            
    $implode implode(" "$this->query1);
            return 
    $implode;
    }

    public function 
    CheckQueryExists($query) {
            if (!
    in_array ($query$this->query1)) {
                    
    $this->query1[]= $query;
                }
             }

            public function 
    SetJoin($input) {
            if(
    in_array($input$this->quote_associative)) {
                
    $query "LEFT JOIN db.quote_associative on anagrafica.id = quote_associative.anagrafica_id";
                
    $this->CheckQueryExists($query);
                  } 

     public function 
    Search1() {
             
    $result $this->Check("AND"$this->voce1$this->comparazione1$this->input1$this->andor1$this->andor2);  // Check () è il metodo di controllo sui criteri "uguale a", "minore di" etc.etc che varia la forma della query da LIKE %value a LIKE %value% etc. in base alla necessità.
             
    return $result;    }


    //metodo implementazione
    public function querysearch () {

                       if (isset(
    $_POST['input1'])) {
                
    $this->SetJoin($this->voce1);
                
    $query2 $this->Search1(); //e cosi via per ogni singolo input del form 
    Il codice è solo uno stralcio del tutto, ma credo dia l'idea del sistema che ho usato per costruire la ricerca.

    In pratica, $this->query1 è un array nel quale concateno le stringe di query che vado a ricomporre con il metodo ImplodeQuery(). Alcuni dei controlli li ho impostati con il confronto su array preimpostato a mano.

    la mia domanda ora è:

    Esiste un trick in php (o mysql) per non settare controlli incrociati continui fra le congiunzioni per creare la giusta query con la clausola OR e le parentesi?
    Ultima modifica di Korenaar; 23-07-2014 a 15:04

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.