ricerca dinamica partendo dalla scelta del database

gian21

Nuovo Utente
16 Mag 2013
23
0
0
buonasera
una domanda che mi sta perseguitando da giorni
vorrei sapere come fare una ricerca dinamica avendo tre campi
(categoria , regione , prezzo) la ricerca dinamica la so fare nn ci sono problemi
l'unico problema che mi assilla e il fatto che il campo categoria e una select con 3 scelte
barca, postobarca, imbarco
e ognuna di esse e un database ognuno con i propri campi
come posso selezionarli da una semplice select???

questo e quello che ho fatto fin ora

PHP:
cat = $POST['cat'];
if ( $cat == 1)
{
$conditions = array();
foreach($_POST['search'] as $key =>$value){
     if(!$value) continue;
     // nel caso di select, puoi mettere un option con value nullo
     switch($key){
         case 'reg':
              $conditions[] = "regione LIKE '%".mysql_real_escape_string($value)."%'";
	    break;
		 case 'przini':
              $conditions[] = "prezzo >= '".mysql_real_escape_string($value)."'";
		break;
		case 'przfin':
              $conditions[] = "prezzo <= '".mysql_real_escape_string($value)."'";
		break;
     }
}
$sql_conditions = implode(' AND ', $conditions);
$query = "SELECT *,DATE_FORMAT(data,'%d-%m-%Y') as data1  from postobarca WHERE $sql_conditions"; 
?>


ragazzi sto alle prime armi potete spiegarmelo anche con un codice capirei perfettamente grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
non so se ti confondi, ma dici 3 db diversi, non intendi per caso 3 tabelle diverse?
se intendi tre tabelle diverse basta che in base alla select tu determini il nome della tebella (non so se fanni riferimento allo switch che hai postato), comunque schenaticamente:
PHP:
<?php
//....
switch ($_POST['nome_select']){
	case "barca":$nome_tabella="barca";
	break;
	case "posto barca":$nome_tabella="posto_barca";
	break;
	case "imbarco":$nome_tabella="imbarco";
	break;
	default: $nome_tabella="barca";
	break;
}
//poi nella selct
$query = "SELECT *,DATE_FORMAT(data,'%d-%m-%Y') as data1  from $nome_tabella WHERE $sql_conditions";
//...
?>
non so se devi anche modificare le clausole del where, se si puoi fare degli switch annidati

p.s.
se intendevi proprio 3 db diversi (ma credo improbabile) devi agire anche su dati di connessione
 

gian21

Nuovo Utente
16 Mag 2013
23
0
0
si scusa ho sbagliato a scrivere sono 3 diverse tabelle
io ho provato a fare cosi ma mi da una pagina bianca senza nessun errore
te lo posto

PHP:
switch ($_POST['cat']){
    case "3":$nome_tabella="barca";
    break;
    case "1":$nome_tabella="postobarca";
    break;
    case "2":$nome_tabella="imbarcocerco";
    break;
} 
$conditions = array();
foreach($_POST['search'] as $key =>$value){
     if(!$value) continue;
     // nel caso di select, puoi mettere un option con value nullo
     switch($key){
         case 'reg':
              $conditions[] = "regione LIKE '%".mysql_real_escape_string($value)."%'";
	    break;
		 case 'przini':
              $conditions[] = "prezzo >= '".mysql_real_escape_string($value)."'";
		break;
		case 'przfin':
              $conditions[] = "prezzo <= '".mysql_real_escape_string($value)."'";
		break;
     }
}
$sql_conditions = implode(' AND ', $conditions);
$query = "SELECT *,DATE_FORMAT(data,'%d-%m-%Y') as data1  from $nome_tabella WHERE $sql_conditions"; 

?>

purtroppo nn capisco bene cosa sbagli penso anche gli swhich annidati ma nn li so proprio fare
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
per caso non ti sei dimenticato
PHP:
<?php
//.....
$sql_conditions = implode(' AND ', $conditions);
$query = "SELECT *,DATE_FORMAT(data,'%d-%m-%Y') as data1  from $nome_tabella WHERE $sql_conditions"; 
$ris=mysql_query($query);//questa
//....
?>
?
poi per gli switch nidificati guarda questo schema
PHP:
<?php
switch($pinco){
	case "1":
		switch($pallo){
			case "A": $a="aaaa";//e altre istruzioni
			break;
			case "B": $a="bbbb";//e altre istruzioni
			break;
		}
		//e altre istruzioni
	break;
	case "1":
		switch($pallo){
			case "A": $a="ccccc";//e altre istruzioni
			break;
			case "B": $a="ddddd";//e altre istruzioni
			break;
		}
		//e altre istruzioni
	break;
	//ecc.....
}
//....
?>
questo se le condizioni del where cambiano in funzione della prima scelta ($pinco), se invece rimangono le stesse è inutole la nidificazione
 

gian21

Nuovo Utente
16 Mag 2013
23
0
0
allora penso che la ramificazione nn mi servi perche e lo stesso where per tt e tre le tabelle
cmq non me lo sono dimenticato quell ultima parte di codice
perche c'è l ho messo alla fine
ti faccio vedere

PHP:
<?php
include('connessione.php');
include ('tutto.php');
/* fine costruzione query */
switch ($_POST['cat']){
    case "3":$nome_tabella="barca";
    break;
    case "1":$nome_tabella="postobarca";
    break;
    case "2":$nome_tabella="imbarcocerco";
    break;
} 
$conditions = array();
foreach($_POST['search'] as $key =>$value){
     if(!$value) continue;
     // nel caso di select, puoi mettere un option con value nullo
     switch($key){
         case 'reg':
              $conditions[] = "regione LIKE '%".mysql_real_escape_string($value)."%'";
	    break;
		 case 'przini':
              $conditions[] = "prezzo >= '".mysql_real_escape_string($value)."'";
		break;
		case 'przfin':
              $conditions[] = "prezzo <= '".mysql_real_escape_string($value)."'";
		break;
     }
}
$sql_conditions = implode(' AND ', $conditions);
$query = "SELECT *,DATE_FORMAT(data,'%d-%m-%Y') as data1  from $nome_tabella WHERE $sql_conditions"; 

?>
 <div style="position:absolute; left:30%; top:60%;">
 <?
 $risultato = mysql_query($query)
or die("Errore!! Nessun Campo selezionato per la ricerca  " /*. mysql_error()*/); 
?>
 </div>
 <?
$num=mysql_num_rows($risultato);
IF ($num == 0) 
 {  ?>
 <div style="position:absolute; left:30%; top:60%;">
 <?
 echo ("Nessun annuncio presente con questa selezione di ricerca.");
 }
 ?>
 </div>
 <?
 include ("ricregionihtm.php");
     exit();
?>
<?
include("ricregionihtm.php");
?>
<div style="position:absolute; left:7%; top:33%;">
<a href="INDEX.php"><b><font face="Arial" size="2" color="DIMGRAY">Home page  ></font></b></a>
<b><font face="Arial" size="2" color="003c69">Elenco di Postobarche</font></b><br>

<div style="position:absolute; left:7%; top:42%;">
<img src="postobarca_box.png">
</div>
<div style="position:absolute; left:25%; top:38%;">
<b><font face="Arial" size="3" color="003c69">Affina la tua Ricerca</font></b><br>
</div>
<b><font color="black" face="arial" size="2" style="left: 60%; top:64%;  position:absolute">Ordina per :</b></font>
<b><font color="black" face="arial" size="2" style="left: 70%; top:64%;  position:absolute">||</b></font>
<a href="ordinaprezzoposto.php"><b><font color="003c69" face="arial" size="2" style="left: 66%; top:64%;  position:absolute">prezzo</font></b></a>
<a href="postobarca.php"><b><font color="003c69" face="arial" size="2" style="left: 71%; top:64%;  position:absolute">data</font></b></a>
<font face="Arial" size="1" color="gray" style="left: 7%; top:66%;  position:absolute">__________________________________________________________________________________________________________________________________________________________________________________________</font>
<TABLE cellspacing="1" cellpadding="12" border=1 bordercolor="LIGHTGRAY" style="left: 7%; top:69%; position:absolute; border: 1px solid #ffffff;">
<TR id="row1">
<TH style="border: 1px solid #CDCDCD; background-color:003c69;"><font face="arial" color="white">data ins.</font></TH>
<TH style="border: 1px solid #CDCDCD; background-color:003c69;"><font face="arial" color="white">foto</font></TH>
<TH style="border: 1px solid #CDCDCD; background-color:003c69;"><font face="arial" color="white">id</font> </TH>
<TH style="border: 1px solid #CDCDCD; background-color:003c69;"><font face="arial" color="white">ubicazione</font></TH>
<TH style="border: 1px solid #CDCDCD; background-color:003c69;"><font face="arial" color="white">categoria</font></TH>
<TH style="border: 1px solid #CDCDCD; background-color:003c69;"><font face="arial" color="white">tipologia</font></TH>
<TH style="border: 1px solid #CDCDCD; background-color:003c69;"><font face="arial" color="white">prezzo</font></TH>
</TR>
<?php
$i=1;
while( $tmp = mysql_fetch_array($risultato))
 {
?>  
   <tr id="row1">  
   <TD style="border: 1px dotted #708090"><b><font face="arial" size="2"><?php echo date($tmp["data1"]); ?></font></b></TD>
   <TD align="center" style="border: 1px dotted #708090"><img src="ADMIN/open.php?id=<?php echo $tmp["id"]; ?>" width="120" height="90">
   <br><br>
   <FORM action="singolo1.php?id=<?php echo $tmp['id'] ?>" method="post" name="ricerca"> 
   <input type="image" img src="botton-vai-annuncio.png">
   </form>
   </TD>
   <TD style="border: 1px dotted #708090;"><b><font face="arial" size="2"><?php echo ($tmp["id"]); ?></font></b></TD>
   
   <TD style="border: 1px dotted #708090;"><p align="center"><b><font face="arial" size="2"><?php echo ($tmp["regione"]); ?>/<?php echo ($tmp["provincia"]); ?></font></b></TD>
   <TD style="border: 1px dotted #708090;"><b><font face="arial" size="2"><?php echo ($tmp["cat"]); ?></font></b></TD>
    <TD style="border: 1px dotted #708090;"><b><font face="arial" size="2"><?php echo ($tmp["tip"]); ?></font></b></TD>
	<TD style="border: 1px dotted #708090;"><p align="right"><b><font face="arial" color="003c69" size="3"><?php echo number_format($tmp["prezzo"]); ?>,00</font></b></TD>
	</TR>  
<?php
 }
 ?>
<b><font color="003c69" face="arial" size="3" style="left: 7%; top:64%;  position:absolute">Postobarca trovati : <? include("contricpost.php") ?></b></font>
</TABLE>
<?
?>


ma purtroppo nulla ancora pagina bianca
 

gian21

Nuovo Utente
16 Mag 2013
23
0
0
ciao cmq ho risolto il problema dello switch e funziona perfettamente
l'unica cosa e che essendo tre tabelle diverse hanno anche campi diversi quindi io vorrei far uscire per ogni diversa tabella i propri rispettivi campi...come posso fare?
 
Discussioni simili
Autore Titolo Forum Risposte Data
G ricerca dinamica con piu campi PHP 7
G Menù a tendina di ricerca con query PHP 1
R Problema query con ricerca id numerico PHP 2
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
F Visualizzazione motore di ricerca SEO e Posizionamento 2
B Stringa sql per ricerca su più campi Database 1
F Funzione Glob - ricerca file contenente una parola PHP 1
P Ricerca campo data PHP 1
L titolo del sito nella pagina di ricerca di google SEO e Posizionamento 2
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
L Ricerca valore mysql e incremento PHP 73
E Problema motore di ricerca FULL_TEXT PHP 0
motleyrulez Ricerca filtro con Ajax PHP 1
Shyson [CSS] Posizionare casella di ricerca HTML e CSS 3
P Query di ricerca profonda MySQL 0
T Query per ricerca ritardo evento MS Access 7
B Campo ricerca domini HTML e CSS 4
V Ricerca volontari questionario tesi - Ricambio Offerte e Richieste di Lavoro e/o Collaborazione 0
L Ricerca sviluppatori PHP tempo indeterminato Milano Offerte e Richieste di Lavoro e/o Collaborazione 0
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
L [PHP] Ricerca su search bar esterna PHP 1
D Ente di Formazione accreditato in Regione Lazio ricerca Front End Developer Offerte e Richieste di Lavoro e/o Collaborazione 3
N [WordPress] Ricerca tema WordPress 6
Alex_70 [PHP] Ricerca con risultati cliccabili PHP 21
Federico.Marcelo Alla ricerca di scrittori post guest Offerte e Richieste di Lavoro e/o Collaborazione 0
ANDREA20 [PHP] motore di ricerca nel sito PHP 11
O [PHP] Ricerca record tramite post PHP 7
GraceHawk [MS Access] Findfirst per ricerca record MS Access 1
T [PHP] Ricerca nel database PHP 2
A [Javascript] Mostrare un marker se è vicino al risultato di ricerca con google maps Javascript 3
V Semplice barra di ricerca con filtro categorie prodotti E-Commerce 0
A Ricerca con collegamento in altro sito web Discussioni Varie 0
C [PHP] Ricerca multipla, evitare if PHP 4
F [WordPress] Plugin Ricerca per e-commerce Woocommerce WordPress 1
M [OFFRO][RETRIBUITO] Milano IT Consulting SRL - Ricerca 1 Consulente PHP Offerte e Richieste di Lavoro e/o Collaborazione 0
D [ASP] Motore di ricerca interno su 2 tabelle Classic ASP 3
A [MySQL] Ricerca in PMA MySQL 0
andreas88 Da .htm a .php, perdo le mie posizioni su Google ricerca? SEO e Posizionamento 9
P Google risultati di ricerca inappropriati SEO e Posizionamento 1
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
G [PHP] FORM DI RICERCA ESTESA PHP 2
borgo italia [PHP] ricerca caratteri accentati PHP 4
P [PHP] ricerca dati PHP 1
Emix [PHP][MYSQL] Ricerca avanzata tramite form PHP 6
R [MySQL] ricerca per data... MySQL 10
T4MAR4 [PHP] Problema ricerca con apostrofo PHP 2
R [PHP] Prendere dati da moduli di ricerca esterni PHP 4
T4MAR4 [PHP] piu select in ricerca PHP 1
A Ricerca interno RichTexbox Vb6 Presentati al Forum 1
T4MAR4 [PHP] Inserire piu campi di ricerca PHP 2

Discussioni simili