filtro tabella between and / or

Ivano Cardassi

Nuovo Utente
23 Nov 2013
14
0
0
Magione (Italia), Italy
Buongiorno, ho questo piccolissimo problema...
ho una datagrid con dei filtri impostati.

non riesco a far funzionare questa stringa insieme... perchè?

PHP:
$where = ("Vendita between '$Vendita%' and '$Vendita2%'") or ("Km between '$Km%' and '$Km2%'");

se però uso solo Vendita o solo km la tabella funziona perfettamente...

poi, visto che ci siamo ma non di fondamentale importanza, non mi ordina alfabeticamente la datagrid...

PHP:
$page = isset($_POST['page']) ? intval($_POST['page']) : 1;
$rows = isset($_POST['rows']) ? intval($_POST['rows']) : 50;
$sort = isset($_POST['sort']) ? strval($_POST['sort']) : 'Marca';
	$order = isset($_POST['order']) ? strval($_POST['order']) : 'asc';
$Vendita = isset($_POST['Vendita']) ? mysql_real_escape_string($_POST['Vendita']) : '';
$Vendita2 = isset($_POST['Vendita2']) ? mysql_real_escape_string($_POST['Vendita2']) : '99999';
$Km = isset($_POST['Km']) ? mysql_real_escape_string($_POST['Km']) : '';
$Km2 = isset($_POST['Km2']) ? mysql_real_escape_string($_POST['Km2']) : '999999';
	
$offset = ($page-1)*$rows;
	
$result = array();
 $sort = isset($_POST['sort']) ? strval($_POST['sort']) : 'Marca';
	$order = isset($_POST['order']) ? strval($_POST['order']) : 'asc';

 $where = ("Vendita between '$Vendita%' and '$Vendita2%'") or ("Km between '$Km%' and '$Km2%'");
  
 
$rs = mysql_query("select count(*) from usato where " . $where);
$row = mysql_fetch_row($rs);
$result["total"] = $row[0];

$rs = mysql_query("select * from usato where " . $where . " limit $offset,$rows");
	
$items = array();
while($row = mysql_fetch_object($rs)){
		array_push($items, $row);
	}
	$result["rows"] = $items;

	echo json_encode($result);

grazie
 
Ultima modifica:

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
L'istruzione OR che hai utilizzato è di PHP e quello che ti viene inserito nella variabile where è un booleano true, di conseguenza ti ritrovi che la tua query viene interpretata con "WHERE 1" come clausola di ricerca.

Devi correggere la stringa di modo che l'OR faccia parte delle istruzioni SQL:
PHP:
$where = "(Vendita between '{$Vendita}%' and '{$Vendita2}%') OR (Km between '{$Km}%' and '{$Km2}%')";

ps: le parentesi graffe che ho aggiunto non vengono interpretate ma sono utili per far capire a php che la variabile all'interno della stringa è quella delimitata.
 

Ivano Cardassi

Nuovo Utente
23 Nov 2013
14
0
0
Magione (Italia), Italy
L'istruzione OR che hai utilizzato è di PHP e quello che ti viene inserito nella variabile where è un booleano true, di conseguenza ti ritrovi che la tua query viene interpretata con "WHERE 1" come clausola di ricerca.

Devi correggere la stringa di modo che l'OR faccia parte delle istruzioni SQL:
PHP:
$where = "(Vendita between '{$Vendita}%' and '{$Vendita2}%') OR (Km between '{$Km}%' and '{$Km2}%')";

ps: le parentesi graffe che ho aggiunto non vengono interpretate ma sono utili per far capire a php che la variabile all'interno della stringa è quella delimitata.

Grazie del consiglio, ma adesso non funzionano nessuno dei filtri...
hai anche una soluzione per l'ordinamento?
grazie
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Quei simboli jolly ( % ) sono necessari per la tua query ? Perché il mio sospetto verte su quelli.
Quanto all'ordinamento ti basta usare la clausola ORDER BY nell'istruzione sql, nel tuo codice vedo che hai già una variabile impostata per i tipi di ordinamento da associare.
 

Ivano Cardassi

Nuovo Utente
23 Nov 2013
14
0
0
Magione (Italia), Italy
Quei simboli jolly ( % ) sono necessari per la tua query ? Perché il mio sospetto verte su quelli.
Quanto all'ordinamento ti basta usare la clausola ORDER BY nell'istruzione sql, nel tuo codice vedo che hai già una variabile impostata per i tipi di ordinamento da associare.

no, non sono necessari, tanto i campi sono valori numerici esatti...
ho provato a modificarli, a togliere le graffe, ma non mi filtra i dati. se utilizzo solo un filtro si, 2 insieme non funzionano nessuno...

per l'ordinamento l'ho messo order by, ma se tolgo i filtri di cui parliamo, me li ordina, se invece scrivo i codici dei filtri, me li ordina solo per id e non per marca.
 

Ivano Cardassi

Nuovo Utente
23 Nov 2013
14
0
0
Magione (Italia), Italy
PHP:
$where = "(Vendita between '{$Vendita}' and '{$Vendita2}')";
così funziona...

PHP:
$where = "(Vendita between '{$Vendita}%' and '{$Vendita2}%') OR (Km between '{$Km}%' and '{$Km2}%')";
così no.
 
Ultima modifica:

Ivano Cardassi

Nuovo Utente
23 Nov 2013
14
0
0
Magione (Italia), Italy
PHP:
$where = "(Vendita between '{$Vendita}%' and '{$Vendita2}%') AND (Km between '{$Km}%' and '{$Km2}%')";

ho modificato or in and e ora funziona bene, come volevo io...
però è strano, con and dovrebbe unire le funzioni cioè se vendita=x e km=x allora mostra,
invece funziona al contrario, o vendita o km, insieme non funzionano, ma va bene così...

ora devo risolvere l'ordinamento, che non riesco a capire come mai non lo fa....
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
no, non sono necessari, tanto i campi sono valori numerici esatti...
Allora non ti serve continuare a mantenerli durante le prove: eliminali.
PHP:
$where = "(Vendita between '{$Vendita}' and '{$Vendita2}') OR (Km between '{$Km}' and '{$Km2}')";

Quanto all'ordinamento devi aggiungere l'istruzione nella query, altrimenti è normale che non funzioni:
PHP:
$rs = mysql_query("select * from usato where {$where} order by {$sort} {$order} limit {$offset},{$rows}");
 
Discussioni simili
Autore Titolo Forum Risposte Data
A filtro su tabella jQuery 3
W Problemi con filtro tabella HTML Javascript 0
N Access: Filtro su maschera MS Access 0
A Problema filtro fluidifica Photoshop Photoshop 1
Q Filtro effetti di luce Photoshop 1
R Filtro multiplo di selezione Sql PHP 2
motleyrulez Ricerca filtro con Ajax PHP 1
Shyson Spostare filtro php di WordPress WordPress 0
felino Filtro Aqua FP3 9" 3/4: quale cartuccia scegliere? Discussioni Varie 0
J [MS Access] Filtro su combo in sottomaschera MS Access 11
C filtro rendering effetti di luce photoshop Photoshop 0
H [Photoshop] Filtro Nik Dfine non funziona. Photoshop 1
V Semplice barra di ricerca con filtro categorie prodotti E-Commerce 0
M [PHP] Filtro da TXT con collegamento ipertestuale PHP 13
M [PHP] o [APACHE] - Filtro geo per accesso sito PHP 6
S [PHP] filtro PHP 25
R Filtro login tramite mac-address su apache2 SSL Apache 1
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
myblacksloth Filtro di ricerca Java Java 0
A [Photoshop] Problema filtro fluidifica Photoshop 1
webmachine [JS] Filtro Prodotti jQuery 5
I [Photoshop] Che filtro è questo? Photoshop 1
P Filtro selettore e variabile jQuery 2
M [PHP - MYSQL] Mantenere filtro query in tabelle paginate PHP 3
P Filtro dipinto a olio Photoshop CC Photoshop 1
B Filtro per advanced custom fields WordPress 0
G Con Photoshop per applicare la Nitidezza (Filtro>Nitidezza) Photoshop 1
G Filtro per record sottomaschera MS Access 8
J Creare un filtro Javascript 24
I Datagrid Jquery PHP, mi servirebbero alcune soluzioni... Insrimento immagine e filtro PHP 2
D Filtro su una datagridview ASP.NET 1
I Filtro maschera tramite combobox Database 0
C Creare un filtro in base alle checkbox selezionate Javascript 15
Sevenjeak JFileChooser: inserire in nome file l'estensione del filtro Java 5
asevenx applicare filtro anti spam PHP 6
davidec Disabilitare il filtro XSS (cross site scripting) via PHP PHP 3
Z Filtro su pagine protette Classic ASP 6
G filtro in php con Drupal CMS (Content Management System) 3
F Filtro Antispam Hotmail Sicurezza e Virus 6
G Come rimettere filtro mostra in Thunderbird 2 Windows e Software 0
D filtro sql su campo data PHP 1
I filtro in asp su una query di Access Classic ASP 1
S Filtro alpha per lo sfondo di un box HTML e CSS 3
A filtro data nulla Database 0
W Filtro dati PHP 1
I filtro in query access MS Access 2
A Filtro body per motore di ricerca PHP 0
S filtro Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
S da casella di testo a campo tabella Database 0

Discussioni simili