pagina di ricerca complessa

fabio_198

Utente Attivo
8 Nov 2012
53
0
0
Salve ragazzi!

avrei bisogno di un aiuto per far girare questa pagina di ricerca, praticamente mi serve per un sito di annunci...
prendendo come esempio ebay annunci...quando si va a cercare qualcosa il form deve elaborare solo gli input che io specifico...ad esempio se cerco "iphone 5" e nella regione "lazio" lui mi deve prendere tutti gli annunci a riguardo, se seleziono anche la categoria per esempio "elettronica" lui mi deve stringere il campo di ricerca.

solo che non riesco a fargli capire che deve cercare e analizzare solo gli input che io specifico

ecco il mio codice

PHP:
$reg=$_GET['regione'];
  if ($reg=='') {
    $reg='sicilia';
  }
$categ=$_GET['categoria'];
  if ($categ=='') {
    $categ='tech';
  }

 $q_annunci=mysql_query("SELECT * FROM annunci WHERE regione='$reg' AND categoria='$categ'");

così praticamente funziona ma solo perchè ho impostato che se non specifico i campi regione e categoria me li mette di default rispettivamente con "sicilia" e "tech"

invece io vorrei fare in modo che se non li specifico lui non li deve considerare nella query, e deve cercare solo ad esempio la categoria.

dovrei intervenire nella select? in che modo :confused::confused:
 
forse credo di aver risolto con "like"

PHP:
$reg=$_GET['regione'];
  if ($reg=='') {
    $reg='';
  }
$categ=$_GET['categoria'];
  if ($categ=='') {
    $categ='';
  }

$q_annunci=mysql_query("SELECT * FROM annunci WHERE regione like '%$reg%' AND categoria like '%$categ%'");

chi mi sa dire se ho fatto bene?

poi ancora una cosa...il link giusto è :

PHP:
mostra_annunci.php?regione=&categoria=

anche se non specifico ne regione e ne categoria è ok nessun errore

ma se digito:

PHP:
mostra_annunci.php
oppure
PHP:
mostra_annunci.php?regione=
cioè con una sola variabile
mi da questo errore
Notice: Undefined index: categoria in..

un modo per risolvere?
 
ciao
modifica così
PHP:
<?php
//....
$reg="";
$categ="";
if(isset($_GET['regione'])){
	$reg=" AND regione LIKE '%".$_GET['regione']."%'";
}
if(isset($_GET['categoria'])){
	$categ=" AND categoria LIKE '%".$_GET['categoria']."%'";
}
$q_annunci=mysql_query("SELECT * FROM annunci WHERE 1=1 $reg $categ");  

//....
?>
comunque perchè usi il get? il get è pericoloso per accedere ad un db, come minimo devi mettere dei controlli
poi abbandona le vecchie istruzioni mysql e passa a mysqli o alle pdo
 
grazie Borgo funziona!

comunque non so neanche da dove iniziarci a usare il mysqli...questa select come la dovrei impostare con mysqli?
 
In aggiunta a questo sopra ho aggiunto il campo oggetto (es. se voglio cercare un "pentium 4")


if(isset($_GET['oggetto'])){
$oggetto=" AND titolo LIKE '%".$_GET['oggetto']."%' OR testo LIKE '%".$_GET['oggetto']."%'";
}

funziona con una parola e più parole che esistono in un solo campo, ma se scrivo "pentium 4" e:
"pentium" si trova nel titolo dell'annuncio
mentre
"4" si trova nella descrizione (che io ho chiamato "testo")

praticamente non mi trova nulla.
come altra cosa ho visto che, se mettiamo il caso che chi ha inserito l'annuncio l'ha fatto con titolo "vendo......pentium4..." cioè tutto unito
l'acquirente che cerca lo andrà a cercare come "pentium 4" cioè staccato

come faccio a risolvere questo "concatenamento" di parole?
 

Discussioni simili