PDA

Visualizza versione completa : URGENTE ! Database e ricerche mirate


MasterJumper
23-03-2009, 03.06.43
Avrei la necessità di fare delle ricerche mirate nel database ma non riesco nell'impresa .

In pratica vorrei che mi venisse visualizzato solo il testo dell'articolo il cui titolo sia uguale alla frase che è stata digitata nel Form .
Invece mi vengono visualizzati tutti i testi abbinati ai titoli che contengono uno o più termini di ricerca .

Faccio un esempio :

La tabella news contiene i seguenti campi :

id - titolo - data - testo - autore


titolo
L'arte in Australia

testo
L'Australia è un paese .... ecc ....

titolo
Un viaggio in Australia

testo
John era appena partito .. ecc ....


Bene - adesso se digito L'arte in Australia mi viene visualizzato il testo L'Australia è un paese .... ecc ....

Se però digito nel Form solo Australia ricevo come risultato :

L'Australia è un paese .... ecc ....
John era appena partito .. ecc ....

Invece vorrei che digitando solo Australia mi venisse visualizzato il messaggio :
Si prega di digitare il titolo esatto dell'articolo ma non ho capito come impostare e dove mettere or die


E digitando Un viaggio in Australia mi venisse visualizzato solo il testo di quest'articolo e non anche quello di altri


Ho provato in molti modi ma niente da fare !
Ad esempio così mi visualizza tutti gli articoli contenuti nel database :


$query = "SELECT id, testo, data FROM news WHERE titolo=".$parola."" . $query;


Quest'altra modifica invece mi cerca il testo uguale alla digitazione :

$query .= "titolo = '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR ";


Questo e il sorgente

[ codice php ]

<?php
$chiave=$_REQUEST['chiave'];
top();
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$keys = explode (",", $chiave);
$query = "";
reset ($keys);
while (list(,$parola) = each ($keys))
{ $parola = trim($parola);
if ($parola != "")
$query .= "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR ";
}
$query .= " 0";
$query = "SELECT id, testo, data FROM news WHERE " . $query;
$result = mysql_query($query, $db);
if ($query == FALSE)
die ("Questo die e sbagliato ma se lo tolgo non va");
while ($row = mysql_fetch_array($result))
{
echo "<a> .date("",$row['data']) . "&nbsp {$row['testo']}</a><br>";
}
mysql_close($db);
foot();
?>

[ / codice php ]


Inoltre vorrei sapere se e possibile dare un effetto di testo al risultato che viene visualizzato


Ringrazio in anticipo per un eventuale risposta che possa essermi di aiuto per risolvere
il problema .

LoryOne
23-03-2009, 10.25.07
Beh, aggiungi tre condizioni da specificare es:
Inizia con -> Australia%
Contiene -> %Australia%
Finisce con ->%Australia
E' uguale a -> Australia

Crea la query parametrica.
La query è una stringa di caratteri che varia nella sintassi in base alle condizioni specificate dall'utente...

MasterJumper
24-03-2009, 02.19.56
Nel codice non posso inserire Australia ecc ... visto che le frasi che verranno inserite nel Form di ricerca sono molto diverse tra loro ......

Quello che ti è venuto in mente potresti spiegarmelo con un esempio da applicare al sorgente che ho postato ?

Grazie !

MasterJumper
24-03-2009, 03.56.08
Il problema della ricerca mirata è stato risolto !!

Un amico mi ha indicato la soluzione bastava sostituire i LIKE con =

Adesso rimane il problema secondario , ossia quello relativo all'effetto di testo ad esempio stile macchina da scrivere ecc.... da mescolare al php

Gli effetti che ho a disposizione sono in javascript .

Saluti