Visualizzazione risultati 1 fino 5 di 5

Discussione: Settaggio dinamico di una select option

  1. #1
    talmtest non è connesso Neofita
    Data registrazione
    03-01-2019
    Messaggi
    9

    Predefinito Settaggio dinamico di una select option

    Buon pomeriggio,
    chiedo aiuto riguardo un problema sul quale sto sbattendo il muso da tre giorni:

    sto costruendo un sito amatoriale al solo scopo di fare pratica con PHP e MySql: questo sito allo
    stato attuale ha una pagina in cui l' utente può loggarsi e, qualora l'operazione di login abbia
    successo, viene visualizzato un menu da cui si possono inserire e modificare dei fornitori e delle
    fatture.

    Nella pagina di inserimento dei fornitori ho inserito una select option (una casella a discesa) per
    scegliere la regione: i valori vengono caricati dinamicamente da una tabella del database e, in
    funzione della regione scelta viene caricata dinamicamente un'altra casella a discesa dove scegliere
    la provincia relativa alla regione: fin qui tutto bene.

    Il problema ce l'ho nella pagina di modifica: quando scelgo la funzione di modifica, tutti i campi a
    video (Nome e Cognome, Indirizzo, CAP, Città etc), vengono valorizzati correttamente, invece la select
    option della regione, anche se la finestra a discesa viene riempita, la casella della select option
    rimane vuota.

    Ho cercato un po' sulla rete, ho fatto prove su prove, ma non sono riuscito a risolvere il problema.

    C'è nel forum qualche esperto che mi possa dare una dritta?

    Grazie a tutti anticipatamente

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    In corrispondenza dell'option che vuoi rendere selezionata, devi aggiungere "selected". Se non ho capito/non riesci a farlo, puoi mostrare il codice e spiegare cosa ti aspetteresti?

    Ciao!

  3. #3
    talmtest non è connesso Neofita
    Data registrazione
    03-01-2019
    Messaggi
    9

    Predefinito

    Intanto grazie per la risposta. Di seguito il codice:
    il primo file è 'include per la connessione al database (DatabaseConnection.php)
    <?php
    $pdo = new PDO('mysql:host=localhost;dbname=my_talmtest; charset=utf8', 'talmtest', '1X2');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    Poi il file che contiene le funzioni di lettura, inserimento e aggiornamento delle tabelle (Functions.php)
    <?php
    function getUtente($pdo, $utente) {
    $parameters = [':utente' => $utente];
    //$query = query($pdo, 'SELECT `utente`, `password`, FROM `utenti` WHERE `utente` = :utente', $parameters);
    $query = query($pdo, 'SELECT * FROM `utenti` WHERE `utente` = :utente', $parameters);
    return $query->fetch();
    }

    function SelectTabella($pdo, $tabella, $where, $parametro) {
    $forn = query($pdo, 'SELECT * FROM '.$tabella.' WHERE '.$where.' = '."'".$parametro."'");
    return $forn->fetchAll();
    }

    function SelectFornitori($pdo) {
    $forn = query($pdo, 'SELECT * FROM fornitori');
    return $forn->fetchAll();
    }

    function SelectAll($pdo, $tabella) {
    $forn = query($pdo, 'SELECT * FROM '.$tabella);
    return $forn->fetchAll();
    }


    function query($pdo, $sql, $parameters = []) {
    $query = $pdo->prepare($sql);
    $query->execute($parameters);
    return $query;
    }

    function valorizza_variabile($input, $output) {
    $output = $input;
    return $output;
    }

    function updateFornitore($pdo, $fields) {

    $query = ' UPDATE `fornitori` SET ';

    foreach ($fields as $key => $value) {
    $query .= '`' . $key . '` = :' . $key . ',';
    }

    $query = rtrim($query, ',');

    $query .= ' WHERE `codice_fornitore` = :primaryKey';

    //Set the :primaryKey variable
    $fields['primaryKey'] = $fields['codice_fornitore'];

    $fields = processDates($fields);

    query($pdo, $query, $fields);
    }

    function processDates($fields) {
    foreach ($fields as $key => $value) {
    if ($value instanceof DateTime) {
    $fields[$key] = $value->format('Y-m-d');
    }
    }

    return $fields;
    }

    Qundi il file menu.php che estrae i dati dalle tabelle 'regioni' e 'province' e contiene un'include al file menu_home.html.php dal quale l'utente può scegliere se inserire un nuovo fornitore con un link al file dettaglio_fornitore.php oppure chiedere un elenco dei fornitori (Tutti, Per Regione o Per Provincia).
    Questo il codice del file menu_home.html.php:

    <nav class="navbar navbar-expand-lg navbar-light" id="main_navbar">

    <a href="index.php"><img id="logo" src="immagini/logotalmone.jpg" class="navbar-brand"></a>

    <button class="navbar-toggler" type="button" data-toggle="collapse" data-arget="#navbarSupportedContent"
    aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
    <li class="nav-item">
    <a class="nav-link" href="dettaglio_fornitore.php" style="color: #954514; font-size:
    22px;">Nuovo Fornitore</a>
    </li>

    <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
    data-toggle="dropdown" style="font-size: 22px;">Elenco Fornitori
    </a>
    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
    <li class="nav-item dropdown">
    <a class="dropdown-item dropdown-toggle" href="#" id="navbarDropdown1" role="button"
    data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Tutti
    </a>
    <ul class="dropdown-menu" aria-labelledby="navbarDropdown1">
    <?php echo $allforn ?>
    </ul>
    </li>

    <li class="nav-item dropdown">
    <a class="dropdown-item dropdown-toggle" href="#" id="navbarDropdown1" role="button"
    data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Per Regione
    </a>
    <ul class="dropdown-menu" aria-labelledby="navbarDropdown1">
    <?php echo $regioni ?>
    </ul>
    </li>

    <li class="nav-item dropdown">
    <a class="dropdown-item dropdown-toggle" href="#" id="navbarDropdown1" role="button"
    data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Per Provincia
    </a>
    <ul class="dropdown-menu" aria-labelledby="navbarDropdown1">
    <?php echo $province ?>
    </ul>
    </li>
    </ul>
    </li>

    <li class="nav-item">
    <a class="nav-link" href="chisiamo.php" style="color: #954514; font-size: 22px;">Inserimento
    Nuova Fattura</a>
    </li>

    <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
    data-toggle="dropdown" style="font-size: 22px;">
    Elenco Fatture
    </a>
    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
    <li><a class="dropdown-item" href="#">Tutte</a></li>
    <li><a class="dropdown-item" href="#">Per Fornitore</a></li>
    <li><a class="dropdown-item" href="#">Per Regione</a></li>
    <li><a class="dropdown-item" href="#">Per Provincia</a></li>
    </ul>
    </li>

    <li class="nav-item">
    <a class="nav-link" href="logout.php" style="color: #954514; font-size: 22px;">Esci</a>
    </li>
    </ul>
    </div>
    </nav>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
    <script src="js/bootnavbar.js" ></script>
    <script>
    $(function () {
    $('#main_navbar').bootnavbar();
    })
    </script>

  4. #4
    talmtest non è connesso Neofita
    Data registrazione
    03-01-2019
    Messaggi
    9

    Predefinito

    Seconda parte:
    Infine il file dettaglio_fornitore.php (con il suo include dettaglio_fornitore.html.php) che può essere usato sia per l'inserimento di un nuovo fornitore che per la sua modifica. Nel caso di inserimento non ci sono problemi perchè, naturalmente, i campi da compilare sono tutti vuoti, mentre invece, nel caso di modifica, tutti i campi vengono valorizzati regolarmente fatta eccezione per le select-options delle Regioni e delle Provincie:
    dwettaglio_fornitore.php
    <?php
    session_start();
    if(!isset($_SESSION['utente']))
    {
    header("Location: index.php");
    }

    include __DIR__ . '/includes/Functions.php';
    include __DIR__ . '/pulizia_wa_fornitore.php';

    try{
    include __DIR__ . '/includes/DatabaseConnection.php';

    $query = "SELECT * FROM regioni";
    $result = $pdo->query($query);

    while ($row = $result->fetch()){
    $regioni[] = array("stato" => $row['stato'], "val" => $row['regione']);
    }

    $query = "SELECT * FROM province";
    $result = $pdo->query($query);

    while ($row = $result->fetch()){
    $province[$row['regione']][] = array("regione" => $row['regione'], "val" => $row['sigla_prov'].' '.$row['provincia']);
    }

    $jsonRegioni = json_encode($regioni);
    $jsonProvince = json_encode($province);

    if(isset($_GET['codice_fornitore']))
    {
    $title = "Modifica Fornitore";

    if(isset($_POST['salva']))
    {
    include __DIR__ . '/set_wa_fornitore.php';

    if
    ($_POST['ragso'] == ""
    || $_POST['citta'] == ""
    || $_POST['indirizzo'] == ""
    //|| $_POST['civico'] == ""
    || $_POST['cap'] == ""
    || $_POST['regione'] == ""
    || $_POST['provincia'] == ""
    || $_POST['stato'] == ""
    || $_POST['piva'] == "")
    {
    $messaggio = "Inserire tutte le informazioni obbligatorie";
    }
    else
    {
    updateFornitore($pdo, ['codice_fornitore' => $_GET['codice_fornitore'],
    'ragione_sociale' => $ragso,
    'indirizzo' => $indirizzo,
    'numero_civico' => $civico,
    'cap' => $cap,
    'citta' => $citta,
    'prov' => substr($provincia,0,2),
    'regione' => $regione,
    'stato' => $stato,
    'piva' => $piva,
    'codfisc' => $codfisc,
    'telefono1' => $telefono1,
    'cell1' => $cell1,
    'fax' => $fax,
    'email' => $email,
    'sito' => $sito]);

    $messaggio = $_POST['ragso'].' modificato';
    }
    }
    else
    {
    if(isset($_POST['pulizia']))
    {
    $messaggio = "";
    }
    else
    {
    $fornitori = SelectTabella($pdo, 'fornitori', 'codice_fornitore', $_GET['codice_fornitore']);
    foreach($fornitori as $row):
    $ragso = $row['ragione_sociale'];
    $citta = $row['citta'];
    $indirizzo = $row['indirizzo'];
    $civico = $row['numero_civico'];
    $cap = $row['cap'];
    $regione = $row['regione'];
    //$provincia = $row['prov'];
    $piva = $row['piva'];
    $codfisc = $row['codfisc'];
    $telefono1 = $row['telefono1'];
    $fax = $row['fax'];
    $cell1 = $row['cell1'];
    $email = $row['email'];
    $sito = $row['sito'];

    $prov = SelectTabella($pdo, 'province', 'sigla_prov', $row['prov']);
    foreach($prov as $riga):
    $provincia = $row['prov']." ".$riga['provincia'];
    endforeach;
    endforeach;
    }
    }
    }
    else
    {
    $title = "Nuovo Fornitore";

    if(isset($_POST['salva']))
    {
    include __DIR__ . '/set_wa_fornitore.php';

    if($_POST['ragso'] == ""
    || $_POST['citta'] == ""
    || $_POST['indirizzo'] == ""
    //|| $_POST['civico'] == ""
    || $_POST['cap'] == ""
    || $_POST['regione'] == ""
    || $_POST['provincia'] == ""
    || $_POST['stato'] == ""
    || $_POST['piva'] == "")
    {
    $messaggio = "Inserire tutte le informazioni obbligatorie";
    }
    else
    {
    $query = 'SELECT * FROM fornitori WHERE piva = '."'".$_POST['piva']."'";
    $result = $pdo->query($query);
    $ctr = 0;

    while ($row = $result->fetch()){
    $ctr++;
    }

    if($ctr == 0){
    $sql = 'INSERT INTO `fornitori` SET
    `ragione_sociale` = :ragione_sociale,
    `indirizzo` = :indirizzo,
    `numero_civico` = :numero_civico,
    `cap` = :cap,
    `citta` = :citta,
    `prov` = :prov,
    `regione` = :regione,
    `stato` = :stato,
    `piva` = :piva,
    `codfisc` = :codfisc,
    `telefono1` = :telefono1,
    `cell1` = :cell1,
    `fax` = :fax,
    `email` = :email,
    `sito` = :sito';

    $stms = $pdo->prepare($sql);

    $stms->bindValue(':ragione_sociale', $_POST['ragso']);
    $stms->bindValue(':indirizzo', $_POST['indirizzo']);
    $stms->bindValue(':numero_civico', $_POST['civico']);
    $stms->bindValue(':cap', $_POST['cap']);
    $stms->bindValue(':citta', $_POST['citta']);
    $stms->bindValue(':prov', substr($_POST['provincia'],0,2));
    $stms->bindValue(':regione', $_POST['regione']);
    $stms->bindValue(':stato', $_POST['stato']);
    $stms->bindValue(':piva', $_POST['piva']);
    $stms->bindValue(':codfisc', $_POST['codfisc']);
    $stms->bindValue(':telefono1', $_POST['telefono1']);
    $stms->bindValue(':fax', $_POST['fax']);
    $stms->bindValue(':cell1', $_POST['cell1']);
    $stms->bindValue(':email', $_POST['email']);
    $stms->bindValue(':sito', $_POST['sito']);

    $stms->execute();

    $messaggio = $_POST['ragso'].' inserito correttamente';
    }
    else
    {
    $title = "Modifica Fornitore";
    $messaggio = "Fornitore " .$_POST['ragso']." già registrato";
    }
    }
    }

    if(isset($_POST['pulizia']))
    {
    $messaggio = "";
    }
    }
    }
    catch (PDOExcepion $e)
    {
    $output = 'Impossibile connettersi al database server: '. $e->getMessage() . ' in ' . $e->getFile() . ': ' . $e->getLine();
    }

    include __DIR__ . '/templates/dettaglio_fornitore.html.php';
    ?>

  5. #5
    talmtest non è connesso Neofita
    Data registrazione
    03-01-2019
    Messaggi
    9

    Predefinito

    Terza e ultima parte:
    Il file dettaglio_fornitore.html.php
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title><?php echo $title ?></title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/>
    <link rel="stylesheet" href="css/bootstrap.min.css">


    <!--<link rel="stylesheet" href="css/bootstrap-min4.1.3.css">
    <link rel="stylesheet" href="css/daneden-master-animate.css">
    <link rel="stylesheet" href="css/bootnavbar.css">-->
    <link rel="stylesheet" href="css/new_fornstyle.css">
    <link rel="stylesheet" href="css/BarlowCondensed-Rajdhani.css">

    <script type='text/javascript'>

    <?php
    echo "var regioni = $jsonRegioni; \n";
    echo "var province = $jsonProvince; \n";
    ?>
    function loadRegioni(){
    var select = document.getElementById("RegioniSelect");
    select.onchange = updateProvince;
    for(var i = 0; i < regioni.length; i++){
    select.options[i] = new Option(regioni[i].val,regioni[i].id);
    }
    }
    function updateProvince(){
    var regioniSelect = this;
    var regione = this.value;
    var provinceSelect = document.getElementById("ProvinceSelect");
    provinceSelect.options.length = 0; //delete all options if any present
    for(var i = 0; i < province[regione].length; i++){
    provinceSelect.options[i] = new Option(province[regione][i].val,province[regione][i].id);
    }
    }

    </script>
    </head>

    <body style="background: #fdf5e0; color: 954514; border: 2px solid #954514;" onload='loadRegioni()'>

    <?php
    include __DIR__ . '/menu_breve.php';
    ?>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    <br>
    </div>

    <form name="new_forn" id="new_form" action="" method="POST">
    <div class="row">
    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-4" type="text" name="ragso"
    placeholder="Nome Azienda (obbligatorio)" value="<?php echo $ragso ?>" />
    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-3" type="text" name="citta"
    placeholder="Città (obbligatoria)" value="<?php echo $citta ?>" />
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-3" type="text" name="indirizzo"
    placeholder="Indirizzo (obbligatorio)" value="<?php echo $indirizzo ?>" />
    <div class="col-md-2"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-1" type="text" name="civico"
    placeholder="Civico" value="<?php echo $civico ?>" />
    <div class="col-md-2"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-2" type="text" name="cap"
    placeholder="Cap (obbligatorio)" value="<?php echo $cap ?>" />
    <div class="col-md-1"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-1"></div>
    <h6 class="col-md-2">Regione (obbligatoria)</h6>
    <div class="col-md-3"></div>
    <h6 class="col-md-2">Provincia (obbligatoria)</h6>
    <div class="col-md-1"></div>
    <h6 class="col-md-3">Nazione (obbligatoria)</h6>
    </div>

    <div class="row">
    <div class="col-md-1"></div>
    <select style="color: 954514; border-radius: 10px;" class="col-md-2" name="regione" id="RegioniSelect">
    <option value="<?php echo $regione ?>"></option>
    </select>
    <div class="col-md-3"></div>

    <select style="color: 954514; border-radius: 10px;" class="col-md-2" name="provincia" id="ProvinceSelect">
    </select>
    <div class="col-md-1"></div>

    <input style="color: 954514; border-radius: 10px;" class="col-md-2" type="text" name="stato" value="IT" />
    <!--placeholder="Stato (obbligatorio)" value="<?php echo $stato ?>" value="IT" />-->
    <div class="col-md-1"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-3" type="text" name="piva"
    placeholder="Partita IVA (obbligatoria)" value="<?php echo $piva ?>" />
    <div class="col-md-2"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-3" type="text" name="codfisc"
    placeholder="Codice Fiscale" value="<?php echo $codfisc ?>" />
    <div class="col-md-2"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-2" type="text" name="telefono1"
    placeholder="Telefono fisso" value="<?php echo $telefono1 ?>" />
    <div class="col-md-3"></div>

    <input style="color: 954514; border-radius: 10px;" class="col-md-2" type="text" name="cell1"
    placeholder="Cellulare" value="<?php echo $cell1 ?>" />

    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-2" type="text" name="fax"
    placeholder="Fax" value="<?php echo $fax ?>" />
    <div class="col-md-1"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    </div>

    <div class="row">
    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-4" type="email" name="email"
    placeholder="Indirizzo mail" value="<?php echo $email ?>" />
    <div class="col-md-1"></div>
    <input style="color: 954514; border-radius: 10px;" class="col-md-5" type="text" name="sito"
    placeholder="Sito Internet" value="<?php echo $sito ?>" />
    <div class="col-md-1"></div>
    </div>

    <div class="row">
    <div class="col-md-4"></div>
    <h1 class="col-md-4"></h1>
    <div class="col-md-4"></div>
    <br>
    </div>

    <div class="row">
    <div class="col-md-1"></div>
    <input style="background: #fdf5e0; color: 954514; border-radius: 10px;" class="col-md-2" type="submit" name="salva" value="SALVA" />
    <div class="col-md-6" style="text-align: center"><h4> <?php echo $messaggio ?></h4></div>

    <input style="background: #fdf5e0; color: 954514; border-radius: 10px;" class="col-md-2"
    type="submit" name="pulizia" value="PULISCI VALORI"/>
    </div>
    </form>
    </body>


    Inserisco anche il file loop_fornitori.php richiamato da menu.php che prepara l'elenco dei fornitori scelti (Tutti, Per Regione o Per Provincia): questo script prepara anche un Button per ogni fornitore cha fa un link a dettaglio_fornitore.php per l'eventuale modifica.
    <?php
    foreach($fornitori as $row):
    $codice = $row["codice_fornitore"];
    $form = '<form id="dettaglio" action="dettaglio_fornitore.php" method="get">
    <input type="hidden" name="codice_fornitore" value="'.$row["codice_fornitore"].'">
    <input type="submit" class="dettaglio" value="Dettaglio/Modifica">
    </form>';

    $output = $output." <div class='row'>
    <h5 class='col-md-1' style='color: #954514; padding-left: 20px';>".$row['codice_fornitore']."</h5>
    <h5 class='col-md-3' style='color: #954514;';>".$row['ragione_sociale']."</h5>
    <h5 class='col-md-2' style='color: #954514;';>".$row['indirizzo']."</h5>
    <h5 class='col-md-2' style='color: #954514;';>".$row['citta']."</h5>
    <h5 class='col-md-2' style='color: #954514;';>".$row['prov']."</h5>".$form."
    </div>";
    endforeach;

    Beh, ammetto che è un po' incasinato, del resto in PHP sono alle prime armi. In ogni caso, grazie per la collaborazione.

    Marcello Procaccini

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •