Come estrapolare nomi colonne tabella e affiancare Input Radio

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao a tutti.

Come da titolo vorrei estrapolare da una tabella di un database tutti i nomi delle colonne (e solo quelli) e affiancare a ciascun nome un "Input Radio".
Tengo a precisare che non conosco né i nomi, né il numero delle colonne della tabella.

Per quanto riguarda l'estrapolazione dei nomi delle colonne non ho avuto problemi, mentre non so come comportarmi con gli "Input Radio".
Qualcuno ha qualche consiglio da darmi? Se può interessarvi posto il codice che fino a qui ho scritto.

PHP:
<?php

  $rigo = "<br>";

// FACCIO LA CONNESSIONE AL SERVER ED AL DATABASE
  
  $con = mysql_connect ("localhost", "root","") or die ("Connessione al server fallita!!!".mysql_error());
  
  $db = mysql_select_db ("prova", $con);
  
  if (!$db)
  {
    die ("Connessione al database login fallita!!!".mysql_errore());
  }
  
// FACCIO LA QUERY SULLA TABELLA DEL DATABASE

  $risultato = mysql_query ('SHOW COLUMNS FROM meco');
  
// FACCIO UN CICLO WHILE PER STAMPARE TUTTI I NOMI DELLE COLONNE E VAGO A CAPO DI 2 RIGHE
  
  while ( $dati = mysql_fetch_array($risultato) )
  {
    print $dati [0] . $rigo .$rigo;
  }

?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ho capito male quello che vuoi fare
PHP:
<?php
//......
//immagino che i radio siano all'interno di un form
echo "<form name=\"form1\" method=\"post\" action=\"dove_vuoi_tu.php\">";

while ( $dati = mysql_fetch_array($risultato) ){ 
  echo $dati [0]."<input name=\"dato\" type=\"radio\" value=\"".$dati [0]."\">";
}
//pulsante di submit
echo "<input type=\"submit\" name=\"invia\" value=\"invia\"><br><br>";
echo "</form>";
//..........
?>
poi nella dove_vuoi_tu.php leggi il valore selezionato
PHP:
<?php
//.......
$nome_colonna=$_POST['dato'];
//.......
?>
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia. Grazie mille, hai centrato in pieno quello che volevo fare!!!:fonzie:
Solo una cosa: se ad esempio la tabella ha 5 colonne, quando il tuo codice mi inserirà gli "input radio", questi avranno tutti name=dato. Preferirei che fossero diversi; andrebbe benissimo anche name= dato1; name=dato2; name=dato3 etc;
Secondo te come dovrei modificare questa riga di codice:
PHP:
echo $dati [0]."<input name=\"dato\" type=\"radio\" value=\"".$dati [0]."\">";
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
generalmete ai radio si da un nome unico perche la selezione di uno esclude gli altri e poi è il valore che trasmette quello (unico) che viene selezionato che interessa
se vuoi trasmettere più valori ti conviene usare le checkbox, in tal caso differisce (a parte il $_POST) il metodo per leggerli.
se hai pazienza nel pomeriggio ti posto un esempio
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia. scusa ma per un attimo mi sono rimbambito...
Il fatto è che il progettino che vorrei realizzare comprende questi due punti:
1) l'utente effettua il login ed entra nella sua pagina privata;
2) al centro della propria pagina privata l'utente dovrà vedere un grafico "Google chart"; gli assi x ed y li sceglierà l'utente stesso tramite il codice che mi hai gentilmente fornito tu.

Detto questo potresti per favore postarmi l'esempio sulle checkbox?

Ciao, grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ipotiziamo che la tua tabella abbia le colonne chiamate
colonnaA
colonnaB
colonnaC
colonnaD
colonnaE
e che nella dove_vuoi_tu.php tu voglia fare una SELECT delle colonne che ti interessano
PHP:
<?php
//......
echo "<form name=\"form1\" method=\"post\" action=\"dove_vuoi_tu.php\">";
//forse ti conviene anche questa riga se vuoi selezionare in un colpo solo
echo "tutte le colonne <input name=\"dato['0']\" type=\"checkbox\" value=\"tutte\"><br>";//$_POST diventa un array di array
while ( $dati = mysql_fetch_array($risultato) ){ 
  echo $dati [0]."<input name=\"dato[".$dati [0]."]\" type=\"checkbox\" value=\"".$dati [0]."\"><br>";
}
//pulsante di submit
echo "<input type=\"submit\" name=\"invia\" value=\"invia\"><br><br>";
echo "</form>";
//..........
?>
poi nella dove_vuoi_tu.php
PHP:
<?php
if(!is_array($_POST['dato']) || $_POST['dato']=""){
	//qualcosa è andato storto es nessuna selezione delle chek
	//rimandi dove vuoi in automatico
	header ('location=dove_vuoi.php');
	exit();
}//!!!! le righe sopra devone essre messe prima del doctipe
$colonne="";
if ($_POST['dato']['0']== "tutte"){
	$colonne="*";
}else{
	//tolgo $_POST['dato']['0'] che da fastidio
	unset($_POST['dato']['0']);
	// e ciclo
	foreach($_POST['dato'] as $chiave => $valore){
		$c[]=$valore;// es $c[0] = colonnaB, $c[1] = colonnaD in funzione delle chek selezionate
	}
	$colonne=implode(",", $c);//l'arry c diventa colonnaB,colonnaD
}
//e quindi puoi costruire la select per l'interrogazione al db
$query = "SELECT $colonne FROM tabella";
/*la query risulterà es:
se slezionato tutte "SELECT * FROM tabella"
oppure "SELECT colonnaB,colonnaD FROM tabella"
*/
?>
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia, mi hai aiutato parecchio con i tuoi consigli e con il tuo esempio. Mi hai fatto venire in mente qualche altra idea per il mio programmino. Grazie mille!!! Ciao .:byebye:
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia, scusa se ti disturbo ancora non ho ancora risolto del tutto i miei problemi e spero che puoi darmi una mano.
Ho provato a studiarmi il codice che mi hai postato ma mi da errore in qualche punto, in particolar modo in queste righe:

PHP:
if(!is_array($_POST['dato']) || $_POST['dato']="")
PHP:
if ($_POST['dato']['0']== "tutte")
PHP:
unset($_POST['dato']['0']);
PHP:
foreach($_POST['dato'] as $chiave => $valore){

Se riuscissi ad associare a ciascun Input radio la relativa colonna per me sarebbe una grande cosa.

Ciao, grazie
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia.

L'errore che mi da riguarda questa riga di codice
PHP:
if(!is_array($_POST['dato']) || $_POST['dato']="")
L'errore è questo: Notice: Undefined index: dato in ...

Un altra cosa: nel tuo codice hai usato i checkbox, mentre io ho inserito gli input radio. Se provo a selezionare un qualsiasi input radio e a cliccare su submit mi tira fuori questi altri due errori:

Notice: Uninitialized string offset: 0 in C:\... on line 54 (la linea 54 è questa: if ($_POST['dato']['0']== "tutte"){ )
Fatal error: Cannot unset string offsets in C:\... on line 58 (la linea 58 è questa: unset($_POST['dato']['0']); )

Ciao
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao sucsa se non ti ho risposto, ma sono alcuni giorni che sono a letto con l'influenza è ho la testa che fuma.
spero tra qualche giorno di darci un occho.
comunque:
l'uso dei chek o dei radio dipende da quello che vuoi fare
se vuoi selezionare UN SOLO input alla volta vanno bene i radio
se vuoi più alla volta devi usare ichek
tra l'altro si potrebbero usare anche i radio, ma non è corretto
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia, non preoccuparti pensa prima a guarire dall'influenza.

Per quanto riguarda i radio e i check, io vorrei usare i radio perché nel mio caso l'utente che entra nella sua pagina personale deve potersi costruire il grafico scegliendosi l'elemento dell'asse X e l'elemento dell'asse Y. Quindi le scelte a sua disposizione sono soltanto due (una per l'asse X e una per l'asse Y).

Per farmi capire meglio ho allegato una immagine dove si vede un form contenente due DIV allineati in cui scegliere l'elemento dell'asse X e dell'asse Y, il grafico vuoto e il bottone per "costruire" il grafico.

Questo mio progettino per la visualizzazione del grafico l'ho già realizzato in passato, solo che non davo la possibilità all'utente di scegliere quali dati visualizzare tra quelli presenti nella tabella del database. Ero io che sceglievo per lui l'elemento dell'asse X e dell'asse Y secondo me più idonei. Quindi mi piacerebbe che fosse lui stesso a "costruirsi" il grafico con i dati presenti in tabella.

Scusa se sono stato un pò lungo, ciao
Immagine.jpg
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
fammi capire un paio di cose:
1. a dx (asse X) vuoi selezionare una delle voci e solo una
2. a sx (asse Y) come per l'asse x
giusto?
3. cosa è quel radio che chiami id? a cosa serve?
inoltre se sulla X seleziono es. temperatura, sulla Y posso selezionare ancora temperatura o deve essere esclusa?
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia.

Per quanto riguarda i primi due punti hai capito perfettamente. Nel "DIV Asse X" voglio selezionare solo una voce per l'asse X e nel "DIV Asse Y" voglio selezionare solo una voce per l'asse Y.

Il radio chiamato "id" non è altro che il numero di righe presenti nella tabella del database. Quando creo una tabella ho l'abitudine di impostare il primo campo chiamandolo "id" fissandogli come attributi extra Auto_increment e chiave primaria.

Per quanto riguarda l'ultima domanda, se l'utente sceglie sia la X che la Y uguali (ad esempio la temperatura) per me può andare bene, in tal caso sul grafico uscirà una linea a 45°.

Ciao, grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Il radio chiamato "id" non è altro che il numero di righe presenti nella tabella del database. Quando creo una tabella ho l'abitudine di impostare il primo campo chiamandolo "id" fissandogli come attributi extra Auto_increment e chiave primaria.
che sia l'id ok, ma a che ti serve selezionarlo?
poi comunque da quello che dici è l'id del record (e da dove lo tiri fuori, dalla query per sapere i nomi dei campi non lo ricavi) e non è il numero di righe cioè quanti record, talvolta, ma quasi mai soprattutto se fai modifiche aggiunte/cancellazioni alla tabella, l'id massimo corrisponde a quanti record (righe) hai.
ti faccio un esempio banale di una tabella con due campi di cui uno l'id e l'altro pinco
man mano che inserisci i record avrai
id | pinco
1 | aaaa
2 | nnnn
3 | xxxxx
ti accorgi che il record con nnnn non serve e da fastidio quindi lo elimini e aggiungi un altro record, ti ritrovi con questa situazione
id | pinco
1 | aaaa
3 | xxxxx
4 | zzzzz
da come puoi capire l'id non corrisponde più a quanti record hai.
se ti serve per impostare il grafico sapere quanti dati X/Y hai devi fare un'altra query da cui ricavarlo.
detto questo impostando i radio viene più semplice.
fammi sapere che ti imposto lo script
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao borgo italia.

Ho letto con molto interesse il tuo ultimo post ed hai perfettamente ragione su quello che dici. Nel mio caso, però, corrispondono effettivamente al numero di righe presenti nella tabella. Questo perché una volta inserito il record non effettuo nessuna cancellazione e/o modifiche ai dati.

Ma comunque per sicurezza facciamo una cosa: escludiamo l'id.

Ciao, grazie.
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Estrapolare parti di testo con PHP PHP 2
M Estrapolare singoli record da intervallo (dal al/inizio fine) MS Access 0
max1974 [MySQL] Estrapolare record finti/inisistenti MySQL 9
G [HTML] estrapolare link da pagina web HTML e CSS 9
C [PHP] Estrapolare solo l'anno da una data di nascita inserita in un campo PHP 8
J [PHP] Estrapolare utente dominio da pc PHP 2
Francesco Oliviero Estrapolare HTML da questo sito (intera Range Slider) HTML e CSS 1
R [PHP] Estrapolare dati da una query left join PHP 0
G [RISOLTO][PHP] Estrapolare dati da Tabella PHP 11
S estrapolare i dati da una tabella e farli diventare varibili PHP 1
SimooRu Estrapolare dati da sito Sviluppo app per Android 1
W Estrapolare un indirizzo mail di un form durante l'invio PHP 5
A Regex per estrapolare url da testo PHP 5
R estrapolare numeri PHP 2
bit77 Domanda! ho un file xml e devo estrapolare determinati testi, php è la soluzione? PHP 0
S estrapolare max(id) dal database. PHP 2
M estrapolare dati xml PHP 2
M Estrapolare imagini da pagina PHP e fare iframe PHP 3
M Sapete estrapolare file flash di bravo c3 softworks? Flash 0
M Estrapolare stringhe da una funzione PHP 7
T [PHP] Estrapolare testo da una stringa PHP 18
M estrapolare dei dati da 4 tabelle sql PHP 7
C estrapolare da documento solo numeri Javascript 3
M estrapolare un listino prodotti da db Classic ASP 7
M [PHP] Estrazione random con nomi presi dal db PHP 22
P [PHP] Stampare record di diverse tabelle ma con nomi uguali PHP 6
F Nomi domini simili Domini 1
A [PHP] Generare nomi dei file con lettere minuscole e vocali senza accenti PHP 2
crealatualista [PHP] Inserire nomi nel database PHP 1
MarcoGrazia campo con autocompletamento a formato multiplo (nomi/date) jQuery 3
D Associazione nomi dominio diversi a stesso ip Domini 4
S [PHP] Filtrare nomi tabelle DB PHP 6
I Tabella/aree di testo con input da lista di nomi. PHP 4
I Form/aree di testo con input da lista di nomi!Chiedo aiuto!! HTML e CSS 3
M Ricerca guidata per nomi di città PHP 8
D php estrazione random nomi e senza ripetizione PHP 14
A funzione di ricerca in computer di nomi cartelle e files Windows e Software 3
Z Tracciare nomi utenti Facebook in google analytics PHP 0
F Come ottenere nomi delle tabelle in un database e ciclarli PHP 1
A nomi di dominio .eu ad 1 euro! sul sito elb.it Domini 0
F Tabelle e nomi di campo Database 2
C Funzione PHP non ottiene nomi da puntatori PHP 1
valient13 prendere nomi da database PHP 2
nim salvare in una tabella i nomi dei file contenuti in cartella PHP 2
Monital Selezione nomi PHP 1
H sito multilingua con nomi località multilingua.... PHP 1
E problema con nomi registrazione PHP 8
A contare iniziali dei nomi Java 3
M I link si aprono ma non con i loro "nomi" HTML e CSS 10
purno Nomi dominio sito dedicato allo yoga e al tai ki Domini 0

Discussioni simili