PHP select con file excel

rubber_89

Nuovo Utente
24 Set 2013
8
0
0
Ciao a tutti! :) ho cominciato da poco a dilettarmi con il PHP. Sto cercando di sviluppare un programma che mi permetta di copiare i campi di un file excel esteno all'interno di un database di prova(nel mio caso xlogic) creando una tabella, dopodichè esso deve essere in grado, tramite "filtri" WHERE SQL di interrogare il database e mostrarmi i dati in un form menu a tendina <select> man mano che li seleziono, fino ad arrivare ad aprirmi il link della scheda del corso che soddisfa le voci che ho selezionato in alcuni campi(area, categoria, titolo_corso). Il problema si pone quando seleziono un valore dal primo select(quello relativo all'area) perchè quando mi lancia la pagina successiva nel nuovo select non mi visualizza i dati filtrati! Ipotizzo che il problema riguardi quindi le variabili $POST_[''] perchè il valore del dato selezionato nel menu select non mi arriva nel menu successivo! Inoltre non riesco a visualizzare una sola volta nel menu a tendina un valore del campo area(si ripetono visto che per alcuni corsi le aree sono ovviamente le stesse) ma quello è il problema minore.
Ho provato un pò di tutto ma non riesco a trovare una soluzione valida! Qualcuno può aiutarmi??
Grazie mille! ;)

Posto qui sotto il codice completo, commentato il più possibile per farlo comprendere al meglio:

PHP:
<html>
<head>
	<title>Scegli il corso che fa per te</title>
</head>
<body>
<?php 
 

/*CONTROLLO CAMPI*/
if ($_POST['passaggio']=="")
 	{
		inserimento_dati();
	 }
	
if ($_POST['passaggio']=="filtro1")
	{
		 form2();
	}
	
if ($_POST['passaggio']=="filtro2")
	{
		 form3();
 	}
	
if ($_POST['passaggio']=="filtro3")
	{
		 lancia_scheda_corso();
	 }
			  
	

/*LEGGE UN FILE CSV E LO TRASCRIVE TUTTO IN UN DATABASE*/ 

 function inserimento_dati()
 {
	 include "connessione_database_fabiogia.php";		 //mi collego al database
	  
	//creo una tabella nel database con colonne definite
	 $sql = "CREATE TABLE catalogo_corsi			   
			 (Id int,
			  Area varchar(15),
			  Categoria varchar(30),
			  Sottocategoria varchar(15),
			  Codice	int,
			  Titolo varchar(30),
			 Ultima_modifica int,
			 Crediti_ECM varchar(15),
			 Crediti_UNI varchar(15),
			 Crediti_PROF int,
			 Ore int,
			 Tipologia varchar(15),
			  Lingua	varchar(15),
			 Scheda_corso varchar(100),
			 Ultima_modifica_scheda int,
			 Moduli varchar(15),
			 Lezioni varchar(15),
			 Shop_online_scontato int,
			 Shop_online int
			)";
			
	//esegue la query
	mysql_query($sql);
	
	 mysql_query($modifica);		*/
	
	echo "<p> Scegli l'area del corso che ti interessa: <br><br></p>"; 
	
	 lettura_scrittura();	 //lancia la funzione lettura_scrittura
	
	echo "Dati copiati da file excel a database";	
		
	form1();  		//lancia la funzione FORMULARIO1								
 }
 
 

 function lettura_scrittura()	//Leggi il file excel e scrivi su database
	{					  
		 $anag=fopen("catalogo_corsi_modificato.csv", "r") or die("Impossibile aprire il file!");
		//con "r" che sta per sola lettura
		
		/*non mettiamo alcun secondo parametro cosi andrà fino in fondo a leggere*/
 		while ($rigafile=fgets($anag))
			  {
					$array_campi=explode(";",$rigafile);
					
					$area=$array_campi[0];
					$categoria=$array_campi[1];
					$sottocategoria=$array_campi[2];
					$codice=$array_campi[3];
 					$titolo=$array_campi[4];
					$ultima_modifica=$array_campi[5];
					$crediti_ecm=$array_campi[6];
 					$crediti_uni=$array_campi[7];
					 $crediti_prof=$array_campi[8];
					 $ore=$array_campi[9];
			                $tipologia=$array_campi[10];
 					$lingua=$array_campi[11];
 					$scheda_corso=$array_campi[12];
					 $ultima_modifica_scheda=$array_campi[13];
					 $moduli=$array_campi[14];
                                        $lezioni=$array_campi[15];
					$shop_online_scontato=$array_campi[16];
 					$shop_online=$array_campi[17];	
					
					$insert = "INSERT INTO catalogo_corsi (Area, Categoria, Sottocategoria, 
								Codice, Titolo, Ultima_modifica, Crediti_ECM,
								Crediti_UNI, Crediti_PROF, Ore, Tipologia, Lingua, Scheda_corso,
 								Ultima_modifica_scheda, Moduli, Lezioni, Shop_online_scontato,
								Shop_online)
			  				    VALUES (' ".$area." ',
							   		    ' ".$categoria." ',
									   ' ".$sottocategoria." ',
									   ' ".$codice." ',
									    ' ".$titolo." ',
									    ' ".$ultima_modifica." ',
									   ' ".$crediti_ecm." ',
									   ' ".$crediti_uni." ',
									   ' ".$crediti_prof." ',
									   ' ".$ore." ',
									   ' ".$tipologia." ',
									   ' ".$lingua." ',
									   ' ".$scheda_corso." ',
									   ' ".$ultima_modifica_scheda." ',
									    ' ".$moduli." ',
									    ' ".$lezioni." ',
									   ' ".$shop_online_scontato." ',
 									   ' ".$shop_online." '
									   )"; 			 
				
					mysql_query($insert) or die(mysql_error());	
					
					/*qui ci andrebbe un'altra query che elimina la prima riga
					   di intestazione ma dopo le prove che ho fatto il risultato è
					  peggiore*/  
					
			  }		//fine while  
			  
			  mysql_close($link);	   //chiudo la connessione
	}   				
 
 
 
/*FORMULARIO 1 - CREO UN MENU' A TENDINA IN CUI VISUALIZZO LE VOCI DELLA COLONNA AREA*/
 function form1()
 {
		include "connessione_database_fabiogia.php";
		
		echo "<form action=\"$PHP_SELF\" method=\"post\">";
		
		/*mettiamo qui l'hidden cosi da non ripassarci più, potevamo metterlo anche
		all'inizio della funzione inserimento_dati()*/
		echo "<input type=\"hidden\" name=\"passaggio\" value=\"filtro1\">" ;
		
		echo "<p>"; 
					  
		$seleziona = "SELECT * FROM catalogo_corsi";	
		
		$tipo_menu="area_corso";
		
		echo "<select name=' ".$tipo_menu." '>";
		/*mettiamo i dati trovati su un menù a tendina*/
		
		//eseguo la query della ricerca
		mysql_query($seleziona) or die(mysql_error());
		
		//e la salvo in una variabile
		$result1 = mysql_query($seleziona);
		
		while ($row = mysql_fetch_assoc($result1)) 			//Visualizza area
		{	
			echo "<option value=' ".$row['Area']." '>".$row['Area']."</option>";
		}							
		
		echo "</select>";
		echo "</p>";
		
		//inserisco un tasto
		echo "<p>		   
			<input type=\"submit\" value=\"Avanti\" 
			title=\"Fate click su questo pulsante avanzare nella scelta del corso\">
			</p>";
		
		echo "</form>";

		mysql_close($link);
		
 }	 
 
 			  
 
 /*FORMULARIO 2 - CREO UN MENU' A TENDINA IN CUI VISUALIZZO LE VOCI CHE SODDISFANO I PARAMETRI RICERCATI(CATEGORIA)*/	 
 function form2()
 {
		include "connessione_database_fabiogia.php";
		
		echo "<form action=\"$PHP_SELF\" method=\"post\">";
		
		echo "<input type=\"hidden\" name=\"passaggio\" value=\"filtro2\">" ; 
		
		echo "<p> Scegli l'argomento: <br><br></p>";
		
		echo "<p>"; 
					  
		$seleziona_categoria = "SELECT * FROM catalogo_corsi
				WHERE Area = '$_POST[area_corso]'";	
		
		$tipo_menu2="categoria_corso";
		
		echo "<select name=' ".$tipo_menu2." '>";
		/*mettiamo i dati trovati su un menù a tendina*/
		
		mysql_query($seleziona_categoria) or die(mysql_error());
		
		$result2 = mysql_query($seleziona_categoria);
		
		if (!$result2) 				//controllo esecuzione corretta query
		{
	    	die('Invalid query: ' . mysql_error());
		}
		
		while ($row = mysql_fetch_assoc($result2)) 			//Scorporazione dati
		{	
			echo "<option value=' ".$row['Categoria']." '>".$row['Categoria']."</option>";
		}							
		
		echo "</select>";
		echo "</p>";
		
		//inserisco un tasto
		echo "<p>		   
			<input type=\"submit\" value=\"Avanti\" 
			title=\"Fate click su questo pulsante avanzare nella scelta del corso\">
			</p>";
		
		echo "</form>";

		mysql_close($link);	 
 }
 
 	   
 
 /*FORMULARIO 3 - CREO UN MENU' A TENDINA IN CUI VISUALIZZO LE VOCI CHE SODDISFANO I PARAMETRI RICERCATI(TITOLO)*/	 
 function form3()
 {
		include "connessione_database_fabiogia.php";
		
		echo "<form action=\"$PHP_SELF\" method=\"post\">";
		
		echo "<input type=\"hidden\" name=\"passaggio\" value=\"filtro3\">" ; 
		
		echo "<p> Scegli il tuo corso: <br><br></p>"; 
		
		echo "<p>"; 
					  
		$seleziona_titolo = "SELECT * FROM catalogo_corsi
				WHERE Categoria = '$_POST[categoria_corso]'";	
		
		$tipo_menu3="titolo_corso";
		
		echo "<select name=' ".$tipo_menu3." '>";
		/*mettiamo i dati trovati su un menù a tendina*/
		
		mysql_query($seleziona_titolo) or die(mysql_error());
		
		$result3 = mysql_query($seleziona_titolo);
		
		while ($row = mysql_fetch_assoc($result3)) 			//mi mostra tutti i titoli
		{	
			echo "<option value=' ".$row['Titolo']." '>".$row['Titolo']."</option>";
		}							
		
		echo "</select>";
		echo "</p>";
		
		//inserisco un tasto
		echo "<p>		   
			<input type=\"submit\" value=\"Avanti\" 
			title=\"Fate click su questo pulsante avanzare nella scelta del corso\">
			</p>";
		
		echo "</form>";
		
		mysql_close($link);	 
 }	
 
 
/*VISUALIZZIAMO IN UNA NUOVA FINESTRA LA SCHEDA DEL CORSO*/ 
 function lancia_scheda_corso()
 {
		include "connessione_database_fabiogia.php"; 
		
		//ricerchiamo nella tabella il valore selezionato nel menù a tendina
		$scheda = "SELECT * FROM catalogo_corsi
				WHERE Titolo = '$_POST[titolo_corso]'";	
		
		mysql_query($scheda) or die(mysql_error());
		
		$result4 = mysql_query($scheda);
		
		while ($row = mysql_fetch_assoc($result4)) 			//mi mostra tutti i titoli
		{	
			echo "<form action= ' " .$row['Scheda_corso']. " ' target=\"_blank\">";
		}
		
		//inserisco un tasto
		echo "<p>		   
			<input type=\"submit\" value=\"Vai alla scheda\" 
			title=\"Fate click su questo pulsante per visualizzare la scheda del corso\">
			</p>";
		
		echo "</form>";

		mysql_close($link); 
 }

 ?>

</body>
</html>
 
Ultima modifica di un moderatore:

rubber_89

Nuovo Utente
24 Set 2013
8
0
0
Considerando che il problema si pone nel momento in cui i menù a tendina <select> vanno a riempirsi dei dati del database(apparte nel form1() in cui me li carico direttamente con una semplice query senza il WHERE, e infatti quella funziona), presumo che l'errore stia nella variabile $_POST[area_corso] utilizzata all'interno della query di ricerca(e di conseguenza anche $_POST[categoria_corso] nel form3(), visto che ha la stessa sintassi)! Qualcuno sa dirmi se il codice che ho evidenziato sotto è corretto? :confused:


PHP:
function form2()
 {
        include "connessione_database_fabiogia.php";
        
        echo "<form action=\"$PHP_SELF\" method=\"post\">";
        
        echo "<input type=\"hidden\" name=\"passaggio\" value=\"filtro2\">" ; 
        
        echo "<p> Scegli l'argomento: <br><br></p>";
        
        echo "<p>"; 
                      
[SIZE=3][FONT=Arial Black]        $seleziona_categoria = "SELECT * FROM catalogo_corsi WHERE Area = '$_POST[area_corso]'";   [/FONT][/SIZE]
                                             //con area_corso che è il name del <select> relativo al menù a tendina percendente(quello che visualizza il campo area
                                              // del database tramite la funzione form1())
        
        $tipo_menu2="categoria_corso";
        
        echo "<select name=' ".$tipo_menu2." '>";
        /*mettiamo i dati trovati su un menù a tendina*/
        
        mysql_query($seleziona_categoria) or die(mysql_error());
        
        $result2 = mysql_query($seleziona_categoria);
        
        if (!$result2)                 //controllo esecuzione corretta query
        {
            die('Invalid query: ' . mysql_error());
        }
        
        while ($row = mysql_fetch_assoc($result2))             //Scorporazione dati
        {    
            echo "<option value=' ".$row['Categoria']." '>".$row['Categoria']."</option>";
        }                            
        
        echo "</select>";
        echo "</p>";
        
        //inserisco un tasto
        echo "<p>           
            <input type=\"submit\" value=\"Avanti\" 
            title=\"Fate click su questo pulsante avanzare nella scelta del corso\">
            </p>";
        
        echo "</form>";

        mysql_close($link);     
 }
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, correggi la sintassi di queste due righe
PHP:
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
PHP:
$seleziona_categoria = "SELECT * FROM catalogo_corsi WHERE Area = '" . $_POST['area_corso'] . "'";
 

rubber_89

Nuovo Utente
24 Set 2013
8
0
0
Ciao, correggi la sintassi di queste due righe
PHP:
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
PHP:
$seleziona_categoria = "SELECT * FROM catalogo_corsi WHERE Area = '" . $_POST['area_corso'] . "'";

Hai ragione, c'è quell'errore e adesso l'ho corretto.
I risultati però sono gli stessi, il problema è sempre che la variabile $_POST['area_corso'] all'interno della query dovrebbe andare a riempirmi la <select> successiva e invece non lo fa, oppure c'è qualche altro problema che mi sfugge!! :confused:
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Stampa la query e vedi se è come te l'aspetti
PHP:
$seleziona_categoria = "SELECT * FROM catalogo_corsi WHERE Area = '" . $_POST['area_corso'] . "'";  
echo $seleziona_categoria
non c'è bisogno di eseguire la query due volte
PHP:
 mysql_query($seleziona_categoria) or die(mysql_error());
$result2 = mysql_query($seleziona_categoria);
la prima istruzione la puoi togliere
 

rubber_89

Nuovo Utente
24 Set 2013
8
0
0
Ho fatto come mi hai detto modificando cosi il codice :

$seleziona_categoria = "SELECT * FROM catalogo_corsi WHERE Area='".$_POST['area_corso']."'";
echo $seleziona_categoria;


ed il risultato è questo:

SELECT * FROM catalogo_corsi WHERE Area=' Lingua '
seguito da un menù a tendina vuoto!!

Con ' lingua ' che è il valore che ho selezionato nel precedente menù a tendina,
a quanto pare il problema non è la variabile $_POST['area_corso'] perché
effettivamente ha fatto il suo lavoro portandomi nella nuova pagina il valore
selezionato! Sembra più che altro che la ricerca non dia risultati ma nel
database i dati nella colonna categoria ci sono eccome! Oppure a questo punto
potrebbe esserci qualche errore quando vado a scorporare i dati della query di ricerca!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Mi sembra ci siano due spazi bianchi nella voce " lingua "
prova a trimmarli cosi
PHP:
$seleziona_categoria = "SELECT * FROM catalogo_corsi WHERE Area = '" . trim($_POST['area_corso']) . "'";
 

rubber_89

Nuovo Utente
24 Set 2013
8
0
0
Niente, non funziona!! :(
Non è che per qualche motivo usare il mysql_fetch_assoc per scorporare i dati non è la soluzione migliore in questo caso??
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Problema con query select PHP 2
G [PHP] Select con opzioni dipendenti da un'altra select PHP 3
M [PHP] Problemi con select PHP 6
G sql select con array in php PHP 1
maxnegri Sommare i prezzi dei prodotti aggiunti al carrello di diverse aziende con Select sum php mysqli PHP 10
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
D Sono disperato: Menu select dinamici con Ajax e PHP PHP 1
D Sono disperato: Menu select dinamici con Ajax e PHP Ajax 2
E Modulo PHP con campi Select PHP 7
asevenx [PHP] form con select che non invia dati se con apostrofo PHP 4
asevenx [PHP] select dinamica con valori estratti dal database in base alle scelte precedenti PHP 3
N Visualizzazione record in PHP con SELECT GROUP BY PHP 3
H Problema con MySQL e PHP, dopo aver fatto una SELECT non ottengo alcun risultato PHP 7
F stampare una select con php PHP 7
F Problema select dinamiche con php e jquery jQuery 1
C Select dinamica con PHP PHP 10
L Select Option con php PHP 7
N Select dinamica con utilizzo di php e JQuery jQuery 5
M select dinamiche con Jquery e php jQuery 9
M problema con select jquery e php PHP 0
W [Php - MySql] ricerca con form select diversi PHP 14
S [PHP] Riempire una casella select con query SQL PHP 11
F menù select dinamico da db in php PHP 3
E Php select option e ajax PHP 23
Emix Select concatenate php sql ajax PHP 2
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
T [PHP] Autocompilazione input multiple da una select PHP 1
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
S [PHP] aggiornamento table tramite select senza ricaricare la pagina PHP 5
C [PHP] Controllo <select> comportamento anomalo PHP 2
M [PHP] Drop down in campo select PHP 1
D [PHP] Select dinamici PHP 2
L [PHP] Form da select compilare campi automaticamente PHP 1
T [php] problema creazione query select-where PHP 5
Monital [PHP] query update e select insieme ma frazionando l'arrray PHP 12
S [PHP] restituire intera frase da una select PHP 7
A [PHP] select a cascata regione province e comuni PHP 5
A [PHP] Errore select dati da db PHP 0
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
L [PHP] SELECT DINAMICA PHP 0
A [Javascript] Select concatenata php csv Javascript 3
MatMac System [PHP] Gestione dinamica select-option PHP 3
P [PHP] Recuperare dati da una <select> PHP 4
bubino8 [PHP] Select multipla su piu tabelle PHP 3
Emix [PHP] Check - Select e recupero variabili PHP 40
MikSkagit [PHP] Doppio SELECT PHP 10
eraclio666 [PHP] 2 SELECT DINAMICHE PHP 8
T PHP+MYSQL: una select che cerchi un campo vuoto PHP 7
trattorino [PHP] Select tre tabelle collegamento PHP 9
eraclio666 [PHP] Input text dopo sue select PHP 4

Discussioni simili