Problema ricerca con piu campi in php

krat0s89

Nuovo Utente
2 Giu 2012
3
0
0
Salve! premetto che sono nuovo al linguaggio php :D
Ho realizzato un pannello di amministrazione in php che carica dei campi (in qsto caso veicoli) dal db e li mette in una pagina dove e possibile controllarli eliminarli modificarli ecc.. ora però mi sono accorto di un piccolo (non tanto-.-) problema che riguarda la ricerca avanzata, che mi permette di filtrare i veicoli a seconda di quello che inserisco nei campi di ricerca. I campi di ricerca sono i seguenti Tipo: che puo essere Tutti, Nuovo o usato, Categorie: Tutti, autocarri, auto, ecc.. e un campo di testo dove posso inserire la marca. Il problema è che qndo seleziono nel campo tipo: Tutti , categoria: autocarri (o altre) e inserisco la marca mi dà un errore su due variabile $x, $y (lui dice non sono definite-.-) che io uso come appoggio e di conseguenza non mi completa correttamente la query creandomi una query del tipo: SELECT * FROM tabella WHERE categoria='autocarri' marca='Volvo' order by id desc limit 0, 12 mancando un AND e causandomi errori a nn finire xd

PHP:
$query2 = "SELECT COUNT(id) AS totale FROM veicoli ";
            $query = "SELECT * FROM veicoli ";
            if(isset($_POST['cerca_tipo']) or isset($_POST['cerca_categoria']) or isset($_POST['marca'])){
                $x;
                $y;
                if($_POST['cerca_tipo']=="tutti" && $_POST['cerca_categoria']=="tutti" && $_POST['cerca']==NULL){
                    } else {
                $query.="WHERE";
                $query2.="WHERE";
                    }
            if($_POST['cerca_tipo']!="tutti"){
                $query.=" tipo ='".$_POST['cerca_tipo']."' ";
                $query2.=" tipo ='".$_POST['cerca_tipo']."' ";
                $x="1";
                }
            if($_POST['cerca_categoria']!="tutti"){
                if($x=="1"){
                    $query.=" AND ";
                    $query2.=" AND ";
                    $y="1";
                    }
                $query.=" categoria='".$_POST['cerca_categoria']."'";
                $query2.=" categoria='".$_POST['cerca_categoria']."'";
                }
            if($_POST['cerca']!=NULL){
                if($y=="1"){
                    $query.=" AND ";
                    $query2.=" AND ";
                    }
                $query.=" marca='".$_POST['cerca']."'";
                $query2.=" marca='".$_POST['cerca']."'";
                }
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
prova in questa maniera
PHP:
<?php
/*scrvere la select (es)
SELECT * FROM tabella WHERE 1=1
o
SELECT * FROM tabella
è identico in quanto uno sarà sempre uguale a uno
però poi è più comodo per aggiungere le altre condizioni
*/
$query2 = "SELECT COUNT(id) AS totale FROM veicoli WHERE 1=1 ";
$query = "SELECT * FROM veicoli WHERE 1=1 ";
if(isset($_POST['cerca_tipo']) or isset($_POST['cerca_categoria']) or isset($_POST['marca'])){
	if($_POST['cerca_tipo']!="tutti"){
		$query.="AND tipo ='".$_POST['cerca_tipo']."' ";
		$query2.="AND tipo ='".$_POST['cerca_tipo']."' ";
	}
	if($_POST['cerca_categoria']!="tutti"){
		$query.="AND categoria='".$_POST['cerca_categoria']."' ";
		$query2.="AND categoria='".$_POST['cerca_categoria']."' ";
	}
	if($_POST['cerca']!=""){//perchè cerca e non marca?
		$query.="AND marca='".$_POST['cerca']."' ";//perchè cerca e non marca?
		$query2.="AND marca='".$_POST['cerca']."' ";
	}
	$query.="ORDER BY id DESC LIMIT 0, 12";
	$query2.="ORDER BY id DESC LIMIT 0, 12";
}
//qui prima dell' mysql_query verifichi se le due querry vengono scritte come deve
var_dump($query);//poi quando tutto funzia li togli
var_dump($query2);
?>

p.s.
quarda che però inserire i vari $_POST senza farne un controllo preventivo puoi avere grane se ualche maleintenzionato inserisce qualcosa che non dovrebbe

dimenticavo:
guarda che (salvo abbia capito male) non dovrebbe servirti la prima query
per sapere quanti veicoli hai basta

PHP:
$numero_veicoli=mysql_num_rows($ris_della_query2);// o come ha chiamato il risultato di mysql_query
 

krat0s89

Nuovo Utente
2 Giu 2012
3
0
0
weee borgo grandissimo !! grazie mille!! mi sono informato riguardo la protezione dei dati :mavieni: e sul mysql_real_escape_string() volevo chiederti posso fare una cosa del genere o c'e sempre il pericolo di un injection:
PHP:
$query = "select * from tabella where nick='".mysql_real_escape_string($_POST['nick'])."' and password='".mysql_real_escape_string($_POST['password'])."'";
:ilpirata:
ancora grazie!! :cool:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
la verifica dei dati provenienti da un form oserei dire che è una cosa indispensabile sia che li utilizzi per inviare una email e, soprattutto, se devono servirti per un database.
in particolare si deve controllare che
1. siano inviati dei dati (soprattutto se questi sono obbligatori)
2. che i dati inviati siano corretti e non contengano qualcosa di nocivo
3. le password da inserire nel db devono essere inserite codificate o con md5 o, meglio, con sah1
ti faccio un paio di esempi:
PHP:
<?php
$nome=$_POST['nome'];//scrivo il post solo qui negli altri uso solo il nome della variabile
$nome=addslashes(trim($nome));//con trim evito che uno inputi solo spazi can add aggiungo \ es all'apostrofo
if(preg_match('/^[a-zA-Z]/', $nome)){//verifico che siano solo caratteri alfabetici minuscoli o maiuscoli
	echo "corretto"; //fai quello che devi fare
}else{
	echo "NON corretto";//qui es. rimandi al form
}
//quello sopra si può usare per tutte le varibili alfabetiche o alfanumeriche eventaulmente modificando il pattern di controllo
$email=addslashes(trim($email));
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
	echo "indirizzo corretto";
}else{
	echo "indirizzo NON corretto";
}

if(preg_match('/^[a-zA-Z0-9]/', $password)){//verifico che siano solo caratteri alfanumerici minuscoli o maiuscoli
	echo "corretta"; //corretta quindi codifico
	$password=sha1($password); e poi la salvo nel db
}else{
	echo "NON corretta";//qui es. rimandi al form
}
?>
guarda però che sono solo esempi, il modo di procedere può essere diverso, ma il concetto della verifica/controllo rimane
spero di essere stato chiaro, eventualmente posta, ricordati però "un problema una discussione" per facilitare eventuali ricerche ad altri utenti interessati
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Problema query con ricerca id numerico PHP 2
T4MAR4 [PHP] Problema ricerca con apostrofo PHP 2
M Problema con ricerca full-text PHP 1
G Php problema con risultato di ricerca PHP 2
A problema con l'inserimento di valori in una tabella dopo una ricerca da form Classic ASP 1
O Problema APICI con la ricerca PHP 2
C problema con Referer e Motori di ricerca SEO e Posizionamento 1
E Problema motore di ricerca FULL_TEXT PHP 0
A [PHP] Problema paginazione motore di ricerca PHP 48
P Problema non mi esegue la ricerca dati PHP 23
elpirata Query di ricerca problema campo data italiano PHP 2
M Problema checkbox e ricerca avanzata PHP 8
L Problema META NAME description [MOTORE RICERCA] HTML e CSS 0
Sargon Motore di ricerca, nuovo problema PHP 3
G Problema nella pagine dei risultati ricerca Wordpress WordPress 2
S Problema ricerca immagini PHP 2
R Problema nel $_POST di dati per ricerca su DB PHP 12
Emix Problema ricerca in database PHP 20
G Problema ricerca codice PHP 2
L problema pagina di ricerca PHP 2
M Problema motore di ricerca Javascript 1
M problema ricerca su più tabelle. PHP 1
S Problema motore di ricerca in Asp Classic ASP 2
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2

Discussioni simili