Newsgroup: it.comp.www.php
Titolo: Ricerche Funzionanti a metà

Salve a tutti,
ho da poco iniziato ad interessarmi al php.
Grazie anche a qualche tuttorial in rete ho messo su un piccolo form e 
relativo script per la ricerca di determinati valori all'interno di una 
tabella di un db tutto su MySQL con PhP 5.0.3 .
In particolare ho creato un Db chiamato "elenco" a cui ho aggiunto una 
tabella chiamata "inserimenti".
la Tabella inserimenti è formata da due Campi: "id" e "nome".
lo script per la visualizzazione dei risultati è  così composto:
<?Php
mysql_connect("host", "user", "psw");
$connect = mysql_connect("host", "user", "psw");
if ($connect == FALSE)
die ("Errore nella connessione.");
mysql_select_db("elenco")
or die ("Errore nella selezione del database.");
$cerca = $_POST['cerca'];
$keys = explode (" ", $cerca);
$query = "";
reset ($keys);
while (list(,$parola) = each ($keys))
{ $parola = trim($parola);
if ($parola != "")
$query .= "id LIKE '%$parola%' OR nome LIKE '%$parola%' OR nome LIKE 
'%$parola%' OR ";
}
$query .= "0";
$query = "SELECT id , nome FROM nominativi WHERE " . $query;
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{ echo "$row[id] $row[nome]<BR><BR>"; }
mysql_close($connect);
?>
Il problema sta nel fatto che funziona Perfettamente se inserisco UNA 
Parola. Inserendo più parole lo script mi rende i Nomi e relativi Id che 
Contengono ALMENO UNA delle due Parole.
IO invece vorrei che mi rendesse come risultato SOLO i nomi e relativi 
ID che contengono Tutte e due le eventuali o più parole inserite.
Ho provato con And al posto di OR, ma essendo poco pratico ancora di Php 
l'unico risultato ottenuto è una pagina vuota.
Ad essere sincero mi sono aiutato sulla parte della creazione della 
query, e questo mi sta penalizzando in quanto non capendola appieno 
limita il mio campo d'azione.
Qualcuno saprebbe darmi una mano per apportare questo piccolo 
cambiamento allo script?
Vi ringrazio Tutti in Anticipo.

Prova cosi'
$query .= "(id LIKE '%$parola%' OR nome LIKE '%$parola%' OR nome LIKE
'%$parola%') AND ";
...
$query .= "0";
Poi sositutirei lo "0" finale della query (MS SQL genera errore con "OR 0" 
alla fine) con id=id p.e.
Cosi' troverebbe tutti i record che contengono le parole, non 
necessariamente nello stesso campo.
Sei vuoi trovare i record che abbiano le tutte le parole in almeno un campo 
prova con:
$querya .= "id LIKE '%$parola%' AND";
$queryb .= "nome LIKE '%$parola%' AND";
...
$query = "($querya id=id) OR ($queryb id=id)";
Dovrebbe funzionare (almeno in MSSQL.....)
-- 
.o0-- I.d.N. alias JYD --0o.
Please Cut "-some trees-" for reply 

Inanzitutto Grazie per la risposta.
il problema sta nel fatto se adesso cerco ad esempio " 2 pi "
mi visualizza tutti i campi che contengono il numero "2" e tutti i campi 
che contengono la parola "pi" .
Avendo adesempio nel Db;
2 pippo
12 carlo
20 pinta
22 sempronio
24 pischello
27 giovanni
Lo script me li visualizzerebbe tutti, mentre vorrei che mi visualizasse 
solo quelli contenenti " 2 pi " e cioè SOLO:
2 pippo
20 pinta
24 pischello
Sostanzialmente lo script ricerca nel db quei campi che contengono UNA o 
L'ALTRA parola, visualizzandoli tutti.
Vorrei invece che mi visualizzasse solo i campi dove sono contenute 
ENTRAMBE le parole.
Questo mi è necessario perchè espandendo il db inserendo oltre al Nome 
anche il cognome, vorrei poter fare ricerche inserendo Nome e cognome,
trovando SOLAMENTE gli utenti che Hanno il nome e cognome cercato, e non 
   che abbiano almeno Il Nome O Il cognome carcato.
Spero qualcuno possa aiutarmi nella modifica e comprensione di questo 
problema.
Grazie Anticipatamente
Iuza Delle Nuvole ha scritto:


 ENTRAMBE le parole.
$querya .= "id LIKE '%$parola%' AND";
$queryb .= "nome LIKE '%$parola%' AND";
...
$query = "($querya id=id) OR ($queryb id=id)";
Hai provato con questo sopra? (*tutte* le devono essere presenti in un campo 
oppure *tutte* nell'altro)

Nulla da fare, mi da errore.
Iuza Delle Nuvole ha scritto:
