Option con value uguale ai valori di più chiavi di un array

di il
1 risposte

Option con value uguale ai valori di più chiavi di un array

Non so neanche bene come rendere l'idea ma ci provo.... sicuramente mi direte che non ha senso....

Ho un database con 3 tabelle:

lista_servizi  popolata da console mysql  con i campi id, linea, partenza, orario

users  questa si popola di man in mano che un nuovo collega viene registrato nel sito. (i colleghi registrati son tutti autisti e hanno accesso ad una voce di menu con cui raggiungono un url che per visualizzare i servizi che devono svolgere)

servizi__da_svolgere ha i campi users, data, stato(operativo, ferie, riposo, malattia), tipologia, macchina, servizi_assegnati 

Il sito ha una funzione che si prende l'id di chi è loggato, e della tabella servizi_assegnati gli mostra i record a lui riferiti. 

La tabella servizi_assegnati  si popola con un form: 

Il campo cruciale del form (ed è il motivo per cui Vi sto scrivendo) è la select che prende come option i valori della lista dei servizi dalla tabella lista_servizi con la query 

$query_sql = "SELECT servizio,partenza,orario_corsa FROM gbgar_lista_servizi;"; 

e la mette nella variabilie    

 $servizi_da_svolgere = $Conn->query($query_sql);

A sto punto vabbhe apro la select  e poi inserisco il ciclo while che reitera il prelievo di ogni record presente nella tabella lista_servizi e ne fa un array associativo al quale viene assegnato il nome di $riga e cha ha tre chiavi : servizio, partenza e orario_corsa.

while ($riga = $servizi_da_svolgere -> fetch_assoc()) {
                    $servizio = $riga["servizio"];

fin qua direi ok

poi imposto la option

echo "<option value='$servizio'>
                  $servizio
                  </option>";
                  }
                  echo"</select>";

ma io ora ho bisogno che il valore che la  select assume con la scelta delle option ad ogni invio del form  non corrisponda al valore della sola chiave ["servizio"] ma di tutte tre le chiavi cosicchè il file inserito nella action del form riceva per questo campo i valori delle tre chiavi e le  deve scrivere nella colonna servizi_da_svolgere della tabella servizi_assegnati.

Questo è il codice del file "insert-serv.php" cioè il file che riceve i dati dal form descritto.

 <?php
        try{
            $conn = new mysqli("localhost","matteo","spranga","gbgarage_servizi");
            }catch(Exception $e){
                $error = $e -> getMessage();
                echo $error;
                echo "<br><a href=\"http://localhost/test-gbgarage/gestione-servizi/form-serv.php\">torna alla maschera di inserimento</a>";
            }?>
            
          <?php
        //creazione variabili che ricevono i dati dai campi del form.
        $autista = $_POST["seleziona_autista"];
        $stato = $_POST["stato"];
        $data_servizio = $_POST["data_servizio"];
        $tipologia = $_POST["tipologia"];
        $macchina = $_POST["macchina"];
        $servizi_da_svolgere = $_POST["servizi_da_svolgere"];
    
        //inizializzo e riempio la variabile con la query al database.
        $insert_sql = "INSERT INTO gbgar_servizi_assegnati         //gbgar è il prefisso che ogni tabelle del database di joomla dovrebbe avere cosi visto che poi tutta sta                                                                                                                     roba è da implementare nel sito in costruzione fatto partendo da joomla appunto mi sono abituato ad                                                                                                                    inserirlo nelle query. 
                    autista,
                    stato,
                    data_servizio,
                    tipologia,
                    macchina,
                    servizi_da_svolgere)
                    VALUES(
                    '$autista',
                    '$stato',
                    '$data_servizio',
                    '$tipologia',
                    '$macchina',
                    '$servizi_da_svolgere');";
        /*ora si esegue la query contenuta nella viriabile chiamata $insert_sql per ottenere il risultato di scrittura del record e un output nella pagina page.php */
        $risultato = $conn->query($insert_sql);
        if ($risultato == TRUE) {
            echo "inserimento servizio riuscito";
        } else {
            echo "inserimento servizio fallito: $insert_sql";
        }
      ?>
    <br>
    <a href="http://localhost/test-gbgarage/gestione-servizi/form-serv.php">torna alla maschera di inserimento</a>
</body>
</html>

Come vedete dall'associazione dei campi tra form e database, si dovrebbe scrivere il servizio scelto nella select, composto da tre valori, dentro la colonna "servizi_da svolgere"

Ma.... è possibile ottenere questo? 

Se lo è, come dovrei impostare il tag della option per fare assumere alla select del form tutti i valori di $riga?

Grazie infinitamente per la pazienza... nella speranza di essermi fatto capire e anche di esser in grado di comprendere i Vs eventuali suggerimenti.

Filippo P.

1 Risposte

  • Re: Option con value uguale ai valori di più chiavi di un array

    Ciao a tutti,

    immagino che chi ha letto questo post si sia magari messo a ridere e non oso pensare cosa abbia pensato. cosi fosse avrebbe avuto ragione. :-|

    Per accorpare i valori di un array dentro una unica variabile e inviarla ad un file php che si occupa di scrivere tali dati in una unica  colonna nella tabella di in db bastava richiamare nella dichiarazione della variabile le tra chiavi dell'array concatenandole semplicemente.

    Cii ha impiegato una settimana a venirmi in mente dove sbagliavo.... meglio tardi che mai.

    Buon festa dell' Immacolata a tutti.

    Filippo 

    echo "<select name='servizi_da_svolgere'>";
                      echo "<option value=\"\">Seleziona il servizio</option>";
    
                      while ($riga = $servizi_da_svolgere -> fetch_assoc()) {
                         $servizio_inserito = $riga['servizio'].'--'.$riga['partenza'].'--'.$riga['orario_corsa'];
                         
                      echo "<option value='$servizio_inserito'>
                      $servizio_inserito
                      </option>";
Devi accedere o registrarti per scrivere nel forum
1 risposte