• User

    Array - aggiungi / rimuovi

    Mi sono fissato!

    Vorrei fare in modo che in una maniera carina da vedere sia possibile aggiungere o rimuovere elementi in un array.

    Volevo impostarlo così:

    [php]

    <CENTER>
    <h1>Aggiungi elemento</h1>
    <form name=myform>
    <table border=1>
    <tr align="center">
    <td>
    <select name="t1" size="6" style="width:100px">
    <option>Item 5
    <option>Item 6
    <option>Item 7
    <option>Item 8
    </select>
    </td>
    <td valign="middle" width="50">
    <input type="button" value="+" onclick="add()" style="width:35px"> <br>
    <input type="button" value="-" onclick="del()" style="width:35px">

    </td>

    <td valign="top">
    <select name="list" size="6" style="width:100px">
    <option>Item 1
    <option>Item 2
    <option>Item 3
    <option>Item 4
    </select>
    </td>
    </tr>
    </table>
    </form>
    </CENTER>

    [/php]Ma prima di iniziare a popolare le select volevo chiedervi se vi pare un approccio corretto alla questione...io più ci penso e più mi convinco che in questa maniera non sia fattibile.

    Dopo che faccio le mie operazioni infatti, il form mi spedirà solo l'opzione selezionata, giusto?

    In pratica perderei tutto l'array precedentemente caricato e ne creerei uno contenente l'unica option attiva, vero?

    In ultima analisi...come faccio a salvare tutta la select una volta modificata?

    :mmm:


  • User Attivo

    Devi usare sempre e comunque un DB per l'aggiunta dei valori che desideri.
    Se ho afferrato bene il tuo discorso


  • User

    Sì, ok...quello che vedi è solo lo scheletro!

    I valori da 1 a 4 rappresentano l'array esistente.

    Quelli da 5 a 8 sono i valori che potrei voler inserire (e tutti provebgono da un db)....ma se ne inserisco uno non faccio che alimentare la select e basta...se faccio un submit salverei solo una delle option dell'array da 1 a 4.


  • User Attivo

    Se ho capito bene vuoi che i valori, rappresentati nella select, devono poter essere scelti per aggiungere o rimuovere un valore.
    Per questo avrei bisogno di vedere la struttura della tabella in cui vanno messi i dati. In pratica se i valori, di cui stiamo parlando hanno dei campi propri è una stupidagine altrimenti è altrettanto stupido ma c'è bisogno di più controlli per un corretto funzionamento.
    Comunque la mia idea è quella che tu abbia dei campi propri per ogni valore.
    Quindi basterebbe fare un controllo if, in questi campi, per visualizzare il tipo di scelta effettuata mettendo dei checkbox e non usando il select.
    Es.:
    <?php
    if ($item1 == 1) // $item1 variabile presa dal DB per il campo del record scelto
    {
    echo "<input type='checkbox' name='item1' value='1' selected>";
    }
    else
    {
    echo "<input type='checkbox' name='item1' value='1'>";
    }
    ?>

    Fammi sapere


  • User

    Ricomincio dall'inizio perchè penso ci sia un po' di confusione...

    Il codice che ho postato all'inizio crea qualcosa tipo questo:

    installsite.org/pages/en/msi/articles/MultiListBox/MultiListBox.gif

    (scusate la lingua ma è la prima immagine che ho trovato)

    Supponiamo che io abbia una lista di contatti e che debba aggiungere o eliminare uno o più nominativi per invitarli ad esempio ad una festa.

    Il codice html, completo di javascript, è questo:

    [php]

    <script type="text/javascript">
    <!--

    function add() {
    var newitem=document.myform.t1.value;
    if(newitem!=""){
    document.myform.list[document.myform.list.length] = new Option(newitem, newitem)
    }
    }

    function del() {
    if(document.myform.list.selectedIndex >= 0) {
    document.myform.list.options[document.myform.list.selectedIndex]=null
    document.myform.list.selectedIndex=0
    }
    }

    //-->
    </script>

    <h1>Aggiungi elemento</h1>
    <form name=myform>
    <table border=1>
    <tr align="center">
    <td>Lista amici:
    <select name="t1" size="6" style="width:100px">
    <option>Ciccio
    <option>Ada
    <option>Pino
    <option>Seby
    </select>
    </td>
    <td valign="middle" width="50">
    <input type="button" value="+" onclick="add()" style="width:35px"> <br>
    <input type="button" value="-" onclick="del()" style="width:35px">

    </td>

    <td valign="top">Partecipanti alla festa:
    <select name="list" size="6" style="width:100px">
    <option>Adele
    <option>Abele
    <option>Marco
    <option>Mirko
    </select>
    <br>
    </td>
    </tr>
    </table>
    </form>

    [/php]La select "Lista amici" la popolo con, ad esempio:

    [php]
    select * from lista_amici
    [/php]...da dove mi prendo ID e Nome...

    La select Partecipanti alla festa, invece, con:

    [php]
    select * from feste where id_festa = '1'
    [/php]La tabella feste è composta da:

    id_festa | nome_festa | invitati

    invitati è una serie di id prelevati dalla tabella lista_amici (tipo: '1', '4', '12', '22', ...) in pratica mi serve per poi lavorarlo come un array...

    Il mio dilemma quindi è, e resta, il seguente: dopo che ho fatto le aggiunte e le variazioni, come faccio a salvare TUTTO il contenuto della select e non una singola OPTION?

    ....spero di essere stato più chiaro (ma sono certo di non esserci riuscito).... 😢


  • User Attivo

    Comunque sia con la select non è possibile farlo perchè invia solo un valore, quello scelto.
    Dovresti fare, secondo me, con metodo GET cioè al click della scelta visualizzare i clienti, di quella appartenenza, con un **ciclo **(Es.: while). Quindi mettere ad ogni record (cliente) dei link in cui se cliccati farebbero il lavoro desiderato, cioè andrebbero ad aggiornare, inserire o cancellare i campi della tabella interessata.

    Non so se ho dato una vaga idea.

    Fammi sapere


  • User

    Spero di aver capito bene...cmq.

    Così mi vengono in mente due soluzioni entrambe con ausilio di javascript.
    La prima: all'invio del "post" selezioni tutta la select, tramite js, a cui avrai cambiato il nome in "stile array". La seconda: sempre all'invio del post , tramite js leggi tutti gli elementi della select e li memorizzi in un campo "hidden" sempre con il nome in "stile array" (significa ....name="lista[]"...)

    ciao ciap


  • User

    Grazie a tutti...

    Credo che per disperazione simulerò l'effetto con degli iframes.

    (...o magari trovo qualcosa in AJAX...)