[PHP] individuare chiave elemento array

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao a tutti. Come da titolo mi chiedevo come individuare la chiave di uno o più elementi presenti in un array.
Mi spiego. Nel mio form ho inserito una serie di checkbox contenenti i nomi delle colonne di una tabella. Dopo che l'utente ha selezionato una o più checkbox, come faccio a individuare le relative chiavi nell'array?
Le checkbox le ho inserire in questo modo
PHP:
        $query_colonne = mysqli_query ($con, "show columns from tabella");
        
        while ($result_colonne = mysqli_fetch_array($query_colonne))
        {
            $nomi_colonne[] = $result_colonne[0];
        }
        $num_colonne = count($nomi_colonne);
        for ($i=0; $i<$num_colonne; $i++)
        {
            echo '<input type="checkbox" name="colonne[]" id="colonne" value="'.$nomi_colonne[$i].'" />' . $nomi_colonne[$i] . "<br />";
        }
Ciao, grazie mille!
 

fratt

Nuovo Utente
19 Gen 2019
33
4
8
io di solito faccio così
PHP:
$i = 0;
while (isset($_POST['colonne'][$i])) {

  $i++;
}
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
PHP:
$conn=new mysqli('host','user','pass','db');
$colonne=$conn->query('show columns from tabella')->fetch_all(MYSQLI_ASSOC);
foreach (array_keys($colonne[0]) as $items){
   echo '<input type="checkbox" name="colonne[]" id="colonne" value="'.items.'" />' . items . "<br />";
}
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao a tutti, scusate se non ho risposto subito ma il lavoro mi prende un pò di tempo.
Ho visto le voste soluzioni ma non vanno bene perchè quando seleziono uno o più checkbox le chiavi dell'array sono errate.
Faccio un esempio: se seleziono le checkbox n° 3-5-6-8, le chiavi dell'array che ottengo sono 0-1-2-3. Invece dovrei ottenere 3-5-6-8.
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Quindi l'estrazione no da DB, ma input allora hai formulato la domanda in modo ambiguo...
effettua il loop sulle check e identifica i valori no le chiavi....
Faccio un esempio: se seleziono le checkbox n° 3-5-6-8, le chiavi dell'array che ottengo sono 0-1-2-3. Invece dovrei ottenere 3-5-6-8.
Quindi
PHP:
$col=[];
foreach($colonne as $k=>$v){
                   //$k è la chiave dell'array "colonne" preso da input per intenderci 0,1,2,3...
     $col[]=$v; // $v è il valore della selezione che rispecchia quanto richiesto:  3,5,6,7,8
}
print_r($col);
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao a tutti, richiedo scusa per la lentezza nel rispondere.
Provo a rispiegare il problema che ho in quanto non penso di averlo esposto a dovere. Quello che devo fare è questo.
Devo estrarre da una tabella i nomi di tutte le colonne e le devo inserire in una serie di checkbox. Per fare ciò faccio in questo modo:
PHP:
$query_colonne = mysqli_query ($con, "show columns from tabella");
while ($result_colonne = mysqli_fetch_array($query_colonne))
{
  $nomi_colonne[] = $result_colonne[0];
}

$num_colonne = count($nomi_colonne);
for ($i=0; $i<$num_colonne; $i++)
{
  echo '<input type="checkbox" name="colonne[]" id="colonne" value="'.$nomi_colonne[$i].'" />' . $nomi_colonne[$i] . "<br />";
}

Quando l'utente sceglie uno o più checkbox (ad esempio checkbox n. 2,4,7,9) come faccio ad individuare le chiavi degli elementi scelti?
Le soluzioni che mi avete proposto non vanno bene perchè invece di ottenere le chiavi delle checkbox n. 2,4,7,9 ottengo le chiavi n. 0,1,2,3.
Ciao, grazie mille
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Ok allora il problema è sull'input....
Questo problema è dato dalla mancanza di indice su colonne[];
PHP:
echo '<form method="post">';
foreach ($res as $items){
   echo '<input type="checkbox" name="colonne[]" id="colonne" value="'.$items.'" />' . $items . "<br />";
}
echo '<button type="submit">Invia</button>';
echo '</form>';

if(!empty($_POST))print_r($_POST);
OUTPUT ERRATO
Codice:
Array ( [0] => id [1] => name [2] => url [3] => method [4] => backend )
id
name
url
method
backend
Array ( [colonne] => Array ( [0] => name [1] => url ) )


Per gestire come ti serve modifica in questo modo....
PHP:
echo '<form method="post">';
foreach ($res as $k=>$items){
  //viene aggiunto l'indice su $colonne[$k]
   echo '<input type="checkbox" name="colonne['.$k.']" id="colonne" value="'.$items.'" />' . $items . "<br />";
}
echo '<button type="submit">Invia</button>';
echo '</form>';

if(!empty($_POST))print_r($_POST);
OUTPUT CORRETTO
Codice:
Array ( [0] => id [1] => name [2] => url [3] => method [4] => backend )
id
name
url
method
backend
Array ( [colonne] => Array ( [1] => name [2] => url ) )
Sappi che stai rendendo posizionale l'input e non è forse la soluzione ottima! Buon lavoro
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Individuare tag con php PHP 3
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3

Discussioni simili