Raggruppare valori array

Riccardo Contu

Utente Attivo
14 Lug 2019
25
0
1
Buongiorno,

ho una domanda su come raggrupare in un array alcuni valori inseriti tramite input text e checkbox. In un form precedente si definisce il valore di $n che è un valore numerico. Nel seguente form invece vengono visualizzati n volte i campi in cui inserire i valori. I checkbox possono essere selezionati tutti, alcuni o nessuno.

PHP:
<form action='form.php' method='post'>

$i= 0;
      while($i < $n){
      $n = $i+1;
    
      echo "
      <input name='nome[]' type='text' >

      <input name='valore[]' value='bianco' type='checkbox'>

      <input name='valore[]' value='rosso' type='checkbox'>

      <input name='valore[]' value='nero' type='checkbox'>

     ";         

$i++;
}
</form>

Supponiamo che $n = 2
Avremo come valori inseriti:

nome = nome1
valore = bianco
valore = rosso

nome = nome2
valore = rosso
valore = nero

A questo vorrei stampare a video i risultati in questo modo:

nome1 bianco rosso
nome2 rosso nero

Sto provando in questo modo:

Codice:
$i= -1;
while($i < $n){
$numero = $i+1;
echo "
$nome[$n] $valore[$n]
";
$i++;
}

ma ottengo come risultato: nome1 nome2 bianco rosso rosso nero

Vorrei che i risultati di valore venissero raggruppati in base a nome1 e nome2 e non stampati tutti di seguito. Potreste darmi una mano?
 

Riccardo Contu

Utente Attivo
14 Lug 2019
25
0
1
Facendo un print_r dei 2 array ottengo questo

Codice:
Array ( [0] => nome1 [1] => nome2 )

Array ( [0] => bianco [1] => rosso [2] => rosso [3] => nero )

A me serve che

a nome1 venga associato bianco, rosso
a nome2 venga associato rosso, nero

Tenendo presente che a nome1 e nome2 possano essere associati anche piu' di 2 valori o anche solo 1
 

WmbertSea

Utente Attivo
28 Nov 2014
211
33
28
Ciao, prova ad usare degli array multidimensionali.

Nel codice html dovrai indicare gli indici nel name in un modo del genere:
PHP:
<form action='form.php' method='post'>
<?php
$n= 2;
$i= 0;
while($i < $n){
  echo "
  <input name='nome[$i]' type='text' >
  <input name='valore[$i][0]' value='bianco' type='checkbox'>
  <input name='valore[$i][1]' value='rosso' type='checkbox'>
  <input name='valore[$i][2]' value='nero' type='checkbox'>
  ";
  $i++;
}
?>
  <input type="submit" value="Vai">
</form>
Nota che la variabile "valore" ha due dimensioni dove il primo indice corrisponde a quello della relativa variabile "nome" mentre il secondo indica praticamente il gruppo di valori per quel determinato nome. Il secondo indice potrebbe anche essere rappresentato da dei nomi di variabile, anziché dei valori numerici.

Su form.php puoi quindi avere una roba del genere per elaborare tali dati:
Codice:
<?php
$nome = $_POST["nome"];
$valore = $_POST["valore"];

$i = 0;
while($i < count($nome)){
  echo $nome[$i] . ": " . implode(", ", $valore[$i]) . "<br>";
  $i++;
}
?>
Nota che ogni elemento dell'array $valore è di per se un array. Ho usato quindi la funzione implode per restituire ciascuno dei gruppi di valori relativi ad ogni elemento $valore (e quindi ad ogni nome).

Vedi se può andare, fai sapere.
 

Riccardo Contu

Utente Attivo
14 Lug 2019
25
0
1
Direi che funziona alla perfezione! Ho provato anche con più di 2 valori sull'array nome e valori multipli su valore e vengono raggruppati tutti correttamente. Grazie!
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Raggruppare ed estrarre data più recente MySQL 3
A Raggruppare record con stessa data PHP 13
max1974 raggruppare e girare i dati in colonne MySQL 11
max1974 [PHP] Raggruppare array PHP 4
MarcoGrazia [mysql][mariadb]Raggruppare query in base alla data MySQL 2
M [PHP] [HTML] Raggruppare 4 pagine web in una PHP 3
D Raggruppare dati query con php PHP 1
A Raggruppare piu' funzioni in una sola PHP 1
N Raggruppare risultati di due tabelle PHP 1
ivarello Raggruppare Query per mese PHP 1
mircop Raggruppare elementi di una tabella PHP 2
G Raggruppare record tabella PHP 1
davide1982 Raggruppare dati in categorie con group by MySQL 2
M Raggruppare dati in array per successivo insert PHP 6
X Raggruppare risultati di una query PHP 3
M Problemi con la stampa dei valori in php PHP 1
M Passaggio Valori checbox in textarea Javascript 1
D passare valori da database sql a php PHP 1
O Recupero valori da listato Javascript 0
R Estrarre valori duplicati più volte PHP 0
T recupero valori select multipla da android Javascript 3
L estrarre valori max tra più tabelle MySQL 2
MarcoGrazia Valori di ritorno json via ajax non visti. jQuery 1
N VENDITA CORSO DROPSHIPPING LUCA VALORI Altri Annunci 0
A Ottenimento valori presenze istantanee MySQL 8
S Come filtrare valori di un array PHP 4
L Estrazione valori max su più campi MySQL 4
G Controllare valori in 2 tabelle PHP 5
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
G MariaDB non restituisce dei valori PHP 7
M Estrarre valori MAX da un db con una left join MySQL 8
S Istruzione sql valori "simili" PHP 7
C [PHP] Estrarre da una classe i valori che mi interessano PHP 5
S [PHP] Confrontare due array con valori quasi uguali PHP 2
D [PHP] Tabella: modificare direttamente i valori PHP 6
MarcoGrazia [PHP] Unioni di due array con somma di valori PHP 6
B inserire valori da una tabella a un altra mysql PHP 34
M [PHP] Recuperare coppia con valori i valori MAX e coppia con valori MIN PHP 26
Tommy03 [PHP] Media valori presi da una query PHP 3
M Filtrare risultati con valori checkbox passati con jquery jQuery 2
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
G [ASP] Ciclare i valori di 2 array Classic ASP 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
R php Somma valori in file csv PHP 2
A sommare valori a video per lo stesso giorno jQuery 1
E [PHP] Istruzione condizionale con valori booleani PHP 16
S [Javascript] come estrarre valori array e inserirli in diverse variabili Javascript 1
C [PHP] Creare un Pulsante che ricopia valori di un campo in altro record PHP 4
elpirata [MySQL] Sostituire valori campi con dati casuali MySQL 4
K [PHP] Controllare dati database tra due valori PHP 18

Discussioni simili