[PHP] Ricerca record tramite post

Discussione in 'PHP' iniziata da ONE313, 4 Ottobre 2018.

  1. ONE313

    ONE313 Nuovo Utente

    Registrato:
    10 Settembre 2016
    Messaggi:
    36
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Buona sera, ho un problema nel visualizzare il risultato di due tabelle relazonate tra loro, utilizzando anche un select box. Volevo fare una ricerca come siti subito,amazon tramite categoria o prodotto.

    PHP:
    ?php

    $Host 
    "localhost";
    $User "root";
    $Pass "";
    $Db "ricerca_select";

    $Conn mysqli_connect($Host$User$Pass$Db);

    if (isset(
    $_POST["submit"])) {
        
    $citta=$_POST["citta"];

    $Query "SELECT nome,cognome,citta FROM utente,citta where utente.ks_citta=citta.id_citta
      " 
    ;
        
    /*oppure citta='$Citta' in base se volgio cercarea
        attraverso l'id o la cittas*/

        
    $Resultmysqli_query($Conn,$Query);

    while (
    $Row=mysqli_fetch_array($Result)) {
       
            echo 
    $Row[0]." ".$Row[1]." ".$Row[2]."<br>";
    }
    }
    ?>
    HTML:
    <!DOCTYPE html>
    <html>
    <head>
        <title>prova</title>
    </head>
    <body>
    <form action="#" method="POST">
        <select>
            <option name="citta">roma</option>
            <option name="citta">parigi</option>
        </select>
        <input type="text" name="citta">
    <input type="submit" name="submit">
       
    </form>
    </body>
    </html>
    
    
    
    
     
    Ultima modifica di un moderatore: 5 Ottobre 2018
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    913
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Crea un middleware per valorizzare l'input (post/get), fai che la var restituisca porzione di query...
     
  3. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.798
    Mi Piace Ricevuti:
    283
    Punteggio:
    83
    Sesso:
    Maschio
    @ONE313
    Quando posti del codice PHP devi usare il TAG [​IMG] invece del TAG [​IMG]
    Grazie
     
  4. Rikk73

    Rikk73 Utente Attivo

    Registrato:
    7 Aprile 2015
    Messaggi:
    133
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    .NET Software Developer
    Località:
    Arezzo
    Credo che la query così ti restituisca i soli dati delle colonne "nome,cognome,citta" della tabella utenti e nulla della tabella città,
    prova a modificare la query così:

    PHP:
    //...
    $Query "SELECT utente.nome,utente.cognome,utente.citta, citta.* FROM utente,citta where utente.ks_citta=citta.id_citta
    //...
     
  5. ONE313

    ONE313 Nuovo Utente

    Registrato:
    10 Settembre 2016
    Messaggi:
    36
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Max1 Ok.
    Marcus_adi non so come si creano i middelware e come valorizzare l'imput get/post. Dove posso trovare riferimenti?
     
  6. ONE313

    ONE313 Nuovo Utente

    Registrato:
    10 Settembre 2016
    Messaggi:
    36
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Rikk73, i dati me li estrae in entrambe le tabelle bene.
    tabella utenti i campi sono:
    id_nome(int autoincrement), nome(varchar),cognome(varchar), citta(int..... questo campo è relazionato con id_citta).
    tabella citta
    id_citta(int autoincrement), citta(carchar)
    Ho relazionato le tabelle tra loro e la select ok, se io pero voglio filtrare i dati attraverso un select box o input non riesco.
    ho pensato di usare like nella query ma da errore
    $Query = "SELECT nome,cognome,citta FROM utente,citta where utente.ks_citta=citta.id_citta like ".$Citta." " ;
     
  7. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    913
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Farei cosi:
    PHP:
    /**
    * Metodo funzionale per effettuare il bind dei parametri
    * @param array $bind Array associativo di valori
    * @param string $type Stringa contentente i tipi
    * @param bool $res Risultato fetchall
    *
    * @return $this|string
    * @throws Exception
    */
    private function execute_stmt($query,$bind,$type,$res=true){
       
    $this->stmt=$this->mysql->prepare($query);
       if(
    $this->stmt->param_count != count($bind)){
          
    $this->exception='Numero di parametri non corretto per la query selezionata';
          return 
    $this->exception;
       }
       
    $callArgs = array();
       foreach(
    $bind as $index => $arg) {
          
    $callArgs[$index] = &$bind[$index];
       }
       try {
          
    array_unshift($callArgs$type);
          
    call_user_func_array(array($this->stmt'bind_param'), $callArgs);
          
    $this->stmt->execute();

          if(
    $res)$this->result=$this->stmt->get_result()->fetch_all(1);
          
    $this->stmt->close();
       }
       catch (
    Exception $e) {
          throw 
    $e;
       }
       return 
    $this;
    }
    $q "SELECT nome,cognome,citta FROM utente,citta where utente.ks_citta=citta.id_citta like ?" ;
    $tipologia='s';
    $array_associativo=['citta'=>'Milano'];
    $this->conn->execute_stmt($q,$array_associativo_valori,$tipologia)->result;
    Questo è stato estratto solo ed esclusivamente da una mia Lib, in alternativa potresti utilizzare medoo.in
    Notazione ad oggetti e non procedurale, quindi dovresti cambiare un pò di roba anche perchè i metodi che hai utilizzato sono deprecati già da un pò!
     
  8. ONE313

    ONE313 Nuovo Utente

    Registrato:
    10 Settembre 2016
    Messaggi:
    36
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Ok, grazie della dritta. Mi guardo il metodo ad oggetti per capirlo e poi riprovo
     
Sto caricando...

Condividi questa Pagina