Filtrare dati tabella mysql ed estrarli

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ciao a tutti...
Ho un problemino da risolvere..
Con un form volevo estrarre una determinata colonna dal mio db e filtrare i dati al suo interno.
Codice:
DATO1       DATO2        DATO3      DATO4       .....      DATO52
1                        BLU                0              SI                             23
1                        GIALLO          0               NO                          25
12                      ROSSO         8                SI                              28
1                       BIANCO         7               NO                            34

Il mio bisogno e' quello di filtrare i dati della colonna 52 e stamparli a video in una tabella.
form.php
Codice:
<h1>INSERISCI DATO8  PRODOTTO</h1><br><hr><br>
<br>
<form method="post" action="cerca.php">
<h2>dDATO8</h2>&nbsp&nbsp<input type="text" name="testo"><br><br>
<input type="submit" value="DISPONIBILE"><br><br>
</form>
cerca.php
Codice:
<?php
$cn = mysql_connect("localhost", "user", "");
mysql_select_db("my_DB", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
$newpage = 'http://www.miosito/cerca/formcerca.php';
$wh="";
if(!empty($testo) && preg_match('/^[a-zA-Z0-9]{1,17}/',$testo)){
    $wh=" WHERE DATO8='".$testo."' ";//o se nel $_POSTO hai messo $box qui ci va $box
    //doveil nome del campo su cui fare la ricerca lo sai tu
    $sel = "SELECT* FROM completo $wh";
    //var_dump($sel); LO COMMENTI
    $query = mysql_query($sel, $cn );
    $quanti = mysql_num_rows($query);
    if ($quanti == 0){
        echo "<h2>HAI INSERITO UN CODICE ERRATO!</h2>";header('Refresh: 3; url=' . $newpage);
    }else{
        while($rs=mysql_fetch_array($query)){
            //ti converrebbe mettere il nome del campo che visualizzi es al posto di $rs[2] mettere $rs['pinco']
           echo "<tr> <h1><center>ECCO I DETTAGLI CHE HAI RICHIESTO:"."<br><br><hr>";
            echo "<td> " . $rs[8] . "</td>";
            echo "<td> " . $rs[5] . "</td>";
            echo "<td> " . $rs[9] . "</td>";
            echo "<td> " . $rs[29] . "</td>";
     
           echo "<td>" . $rs[52] . "</td></center></h1><br></tr>";
         
           
     }  
    }

}else{
    echo "<h2>NON HAI INSERITO NULLA!</h2>";header('Refresh: 3; url=' . $newpage);
}
mysql_close($cn);
?>

</table>
Cosi funziona e mi estrae cio che chiedo ma volevo filtrare la colonna52 e volevo mi tirasse fuori righe solo con un risultato predefinito..
Come posso fare??
Grazie a tutti.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
ti schematizzo un metodo di filtraggio.
intanto rendi il name del campo di input un array associativo e mettendo quelli che ti servono
HTML:
<form method="post" action="cerca.php">
DATO1&nbsp&nbsp<input type="text" name="dato['01']"><br><br>
<!-- ecc--->
DATO8&nbsp&nbsp<input type="text" name="dato['08']"><br><br>
DATO9&nbsp&nbsp<input type="text" name="dato['09']"><br><br>
<!-- ecc--->
DATO52&nbsp&nbsp<input type="text" name="dato['52']"><br><br>
<input type="submit" value="DISPONIBILE"><br><br>
</form>
e in cerca.php
PHP:
<?php
//..connesione...
$dati_inviati=array_map("trim",$_POST['dato']);//array con i fari $_POST[xy] se inviati
$wh=" WHERE 1=1 ";//condizione SEMPRE VERA, serve evitare ti togliere l'eventuale AND in più
if(is_array($dati_inviati)){//verifico comunque che sia un array
    //ciclo l'array
    foreach($dati_inviati as $chiave => $valore){
        if(!empety($valore)){//hai inputato il dato
            //costruisco la condizione
            $dato="DATO".$chiave;//es. risulta DATO05 DATO06....
            //se il valore di $valore è intero non devo mettere gli apici
            if(is_int($valore)){
                $wh.=" AND $dato=$valore ";
            }else{
                $wh.=" AND $dato='".$valore."' ";
            }
        }
    }
    /*esempi di $wh
    se non hai inputato nulla $wh rimane == " WHERE 1=1 "
    se hai inputata es il DATO03 giallo e DATO25 ==23 $wh diventa
    == " WHERE 1=1 AND DATO03='giallo' AND DATO52=23 "
    */
}
//a questo punto fai la query
$query="SELECT * FROM  completo $wh";
//e estrai o tutti i valori se non hai imputato nulla
//o i valori filtrati (se esistono) secondo le condizioni che hai inputato
?>
adattalo alle tue esigenze e fai delle prove

p.s.
quando posti del codice racchiudilo dentro gli opportuni bccode
HTML:
 se solo html o [PHP] se c'è del php
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
ciao
ti schematizzo un metodo di filtraggio.
intanto rendi il name del campo di input un array associativo e mettendo quelli che ti servono
HTML:
<form method="post" action="cerca.php">
DATO1&nbsp&nbsp<input type="text" name="dato['01']"><br><br>
<!-- ecc--->
DATO8&nbsp&nbsp<input type="text" name="dato['08']"><br><br>
DATO9&nbsp&nbsp<input type="text" name="dato['09']"><br><br>
<!-- ecc--->
DATO52&nbsp&nbsp<input type="text" name="dato['52']"><br><br>
<input type="submit" value="DISPONIBILE"><br><br>
</form>
e in cerca.php
PHP:
<?php
//..connesione...
$dati_inviati=array_map("trim",$_POST['dato']);//array con i fari $_POST[xy] se inviati
$wh=" WHERE 1=1 ";//condizione SEMPRE VERA, serve evitare ti togliere l'eventuale AND in più
if(is_array($dati_inviati)){//verifico comunque che sia un array
    //ciclo l'array
    foreach($dati_inviati as $chiave => $valore){
        if(!empety($valore)){//hai inputato il dato
            //costruisco la condizione
            $dato="DATO".$chiave;//es. risulta DATO05 DATO06....
            //se il valore di $valore è intero non devo mettere gli apici
            if(is_int($valore)){
                $wh.=" AND $dato=$valore ";
            }else{
                $wh.=" AND $dato='".$valore."' ";
            }
        }
    }
    /*esempi di $wh
    se non hai inputato nulla $wh rimane == " WHERE 1=1 "
    se hai inputata es il DATO03 giallo e DATO25 ==23 $wh diventa
    == " WHERE 1=1 AND DATO03='giallo' AND DATO52=23 "
    */
}
//a questo punto fai la query
$query="SELECT * FROM  completo $wh";
//e estrai o tutti i valori se non hai imputato nulla
//o i valori filtrati (se esistono) secondo le condizioni che hai inputato
?>
adattalo alle tue esigenze e fai delle prove

p.s.
quando posti del codice racchiudilo dentro gli opportuni bccode
HTML:
 se solo html o [PHP] se c'è del php
Ciao Borgo,
Scusami ma non ho capito nello script..come posso filtrare per arrivare ad estrarre cio di cui ho bisogno.
In pratica io,tramite un record a scelta che inserisco nel form di ricerca,devo estrarre solo i record con una caratteristica ben precisa nella colonna DATO52.

Spero tu mi possa dare una mano.
Grazie in anticipo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
ti spiego
prima fai un form in cui metti i campi di input (da uno a più dipende da cosa vuoi filtrare), per esempio li ho elencati tutti, ma ti metti solo quelli che ti servono pensando anche a quelli che ti potrebbero servire in futuro.

nel form inputi i valori che ti interessa filtrare ad esempio nell'input di name="dato['52']" metti SI e lasci gli altri vuoti
all'input il php ti estrae tutti i record che hanno DATO52 == SI
però se tu volessi estrarre ad esempio i record c che abbiano DATO52 == NO e DATO03==giallo nel form inputerari
nell'input name="dato['52']" inputerai NO e
nell'input name="dato['03']" inputerai giallo
allora php ti estrarrà tutti e solo i record con DATO03==giallo AND DATO52==NO se esistono
veniamo al php
la prima riga vuota gli eventuali campi inputati con solo spazi
la seconda definisce una condizione che sarà sempre comunque vera (1 è sempre uguale a 1)
ora se non inputi nulla e dai il subimt la query di estrazione rimane
$query="SELECT * FROM completo WHERE 1=1"
e quindi ti estrarrò tutti i dati
veniamo al foreach
avendo nominati i campi di input in quel modo il $_POST risulterà (potrebbe risultare) così
$_POST['dato']['01'] con il valore che (se) hai inputato in dato['01']
$_POST['dato']['02'] con il valore che (se) hai inputato in dato['02']
...ecc
quindi verifica quali input sono stati riempiti e forna per prima il nome del campo che ti serve a quasto mett = al valore che hai inputato e lo aggiunge al WHERE 1=1
esempio WHERE 1=1 AND DATO52='NO'
aggiungendo altri se imputati es
esempio WHERE 1=1 AND DATO03='giallo' AND DATO52='NO'
da questo dovresti capire quell' 1=1, se non ci fosse dovrei fare uno script che togliesse il primo AND altrimenti avrei un errore di sintassi nella query es ...WHERE AND DATO52='NO'
spero di essere stato chiaro, fai delle prove
 
Discussioni simili
Autore Titolo Forum Risposte Data
D Filtrare dati da tabella PHP 5
S filtrare dati in query MS Access 3
W Excel come filtrare una tabella Windows e Software 2
S filtrare database mysql MySQL 3
S Come filtrare valori di un array PHP 4
M Filtrare risultati con valori checkbox passati con jquery jQuery 2
A Strumenti per filtrare il css HTML e CSS 1
N [PHP] filtrare input form di tipo array PHP 0
giancadeejay php WHERE per filtrare PHP 4
S [PHP] Filtrare nomi tabelle DB PHP 6
xone Filtrare e ripulire stringhe in input PHP 1
K Filtrare per distanza Classic ASP 3
G Filtrare risultati Google Maps PHP 1
S Filtrare casella di riepilogo da query UNION MS Access 0
G Filtrare i risultati per fascia di prezzo WordPress 2
M Filtrare AutoComplete Extender Ajax 1
JellyBelly Passare Parametro per filtrare i maker per google map Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
A invio massivo dati a file php Javascript 4
M Inviare dati nel db dopo risposta alert PHP 0
A recuperare i dati passati nel post PHP 1
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
J Form inserimento dati in database Ajax 1
D Recupero dati da HDD esterno Hardware 0
L non duplicare dati in stato "aggiornamento" PHP 6
L inserire dati multi livello PHP 8
L input (rilevare cambio dati) PHP 3
L input dati con inser into select ? PHP 4
W Invio Dati ad un altra pagina Classic ASP 1
A Mostrare dati database per pagine PHP 2
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
S Gestire scelta dropdown con dati da Mysql PHP 2
C Estrarre dati stringa Sql Database 1
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
W Evitare ridondanza dei dati Classic ASP 3
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 sql importazione dati MySQL 0
C Aggiungere blocco dati Javascript 6
G inserire dati automaticamente in mysql PHP 0
Tommy03 Unire dati da due tabelle MySQL 5
S Trasferire dati sulle pagine del sito PHP 7
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
L inviare i dati di un form ad un database PHP 6

Discussioni simili