Visualizzazione risultati 1 fino 6 di 6

Discussione: aiuto query ed evidenziare testo

  1. #1
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito aiuto query ed evidenziare testo

    Ciao a tutti

    Ho due problemi e altrettante domande da sottoporvi.

    allora

    ho questa tabella:


    Codice:
    #
    # Table structure for table 'Contenuti'
    #
    DROP TABLE IF EXISTS Contenuti;
    CREATE TABLE Contenuti (
       ID int(5) NOT NULL auto_increment,
       Titolo_Argomento varchar(30) NOT NULL,
       Titolo_Contenuto varchar(30) NOT NULL,   
       Contenuto text NOT NULL,   
       PRIMARY KEY (ID)
    );
    In pratica inserisco dei testi che hanno un titolo
    e che sono suddividi per argomento (Titolo_Argomento)
    In questa tabella faccio delle ricerche inserendo in un form
    html l'argomento entro il quale ricercare e
    selezionando i record che presentano una determinata parola chiave.

    il codice php invece e questo:

    Codice:
     $risultato1 = "SELECT * FROM Contenuti where Titolo_Argomento= '".$_REQUEST['argom']."'
      AND contenuto LIKE '%".$_REQUEST['chiave']."%' ORDER BY Titolo_contenuto";

    Primo problema:

    il codice sopra seleziona i record di un determinato argomento
    che abbiano nel testo (campo Contenuto) una determinata
    parola chiave. Adesso vorrei fare in modo che la parola chiave
    sia ricercata oltre nel testo anche nel campo Titolo_Contenuto,
    infatti la parola che ricerco potrebbe essere in alcuni
    casi significativa e riassuntiva di tutto il testo ma
    non presente nello stesso. (non so se sono stato chiaro).
    Avevo provato più o meno (dopo il $_REQUEST['argom'])
    con un AND (....OR...) in varie salse ma non funziona.

    Come devo impostare correttamente la query?


    Secondo Problema:

    La query poi mi restituisce dei link per visualizzare
    i record che rientrano nei parametri della ricerca.

    Ogni record( titolo e corpo del testo veramente)
    è richiamato in un'altra pagina così (ometto il superfluo)

    Codice:
    ...
    
    $query = mysql_query ($visualizza)
          or die ("Non riesco ad eseguire la richiesta $visualizza");
    $testo = mysql_result($query,0,"Contenuto");
    $testo = nl2br($testo); // per visualizzare le righe vuote
     echo "<table><tr><td><b>Titolo contenuto: </b></td> <td align= 'right'><font color=\"#FF0000\"><b>".mysql_result($query,0,"Titolo_Contenuto")."</b></font></td></tr>";
          echo "<tr><td><b>Contenuto: </b></td></tr></table><br>";
          echo $testo;
    Come si fa per evidenziare nel testo la parola chiave ricercata
    (come succede ad esempio quando si effettua una ricerca di una parola in un file PDF
    oppure in uno stesso forum phpbb2 con la nota pagina di ricerca)?

    Grazie anticipatamenente e ciao

  2. #2
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    Per la 1° domanda, devi fare un'altra query

    per la 2° basta fare un'

    $testo = eregi_replace($_GET[stringacercata], '<span class="evidenzia">'.$_GET[stringacercata],$testo);

    $testo è il testo che stampi, quindi cambialo in caso non corrisponda al nome

    fai un file css dove metti l'evidenziazione

  3. #3
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Grazie per la risposta.

    Con i file css non ho mai avuto a che farci,
    potresti suggerirmene uno?

    Poi non avevo considerato un'altra cosa.
    Come ho impostato lo script la parola chiave
    dovrei passarla (insieme all'ID del record)
    alla pagina visualizza.php così più o meno:

    Codice:
    $query = mysql_query ($risultato1)
    
     or die ("Non riesco ad eseguire la richiesta $risultato1");
     $totr=mysql_num_rows($query);
     echo "<b>Numero risultati trovati:<font color=\"#FF0000\"> ".$totr."</font> nell'argomento <font color=\"#FF0000\">".$_REQUEST['argom']."</font></b><br><br>";
    
     echo "<table border=0><tr><td width='300' align='center'><b>TITOLO CONTENUTO</b></td>
      <td width='300'align='center'><b>LEGGI</b></td></tr></table><br>";
    for ($i=0;$i<$totr;$i++){
      $j=$i+1;
      echo "<table border=0><tr><td width='370'>".$j.") ".mysql_result($query,$i,"Titolo_Contenuto")." </td>";
       echo "<td width='100' align='right'><a href=\"visualizza.php?contenuto=".mysql_result($query,$i,"ID")"&key=$parola";
       echo "\">Visualizza </a></td></tr></table>";
      }
    la penultima riga appunto dovrebbe passare la variabile contenuto con l'ID
    e la parola chiave da evidenziare poi nella pagina visualizza ($key),
    ma la sintassi sembra sbagliata in quanto ricevo un messaggio di errore in
    merito alla penultima riga di cui sopra (conosco poco il php)

    solo così invece funziona (ma non passo la parola chiave da
    evidenziare ovviamente):

    Codice:
    ......
    echo "<td width='100' align='right'><a href=\"visualizza.php?contenuto=".mysql_result($query,$i,"ID");
       echo "\">Visualizza </a></td></tr></table>";
    grazie ancora

  4. #4
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    echo "<td width='100' align='right'><a href=\"visualizza.php?contenuto=".mysql_result($qu ery,$i,"ID")."&key=$parola";

    Metti così. avevi saltato un punto

  5. #5
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Funziona Grazie!

    Un'ultima cosa, per piacere.

    Se inserisco nel campo la parola chiave TEMPO (lettere tutte maiuscole
    o miste maiuscole/minuscole),
    ad esempio, la ricerca viene eseguita regolarmente
    sia sul record che ha nel campo testo la
    parola in lettere maiuscole sia minuscole e va bene così.

    Però la pagina visualizza.php
    mi stampa e mi evidenzia la parola chiave
    nel testo che la contiene in maiuscolo
    (cioè come è inserita esattamente nel form)
    anche se nel testo originariamente è
    minuscola (e viceversa)

    Come faccio ad evitare questa forzatura?

    Infine è possibile fare una ricerca con più parole
    inserite nel form del tipo "tempo variabile" oppure

    "Villette a mare" ecc ecc


    grazie e ciao

  6. #6
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    se usi uno str_replace metti eregi_replace!!
    per + parole dovresti usare un each capito?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •