• User Newbie

    Controllo dati contenuti in campo MySql e apertura pagina web in base al contenuto

    Innanzitutto, un ciao a tutti :):).

    sono un neofita di mysql e php. Avrei la necessita', tramite un pulsante, di controllare un valore presente all'interno di un cambo di una tabella Mysql (valore numerico che di default e' null, ma può avere valore 1 o valore 2) ed in base al valore che assume reindirizzare ad una pagina web diversa.

    Spiego meglio....
    ho inserito un codice php con accesso al database per la selezione di Regione, paese e comune di appartenenza. Ad ogni selezione viene filtrato il risultato del select successivo. Avrei bisogno di poter aggiungere al codice un pulsante (INVIA), il quale mi faccia un controllo nella tabella comuni, nel campo nominato "servizio", e, in base al valore che ho inserito manualmente in quel campo, se nullo mi restituisca la pagina 0.html; se valore "1" mi restituisca la pagina 1.html, se valore "2" mi restituisca la pagina 2.html.

    Incollo di seguito il codice utilizzato, nella parte body della pagina php:

    <?php
    include_once 'select.class.php';
    $opt = new SelectList();
    ?>
    <body>
    <div id="container">

    <h1>La cascata regioni - province - comuni</h1>
    <h2>Seleziona una regione e nella select successiva compariranno le province di quella regione</h2>
    <h3>Selezionando una provincia, nella select successiva compariranno i comuni di quella provincia</h3>
    
        <form action="?" id="myform">
            Seleziona una regione:<br />
            <select id="regioni">
                <?php echo $opt->ShowRegioni(); ?>
            </select>
            <br /><br />
        
            Seleziona una provincia:<br />
            <select id="province">
            <option>Scegli...</option>
            </select>
            <br /><br />
        
            Seleziona un comune:<br />
            <select id="comuni">
            <option>Scegli...</option>
            </select>
            
        </div>
    </form>
    

    </body>

    e di seguito la pagina select.class

    <?php

    class SelectList
    {

    protected $conn;
    
        public function __construct()
        {
            $this->DbConnect();
        }
    
        protected function DbConnect()
        {
            include "db_config.php";
            
            $this->conn = mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
            mysql_select_db($db,$this->conn) OR die("Impossibile selezionare il database $db");
            
            return TRUE;
        }
        
        public function ShowRegioni()
        {
            $sql = "SELECT * FROM regioni";
            $res = mysql_query($sql,$this->conn);
            $regioni = '<option value="0">scegli...</option>';
            
                while($row = mysql_fetch_array($res))
                {
                    $regioni .= '<option value="' . $row['id_reg'] . '">' . utf8_encode($row['nome_regione']) . '</option>';
                }
                
            return $regioni;
        }
        
        public function ShowProvince()
        {
            $sql = "SELECT * FROM province WHERE id_reg=$_POST[id_reg]";
            $res = mysql_query($sql,$this->conn);
            $province = '<option value="0">scegli...</option>';
            
                while($row = mysql_fetch_array($res))
                {
                    $province .= '<option value="' . $row['id_pro'] . '">' . utf8_encode($row['nome_provincia']) . '</option>';
                }
                
            return $province;
        }
        
        public function ShowComuni()
        {
            $sql = "SELECT * FROM comuni WHERE id_pro=$_POST[id_pro]";
            $res = mysql_query($sql,$this->conn);
            $comuni = '<option value="0">scegli...</option>';
            
                while($row = mysql_fetch_array($res))
                {
                    $comuni .= '<option value="' . $row['id_com'] . '">' . $row['cap'] . ' - ' . utf8_encode($row['comune']) . '</option>';
                }
                        return $comuni;
        }
    

    }

    ?>

    Grazie mille a chi mi da una mano ;);););)


  • User Attivo

    Non capisco bene cosa devi fare, non è spiegato benissimo, ma ti basta inserire un input submit nel form per submittare la richiesta, per poi darla in pasto a PHP.

    per redirectare fai un if sulla risposta es:

    
    if ($risposta == 0){
      header("location: tuapagina0.html");
    }else if ($risposta == 1){
      header("location: tuapagina1.html");
    }else if ($risposta == 2){
      header("location: tuapagina2.html")
    }else{
      echo "Errore";
    }
    
    

    E forza ad INT quelle variabili sennò sei soggetto a SQL injection.

    Se hai dubbi scrivi 🙂


  • User Newbie

    Grazie mille per la risposta.

    non mi è chiaro il passaggio su come poter acquisire la risposta per lavorarla poi con le sequenze di if.
    ho aggiunto al codice il passaggio
    <input type="submit">

    come devo fare per associare il valore del campo che mi interessa alla variabile $risposta ?

    Cerco inoltre di spiegare meglio cosa vorrei realizzare (magari sono completamente fuori strada.....)

    Vorrei creare una casella di testo che, all'inserimento, mi vada a completare la digitura pescando i dati all'interno di una tabella che si chiama Comuni, composta da ID (chiave primaria), comune, cap, servizio.

    Selezionando poi il tasto submit, dovrei controllare, all'interno del comune scelto, il valore del campo servizio ed in base al risultato inserire la sequenza che mi hai descritto per il richiamo di pagine html diverse.

    (in pratica qualcosa di molto simile a quello che trovi in ***.tariffa.it/copertura-rete-fissa/?ASID=LASTAMPA )


  • User Attivo

    Allora vuoi fare un Autocomplete giusto?


  • User Newbie

    Vorrei, ma sto abbandonando l'idea.... continuo a fare mille tentativi ma non riesco a ricavarne nulla.
    Sono riuscito a creare un campo autocomplete, ma non riesco comunque a far associare alla scelta fatta dall'utente un controllo valore di una cella del campo per far aprire la pagina html.
    Mi andrebbe benissimo a questo punto anche lavorare sulla casella combinata in partenza, ma mi manca sempre questo passaggio...


  • User Attivo

    Io comunque continuo a non capire perdonami, prova a spiegarmi punto per punto cosa deve fare questa pagina, cosa un utente dovrebbe entrare e fare.
    Meccanicamente.


  • User Newbie

    come dal link che ho mandato in intestazione, dovrei creare una pagina html per verificare la copertura di un comune con un servizio di Radio Adsl locale.
    Un utente entrando nel sito dovrebbe inserire il comune del quale vuole verificare la copertura (meglio se in autocompletamento, oppure anche in selezione a cascata).
    Premendo il pulsante "Verifica copertura" il sistema dovrebbe restituire l'apertura di una pagina html se il paese è coperto con la relativa offerta, oppure una pagina html se il paese non è coperto, infine un'altra pagina html se il paese non è attualmente coperto ma è in fase di copertura breve.


  • User Attivo

    Perfetto ora ho capito, come sono strutturate le tabelle quindi?
    Fai un elenco:

    Nome Tabella 1
    Campo1 - Campo2

    Nome Tabella 2
    Campo1 - Campo2

    Così che capisco la struttura e posso aiutarti...


  • User Newbie

    Database attualmente cosi strutturato:

    Tabella 1: Regioni
    Campi: id_reg tipo: int lunghezza: 3
    nome_regione tipo: VARCHAR lunghezza 200

    Tabella 2: Province
    Campi: id_pro
    id_reg
    nome_provincia

    Tabella 3: Comuni
    Campi: id_com
    id_pro
    cap
    comune
    servizio

    Il campo servizio della tabella comuni ha valore numerico indicato da me all'interno del database, in pratica i comuni coperti dal servizio hanno valore '2', i comuni in fase di copertura hanno valore '1', i comuni non coperti hanno valore null


  • User Attivo

    Allora potresti fare per iniziare così:

    Fai inserire il nome del comune in un form:

    pagina.html

    
    <form action="processore.php" method="POST">
    Nome comune: <input type="text" name="comune_check" /><br>
    <input type="submit" name="submit" value="Controlla Disponibilità">
    </form>
    
    

    processore.php

    
    <?php
    if (isset($_POST['submit']) && isset($_POST['comune_check'])){
    mysql_connect("host","user","pass");
    mysql_select_db("nome_db");
    $nome_comune = mysql_real_escape_string($_POST["comune_check"]);
    $sql = "SELECT servizio FROM Comuni WHERE comune='$comune';";
    $exec = mysql_query($sql) or die ("Errore: ".mysql_error());
    if($exec){
    $fetch = mysql_fetch_array($exec);
    $servizio = $fetch['servizio'];
    if (intval($servizio) == 2){
    header("location: comune_coperto.html");
    }else if (intval($servizio) == 1){
    header("location: comune_in_fase_di_copertura.html");
    }else{
    header("location: comune_non_coperto.html");
    }
    }else{
    echo "Errore";
    }
    }else{
    echo "Errore";
    }
    ?>
    
    

    Premetto che non l'ho testato e l'ho scritto nell'editor qui nel forum(non si capisce nulla) quindi potrei aver omesso qualcosa, ma in linea di massima dovrebbe andare, fammi sapere 🙂