[PHP] Laravel Multple Dropdownl List

Cristian80

Nuovo Utente
28 Feb 2019
9
0
1
Ho un Campo select multiplo che recupera dati da un campo specifico di una tabella e li salva come array separato da virgola(,) su un'altra tabella che uso come filtro per una tabella (tipo filtro excel).
La select salva i dati correttamente
una volta ricaricata deve visualizzarmi i dati salvati e darmi la possibilità di eliminarli e/o modificarli ma funziona.
visualizzo i dati ma non riesco a modificarli e/o eliminarli
questo è il codice:
PHP:
  <div class="controls">
      <select class="form-control" name="channel[]" id="channel" multiple>
        <?php $UserUnicode = Auth::user()->unicode;
          $customerNames = \App\Customer::select('channel')->groupBy('channel')->    orderBy('channel')->get();
              $channelList = \App\Filtercustomer::select('channel')->where('unicode', '=',         $UserUnicode);
              $chiave = explode(",", $channelList->get()->implode('channel') );
              $indice =0;
              $keyCount = count($chiave);

              ?>
        @foreach($customerNames as $customerName)
          @for($indice=0; $indice<$keyCount; $indice++)
                  @if ($customerName->channel == old('filtercustomers', $chiave[$indice]))
                      @if($chiave[$indice] != null)
          <option value="{{ $customerName->channel }}" selected>{{ $customerName->    channel }}</option>
          @endif
          @endif
          @endfor
          <option value="{{ $customerName->channel }}">{{ $customerName->channel }}</option>
        @endforeach
      </select>
Grazie anticipatamente per l'aiuto
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.251
324
83
@Cristian80
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
o il tag
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

Cristian80

Nuovo Utente
28 Feb 2019
9
0
1
@Cristian80
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
o il tag
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
Grazie mille, la prossima volta sarò più attento :)
 

macus_adi

Utente Attivo
5 Dic 2017
1.266
82
48
IT/SW
$customerNames = \App\Customer::select('channel')->groupBy('channel')-> orderBy('channel')->get();
$channelList = \App\Filtercustomer::select('channel')->where('unicode', '=', $UserUnicode);
$chiave = explode(",", $channelList->get()->implode('channel') );
$indice =0;
$keyCount = count($chiave);
Diciamo che utilizzando Laravel, la soluzione migliore non è di certo l'uso di explode e implode csv per la memorizzazione, potresti utilizzare YAML sicuramente più leggibile e con svariate librerie di supporto anche da parte di blade....
Non sono sicuro di aver capito la necessità, magari potresti aggiungere 2 dati di esempio....
 

Cristian80

Nuovo Utente
28 Feb 2019
9
0
1
Diciamo che utilizzando Laravel, la soluzione migliore non è di certo l'uso di explode e implode csv per la memorizzazione, potresti utilizzare YAML sicuramente più leggibile e con svariate librerie di supporto anche da parte di blade....
Non sono sicuro di aver capito la necessità, magari potresti aggiungere 2 dati di esempio....
Buongiorno Marcus,
grazie per la risposta. Quello che sto creando è un filtro, mi spiego meglio:
1. ogni campo è una select multipla che prende dati tramite query e foreach dalla mia tabella customers (es. tutti i nomi o tutti i numeri di telefono ecc).
2. questi dati una volta selezionati vengono salvati tramite implode su un'altra tabella (filtercustomer) che uso per fare la ricerca (quindi il campo nome conterrà per esempio: Mario Rossi, Luigi Bianchi, ecc..).
3. la tabella customers a sua volta tramite controlla se dentro filtercustomer ci sono dati e si aggiorna in base a quelli.
Da qui il mio problema, funziona tutto ma quando vado ad aggiornare il filtro campo nome (per esempio) anche senza effettuare nessun cambiamento (salvando solo) i dati si salvano a doppio, poi a triplo e vorrei evitarlo
lavoro su php/laravel da autodidatta (anche se da 3 anni ormai) quindi non ho l'eleganza nel codice e la preparazione di un programmatore,
e non riesco a capire per quale motivo la select mi porta dietro dati multipli di loro stessi ogni volta che premo salva anche se io non ho modificato nulla..
Puoi darmi qualche link dove recuperare informazioni su YAML? in rete sto facendo fatica
grazie anticipatamente per l'aiuto che potrai darmi
 

macus_adi

Utente Attivo
5 Dic 2017
1.266
82
48
IT/SW
select mi porta dietro dati multipli di loro stessi ogni volta che premo salva anche se io non ho modificato nulla..
Per questo specifico caso ti consiglio di creare un filtro sugli elementi unici, ci sono molti tools che lo fanno ma la strada più semplice potrebbe essere array_unique($array) per passare indenni da eventuali modifiche....

Puoi darmi qualche link dove recuperare informazioni su YAML?
Symfony\Component\Yaml\Yaml;
Nativa di PHP
http://php.net/manual/en/function.yaml-parse-file.php
 

Cristian80

Nuovo Utente
28 Feb 2019
9
0
1
Per questo specifico caso ti consiglio di creare un filtro sugli elementi unici, ci sono molti tools che lo fanno ma la strada più semplice potrebbe essere array_unique($array) per passare indenni da eventuali modifiche....


Symfony\Component\Yaml\Yaml;
Nativa di PHP
http://php.net/manual/en/function.yaml-parse-file.php
ho già provato sia array_unique() che unique() cioè l'equivalente per laravel ma non c'è verso, salva a doppio a triplo ecc
 

macus_adi

Utente Attivo
5 Dic 2017
1.266
82
48
IT/SW
ma il problema è in inserimento????
Crea un middleware per l'inserimento univoco... in questo modo anche se l'insert viene ciclato in qualche modo, hai sempre la gestione unica del dato.
 

Cristian80

Nuovo Utente
28 Feb 2019
9
0
1
ma il problema è in inserimento????
Crea un middleware per l'inserimento univoco... in questo modo anche se l'insert viene ciclato in qualche modo, hai sempre la gestione unica del dato.
in effetti usando un middleware che mi fa un controllo con array_unique() dopo che la variabile è stata settata dovrei risolvere il problema.. giuro non ci avevo pensato!
grazie mille davvero