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;
  }

?>
 
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'];
//.......
?>
 
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]."\">";
 
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
 
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.
 
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"
*/
?>
 
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:
 
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
 
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:
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
 
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:
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?
 
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.
 
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
 
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