• User

    URGENTE ! Database e ricerche mirate

    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
    1 L'arte in Australia

    testo

    L'Australia è un paese ecc ....

    titolo
    2 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 .


  • User Attivo

    Ciao,

    per ottenere il risultato che desideri è sufficiente modificare la query togliendo i LIKE e mettendo =.
    Ad esempio:

    
    titolo LIKE '%$parola%'
    
    

    diventerà semplicemente

    
    titolo = '$parola'
    
    

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

    Questa richiesta invece non è molto chiara. Cosa intendi per "effetto di testo"?

    Alessandro


  • User

    Caspita Alessandro soluzione giusta al primo colpo !!!!!

    Adesso si che funziona ... e dire che ho provato e riprovato ma non riuscivo a venirne fuori , davvero non so come ringraziarti !!

    Permettimi di esprimere il mio stato emotivo

                  :yuppi: :yuppi: :yuppi: :yuppi: :yuppi: :yuppi: :yuppi: :yuppi: :yuppi: :yuppi:
    

    ( Questa richiesta invece non è molto chiara. Cosa intendi per "effetto di testo"? )

    Non mi riferisco al bold , corsivo ecc ...

    Stavo pensando a un bell'effetto tipo macchina da scrivere , ecc ....
    ne ho diversi a disposizione ma sono in javascript e non non so come fare per mescolarli al php ....


  • User

    Un'altra cosa se la ricerca non produce nessun risultato vorrei visualizzare un messaggio , ma questo

    or die ("Nessun articolo corrisponde .... ecc ");

    Ho provato in vari modi ma non vuole saperne di funzionare ,
    tu che ne pensi ?