Estrazione MySql da menù a tendina

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Salve Ragazzi,

mi sapreste consigliare degli esempi da studiare di estrazioni dati da Mysql ( il database c'è già ed è già pieno di dati...io riesco già a fare estrazione da phpmyadmin tranquillamente) partendo da un menu a tendina? Mi spiego meglio: quello che vorrei fare è avere più menu a tendina che permettono di selezionare i dati necessari per la query e cliccando sul bottone RICERCA stampo in output i risultati della query. Per esempio se volessi sapere quanti maglioni ho nel mio database:

3 menù a tendina che chiedono:

Capo: Magliette-Maglioni-Cappotti-------> scelgo Maglioni
Colore: Rosso-Nero-Verde-Blu--------scelgo Nero
Taglia:S-M-L-XL-------->scelgo XL

RICERCA

Risultato: Hai ancora 15 Maglioni di colore Nero di taglia XL
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
ma anche i menù a tendina devono essere popolati con dati estratti da un db?
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
ma anche i menù a tendina devono essere popolati con dati estratti da un db?

no, i menu a tendina posso tranquillamente riempirli io con delle select <option> </option>,a me quello che interessa è che dati i valori delle scelte nei menu a tendina ( maglione-nero-l) venga effettuata una query al mio db e che il risultato mi venga stampato a video magari in una tabellina riepilogativa con il numero dei match. grazie se vorrai aiutarmi
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti fai il tuo form in html (spero che tu lo sappia fare) e raccogli i dati che digiti nelle option a mezzo post.
brutalmente (senza tanti controlli)

PHP:
<?php
//..............
$capo=$_POST['capo'];
$colore=$_POST['colore'];
$taglia=$_POST['taglia'];

$query=mysql_query("SELECT * FROM mia_tabella WHERE capo='$capo' AND colore='$colore' AND taglia='$taglia'");
$quantita=mysql_num_rows($query);

echo "ho n° $quantita $capo di colore $colore e taglia $taglia";
//...............
?>
 

Gino75

Nuovo Utente
23 Set 2010
5
0
0
ma anche i menù a tendina devono essere popolati con dati estratti da un db?

Ciao a tutti,
io vorrei fare la stessa cosa ma popolando i menù a tendina con dati estratti da db.....o meglio, l'estrazione e la popolazione riesco a farli:

.....
$leggi_marca = mysql_query("SELECT * FROM marche ORDER BY nome");
while ($row = mysql_fetch_array($leggi_marca))
{
$id_marche = $row['idmar'];
$cod_marche = $row['codice'];
$nome_marche = $row['nome'];
echo "CODICE MARCA: <select name='marca'><option>$nome_marche</option>";
.....

ora quello che vorrei è che scelta la marca venisse conservata in una variabile il valore del 'codice' per poterlo poi utilizzare in una seconda query su un'altra tabella sempre con l'opzione SELCET.

Spero di essere stato chiaro.

Attendo un vs. aiuto.

Gino
 

Gino75

Nuovo Utente
23 Set 2010
5
0
0
si...la relazione tra la tabella 1 e la tabella 2 è 1->N...

ad esempio

tabella 1
id | codice | marca
---|---------|------
1 | cod1 | nome1
2 | cod2 | nome2

tabella 2
id | codice | modello
---|---------|------
1 | cod1 | modello1
2 | cod1 | modello2
3 | cod1 | modello3
4 | cod2 | modello1
5 | cod2 | modello2

quindi se dalla prima select sulla prima tabella seleziono cod1 nella select fatta sulla seconda vorrei visualizzare solo i modelli corrispondenti al cod1.

scusa se ho ripetuto il concetto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se le due queryselect sono in pagine diverse devi usare le sessioni
dal submit della prima selec/optinon (che immagino trasmetti con $_POST) prelevi il valore
es.
$_SESSION['codice']=$_POST['marca'];
la session puoi utilizzarla dove vuoi
 

Gino75

Nuovo Utente
23 Set 2010
5
0
0
@borgo italia

ciao borgo...no la mia idea era quello di fare tutto in un'unica pagina ... ma credo che col solo php non sia possibile :crying:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto guardando il tuo codice,secondo me, hai fatto un errore di logica
PHP:
$leggi_marca = mysql_query("SELECT * FROM marche ORDER BY nome");
while ($row = mysql_fetch_array($leggi_marca)) 
{ 
$id_marche = $row['idmar'];
$cod_marche = $row['codice'];
$nome_marche = $row['nome'];
echo "CODICE MARCA: <select name='marca'><option>$nome_marche</option>";
in questa maniera di vengono nn menù a tendina e poi manca il vaore da trasmettere sulla option

secondo me dovrebbe essere

PHP:
$leggi_marca = mysql_query("SELECT * FROM marche ORDER BY nome");
echo "CODICE MARCA: <select name='marca'>";
while ($row = mysql_fetch_array($leggi_marca)) 
{ 
$id_marche = $row['idmar'];
$cod_marche = $row['codice'];
$nome_marche = $row['nome'];
echo "<option value =\"$cod_marche\">$nome_marche</option>";
//....
}
echo "</select>";
questo intanto uno
 

Gino75

Nuovo Utente
23 Set 2010
5
0
0
ciao
intanto guardando il tuo codice,secondo me, hai fatto un errore di logica
PHP:
$leggi_marca = mysql_query("SELECT * FROM marche ORDER BY nome");
while ($row = mysql_fetch_array($leggi_marca)) 
{ 
$id_marche = $row['idmar'];
$cod_marche = $row['codice'];
$nome_marche = $row['nome'];
echo "CODICE MARCA: <select name='marca'><option>$nome_marche</option>";
in questa maniera di vengono nn menù a tendina e poi manca il vaore da trasmettere sulla option

secondo me dovrebbe essere

PHP:
$leggi_marca = mysql_query("SELECT * FROM marche ORDER BY nome");
echo "CODICE MARCA: <select name='marca'>";
while ($row = mysql_fetch_array($leggi_marca)) 
{ 
$id_marche = $row['idmar'];
$cod_marche = $row['codice'];
$nome_marche = $row['nome'];
echo "<option value =\"$cod_marche\">$nome_marche</option>";
//....
}
echo "</select>";
questo intanto uno



il value in option l'ho mancato è vero ma la tendina funge...ma tu nel tuo hai mancato il tag <select> ed a te nn funge la tendina :p

ad ogni modo i due script sono +o- uguali...il punto sta proprio li: come faccio a passare il value dell'option in una variabile fuori dal while per utilizzarla nella seconda query??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa, ma ho simulato tramite array, al posto del db, e foreach, al posto di while, (non volevo farmi il db)
quello che stai cercando di fare tu


PHP:
<?php
$pinco=array('maglia'=>'cod1', 'pantalone'=>'cod2', 'mutande'=>'cod3');
//caso come hai fatto tu (me metti </select> dentro il while
foreach($pinco as $chiave => $valore){
	echo "CODICE MARCA(tuo 1): <select name='marca'><option value=\"$valore\">$chiave</option></select>";
}
//mentre se lo metti fuori il risultato è incasinato
echo "<br><br>";//salto riga per dividere

foreach($pinco as $chiave => $valore){
	echo "CODICE MARCA(tuo 2): <select name='marca'><option value=\"$valore\">$chiave</option>";
}
echo "</select>";
echo "<br><br>";//salto riga per dividere
//come ho detto io (tra l'altro se quardi non miero dimenticato <select>)
echo "CODICE MARCA(mio): <select name='marca'>";
foreach($pinco as $chiave => $valore){
	echo "<option value=\"$valore\">$chiave</option>";
}
echo "</select>";
?>
se guardi con ie o ff il codice sorgente html risultante dallo script sopra e il seguente

HTML:
CODICE MARCA(tuo 1): <select name='marca'>
<option value="cod1">maglia</option>
</select>
CODICE MARCA(tuo 1): <select name='marca'>
<option value="cod2">pantalone</option>
</select>
CODICE MARCA(tuo 1): <select name='marca'>
<option value="cod3">mutande</option>
</select>
<br><br>
CODICE MARCA(tuo 2): <select name='marca'>
<option value="cod1">maglia</option>
CODICE MARCA(tuo 2): <select name='marca'>
<option value="cod2">pantalone</option>
CODICE MARCA(tuo 2): <select name='marca'>
<option value="cod3">mutande</option>
</select>
<br><br>
CODICE MARCA(mio): <select name='marca'>
<option value="cod1">maglia</option>
<option value="cod2">pantalone</option>
<option value="cod3">mutande</option>
</select>
come puoi notare tuo 1 e tuo 2 danno dei codici html del, diciamo, piffero.
poi per trasmettere e prelevarlo un valore devi usare o post o get (nella stessa pagina o su pagine diverse tramite) e farne le elaborazioni che preferisci.
una volta che hai prelevato il valore puoi utilizzarlo in tutte le query che vuoi
 

Gino75

Nuovo Utente
23 Set 2010
5
0
0
Risolto!

ho risolto con javascript....purtroppo...

HTML:
<SCRIPT language=JavaScript>
function reload(form)
{
var val=form.mar.options[form.mar.options.selectedIndex].value;
self.location='?idmar=<?php echo $row_workModifyRS['idmar']; ?>&mar=' + val ;
}
</script>

...........LA PARTE PHP...............



PHP:
<?PHP
//.....CONNESSIONE AL SERVER E SELEZIONE DEL DB..........
$connessione = mysql_connect("localhost","root","") or die ("connessione al server fallita: ". mysql_error());
$database = mysql_select_db('sosclima', $connessione);

//.............LETTURA DEL CODICE MARCA..........
@$mar=$_GET['mar'];

//.............1°SELECT...........

$leggi_marca = mysql_query("SELECT * FROM marche ORDER BY nome");
echo "<select name='mar' id='marca' onchange=\"reload(this.form)\"><option value=''>Marca...</option>";
while ($row1 = mysql_fetch_array($leggi_marca)) 
{ 
	if ($row1['codice']==@$mar)
	{
	echo "<option selected value='$row1[codice]'>$row1[nome]</option>"."<br>";
	}
	else
	{
	echo "<option value='$row1[codice]'>$row1[nome]</option>";
	}
}
echo "</select>";

//.............2°SELECT..........		
$leggi_modello = mysql_query("SELECT * FROM macchine WHERE idmar='$mar' ORDER BY idmar");
echo "<select name='modello'><option value=''>Modello...</option>";
while ($row2 = mysql_fetch_array($leggi_modello)) 
	{ 
		echo"<option value=$row2[idmod]>$row2[modello]</option>"; 
	}
echo "</select>";	
?>

...naturalmente tutto chiuso in un form/POST
 
Ultima modifica di un moderatore:

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Prima di tutto grazie per avermi risposto. Ho provato a buttar giù una prima bozza ma c'è qualcosa che non va ( ti premetto che il tutto è partito da un esempio che ho trovato su un libro...perciò di sicuro c'è qualche cosa che dovrei modificare ma che mi manca). Questo è un primo esempio di estrazione dati partendo da un menù a tendina...potrebbe essere un buon punto di partenza se funzionasse. Allora ho creato una prima pagina in php book_stats.php con il seguente codice:

HTML:
<HTML>
<!-- book_stats.php  -->
<BODY>
<B>Seleziona il tipo di interrogazione</B><BR>
<FORM METHOD=GET ACTION="book_stats_proc.php">
<B>Risultato richiesto</B>:<BR>
<SELECT NAME="query" >
<OPTION VALUE=sql1> Totale Numero Iscritti
<OPTION VALUE=sql2> Iscritti del Giorno
<OPTION VALUE=sql3> Totale Utenti Provenieni da GOOGLE
</SELECT>
<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Richiedi!">
<INPUT TYPE="RESET"  VALUE="Cancella!">
</FORM>
</BODY>
</HTML>

Poi un'altra pagina in php book_stats_proc.php con il seguente codice :

PHP:
<HTML>
<BODY>
<?php

$dbhost = "localhost";
$dbname = "XXXXXXX";
$dbuser = "XXXXXXX";
$dbpass = "XXXXXXX";

$link = mysql_connect($dbhost, $dbuser, $dbpass) or die("Could not connect");
    mysql_select_db($dbname);



$sql1="SELECT * FROM `MY_DB` WHERE 1";
$sql2="SELECT * FROM `MY_DB` WHERE `datareg` like '%2010-09-27%'";
$sql3="SELECT * FROM `MY_DB` WHERE `ref` LIKE '%_google%'";


switch ($query) {
case "sql1":
     $query=$sql1;
     echo "Utenti Trovati $sql1"
     break;
case "sql2":
    $query=$sql2;
      echo "Utenti Trovati $sql2"
     break;
case "sql3":
     $query=$sql3;
      echo "Utenti Trovati $sql3"
     break;


    default:
     $query=$sql1;
 }

echo "<BR><A HREF=\"book_stats.php\"> Indietro</A>";
mysql_close($link);
?>
</BODY>
</HTML>

Se lo apro con explorer mi dice impossibile aprire la pagina mentre con firefox mi restituisce pagina bianca. Mi aiutati/aiutate a capire dov'è l'errore?

Grazie Mille
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
correggiamo prima alcune imprecisioni l'html del form

HTML:
<B>Seleziona il tipo di interrogazione</B><BR>
<FORM  METHOD="POST" ACTION="book_stats_proc.php">
<B>Risultato richiesto</B>:<BR>
<SELECT NAME="query" >
<OPTION VALUE="sql1"> Totale Numero Iscritti</OPTION>
<OPTION VALUE="sql2"> Iscritti del Giorno</OPTION>
<OPTION VALUE="sql3"> Totale Utenti Provenieni da GOOGLE</OPTION>
</SELECT>
<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Richiedi!" NAME="richiedi">
<INPUT TYPE="RESET" VALUE="Cancella!">
</FORM>
poi domani ti faccio vedere la parte php di book_stats_proc.php
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Ti ringrazio di cuore, aspetto con ansia di capire quante castronerie ho fatto nell'altro file in php.

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
cominciamo
nel form che hai fatto tu fai una scelta e,in teoria, in funzione della scelta vuoi estrarre dalla tua tabella un certo tipo di indcazione
per prima cosa trasemtti alla pagina book_stats_proc.php il valore della scelta, ma nella pagina non li leggi.
quindi per prima cosa devi leggere i valori della scelta (ti scrivo i vari nomi in modo esplicativo eventualmente cambiali)
PHP:
<?php
//la parte dei dati di connessione va bene
//leggo il valore inviato dalla select che si chiama query
$scelta_fatta=$_POST['query'];
//in funzione della scelta costruisco la query al db
// e il messaggio da visualizzare
switch($scelta_fatta){
	case "sql1":
		$cerco="";// cerco tutti
		$messaggio="il numero di tutti gli iscritti è ";
	break;
	case "sql2"://nota lo spazio tra " e WHERE
		$cerco= " WHERE datareg like '%2010-09-27%'";// cerco iscritti del giorno (vedi nota sotto)
		$messaggio="il numero degli iscritti di oggi è ";
	break;
	case "sql3":
		$cerco= " WHERE ref LIKE '%_google%'";// cerco iscritti da google
		$messaggio="il numero di tutti gli iscritti da google è ";
	break;
	//il default non ti servirebbe in quanto dalla select invii un valore fisso, non hai messo il valore vuoto
	//comunque non fa male
	default:
		$cerco="";// cerco tutti
		$messaggio="il numero di tutti gli iscritti è ";
	break;
}
//a quetso punto posso costruire la mia stringa per interrogare
//con un concatenamento di stringhe (il punto)
$query_interroga="SELECY * FROM MY_DB".$cerco;
//la tabella si chiama MY_DB ??
//e sin qui tu NON HAI ANCORA INTERROGATO il data base
//interrogo il database con la query che mi dice cosa cercare
$interrogo=mysql_query($query_interroga);
//da quello che ho capito ti interessa sapere il NUMERO di iscritti
$quanti_iscritti=mysql_num_rows($interrogo);
//ora hai tutti i dati per visualizzare il messaggio che con fatica hai cercato
echo "$messaggio $quanti_iscritti<br>";

echo "<BR><A HREF=\"book_stats.php\"> Indietro</A>";
//mysql_close($link);//questo non serve, ci pensa php a chiudere il db
?>
NOTA:
se non vuoi tutte le volte stare a modificare la data di oggi (cosa molto noiosa ed inutile) modifica le righe
PHP:
case "sql2"://nota lo spazio tra " e WHERE
		$cerco= " WHERE datareg like '%2010-09-27%'";// cerco iscritti del giorno (vedi nota sotto)
		$messaggio="il numero degli iscritti di oggi è ";
break;
in questa maniera
PHP:
case "sql2"://nota lo spazio tra " e WHERE
		$data_di_oggi_americano=date("Y-m-d");//restituisce la data odierna in formato anno-mese-giorno
		$data_di_oggi_italiano=date("d-m-Y");
		$cerco= " WHERE datareg like '%$data_di_oggi_americano%'";// cerco iscritti del giorno (vedi nota sotto)
		$messaggio="il numero degli iscritti del $data_di_oggi_italiano è ";
break;
dimenticavo, che programma usi per scrivere? ho notato degli apici "strani", non utilizzerai mica word?

prova, comunque siamo qui
 
Ultima modifica:

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Prima di tutto ti ringrazio per la gentilezza con la quale mi hai aiutato. Ho apportato le modifiche che mi hai suggerito e, ringraziando il cielo, tutto funziona!!!!!

Adesso però, visto che c'ho preso gusto, mi piacerebbe integrarlo con altre 2 query e cioè:

sql4= numero iscritti di ieri
sql5= numero iscritti di ieri provenienti da google

Come faccio a scrivere una query che, come fatto per query di oggi, non mi costringa a modificare giorno per giorno la data ma che lo fa in automatico?

Grazie ancora per il prezioso aiuto!!

P.S
Come editor uso PSPad, ma come ti dicevo l'esempio di partenza l'ho preso da un libro o meglio dal cd che conteneva questo libro, perciò non saprei magari dipendeva da quello...non so!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti do un'indicazione

PHP:
<?php
//devi usare le date in timestamp
//per prima cosa leggi il tempo in timestamp
$tempo=time();//numero di secondi trascorsi dal 1 gennaio 1970 00:00:00 GMT ad adesso
//poi togli un giorno = 24 ore per 6o minuti per 60 secondi
//poi puoi semplificare
$tempo=$tempo-(24*60*60);
//poi trasformi la data timestamp i formato umano (americano o italiano)
$data_di_ieri_americano=date("Y-m-d", $tempo);
?>
poi inserisci la data nelle clausola where similmente a come ti ho già indicato e lascio...smanettare a te che uno poco (mi sembra) devi imparare

come dette comunque siamo qui
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
ALLA GRANDE!!! Ho fatto come mi hai detto e tutto funziona perfettamente! Ti dirò che ci prendo sempre più gusto....specie se le cose funzionano!! Adesso però mi chiedevo questo....scusa se continuo a rompere: se io volessi fare una pagina con queste caratteristiche 2 query fisse + 2 menu a tendina (tutto nella stessa pagina) e cioè:

Totale numero iscritti: ####
Totale numero iscritti provenienti da Google: ####

( 1° Menù) Numero Iscritti del giorno:
giorno-mese-anno invio e gli restiutisce il numero degli iscritti di quel giorno

(2° Menù) Numero Iscritti del giorno provenienti da Google:
giorno-mese-anno invio e gli restiutisce il numero degli iscritti di quel giorno di Google

Che tipo di lavoro si dovrebbe fare? ma soprattutto è fattibile come discorso? Grazie 1000 per tutto quello che stai facendo per me!

Un Caro Saluto
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Progressbar estrazione dati da tabella mySQL Ajax 9
L estrazione dati da mysql in php e salvataggio in cartella del server PHP 51
S Php e mysql, estrazione da una tabella e inserimento in un'altra tabella PHP 14
gandalf1959 Estrazione di un singolo dato da una ricerca mysql PHP 1
N Estrazione Record multipli da MySQL in OO PHP 0
F Estrazione da db MySQL con query molto lunga PHP 13
B Estrazione Tabella MYSQL PHP 2
I estrazione valore da mysql where nome_campo è uguale alla session_id PHP 10
I estrazione immagine in 2 formati da una tabella mysql PHP 3
I estrazione mysql in base al login PHP 77
P Menu a discesa con estrazione dati da datbase mysql PHP 21
L Estrazione immagine database mysql PHP 1
A problema: estrazione dati da query mysql e assegnazione ad una variabile PHP 2
K Estrazione di più risultati da tabelle correlate PHP 5
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
D Chiave unica in estrazione dati da array php PHP 0
L Estrazione valori max su più campi MySQL 4
M [PHP] Estrazione random con nomi presi dal db PHP 22
gandalf1959 Estrazione e visualizzazione del simbolo dell'euro php/mysqli PHP 0
ronny1710 Estrazione Dati Tessera Sanitaria .NET Framework 1
F Estrazione Email di persone selezionate e attive / facebook + invio di massa! Annunci servizi di Social Media Marketing 0
V Estrazione di una singola banda da file multi banda (RGB) con Python Programmazione 0
creatorweb [PHP] estrazione ciclica dati con 2 dati alla volta PHP 2
O [PHP] problema estrazione immagine da db PHP 12
Gigi87 [PHP] Estrazione dati da forum o da social network PHP 1
V [PHP] Estrazione con SQL PHP 1
M [MS Access] Estrazione record multipli MS Access 1
E [PHP] estrazione dati in modo non continuativo PHP 1
S [PHP] estrazione dal DB complicata PHP 7
asevenx [Javascript] Estrazione dal database di un valore in base ad una scelta Javascript 7
P Probelma estrazione stringa PHP 5
C Estrazione Dati da Pagine Gialle PHP 0
L Estrazione Articoli Random da Tabella senza doppioni PHP 1
A Estrazione dati da tabella sql MySQL 27
T Codice per estrazione dati da db PHP 4
F estrazione codice Javascript 0
R Javascript e html - estrazione EXIF da jpg con link per geolocalizzazione google maps Javascript 0
D php estrazione random nomi e senza ripetizione PHP 14
M Problema con estrazione coordinate da google geocoding PHP 1
L Conversione date ed estrazione PHP 0
L estrazione dati per login PHP 0
W Estrazione dati da DB PHP 20
N Problemi estrazione / visualizzazione immagini dal database con PDO PHP 2
L Estrazione dati per settimana. PHP 13
L estrazione dati e immagini in contemporanea PHP 4
B Estrazione Database valori multipli MySQL 4
M estrazione dati casuali da database Database 0
A Evitare estrazione record doppioni PHP 2
C [PHP][MY SQL] - Estrazione dati database tramite form PHP 8

Discussioni simili