Visualizzazione risultati 1 fino 8 di 8

Discussione: ricerca con Ajax e Highlight

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito ricerca con Ajax e Highlight

    Con questo script in Ajax effettuo la ricerca in realtime nella stessa pagina

    Codice PHP:

    <script type="text/javascript">
    $(
    "#invia").click(function(){
    $.
    ajax({
    type: "POST",
    url: "results_actor.php",
    data: "input_nome=" + $("#nome").val(),
    success: function(response){
    $(
    "#risultato").html(response);
    }
    });
    });
    </script>
    quello che vorrei ottenere e' evidenziare il testo trovato, la funzione si chiama Highlight

    esempio:

    digito cane e tutti i risultati con la parola cane vengono evidenziati

    come fare?

  2. #2
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,003

    Predefinito

    Salve,
    nel web ci sono diverse libreirie gratutite per farlo.

    Una delle più semplici da implementare e performanti, tra quelle che provai in passato, è la libreria hilitor.

    Un ulteriore esempio sull'utilizzo della libreria, lo trova qui.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 25-08-2021 alle ore 19.30.50

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao GraphOGLRisorse,

    non e' cosi semplice, prima bisogna digitare il testo nella form e poi tramite invio viene chiamato Ajax ed eseguita la query che visualizza i risultati

    questo che mi hai segnalato evidenzia i valori nella stessa pagina senza codice php e mysql
    Ultima modifica di blackskyisback : 25-08-2021 alle ore 19.43.11

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Non conosco le librerie segnalate, ma non potresti comunque utilizzarle come callback dopo aver ricevuto i dati da ajax?

    Altrimenti, senza usare JS, da PHP dovresti sostituire tutti i vari $_POST['input_nome'], una cosa come:
    Codice PHP:
    str_replace($_POST['input_nome'], '<span class="highlight_text">'.$_POST['input_nome'].'</span>', $testo_pagina);
    Ovviamente con un css appropriato, ovvero definendo la classe css opportunamente (ad esempio .highlight_text{background-color:#FFFF00;} ).

    Ciao!

  5. #5
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao alemoppo

    la pagina result_actor.php ha questo pezzo di codice


    Codice PHP:
    $_POST['input_nome']=trim($_POST['input_nome']); // funzione per eliminare spazi vuoti
    $value = $_POST["input_nome"];
    ho provato ad adattarlo cosi ma non vedo nessun cambiamento

    Codice PHP:
    str_replace($_POST['input_nome']=trim($_POST['input_nome']), '<span class="highlight_text">'.$_POST['input_nome'].'</span>', $value);
    $value = $_POST["input_nome"];

    css

    Codice HTML:
    <style>
    
     .highlight_text{background-color:#F8FA06;}
    </style>
    Ultima modifica di blackskyisback : 26-08-2021 alle ore 02.49.25

  6. #6
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    risolto cosi

    Codice HTML:
    <style type="text/css">
    .highlight { background-color: #F8FA06; } 
    </style>

    Codice PHP:
    <?php echo str_replace($value, "<span class=\"highlight\">$value</span>", $nome);?>


    grazie a tutti per il vostro aiuto

  7. #7
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    riscontrato un problema
    se scrivo Alex funziona, ma se scrivo alex non evidenzia piu'

    la funzione str_replace come riportato dal sito e' case sensitive

    Note:

    This function is case-sensitive. Use str_ireplace() for case-insensitive replace.
    https://www.php.net/manual/en/function.str-replace.php

    allora bisogna sostituire con str_ireplace

    str_ireplace() - Case-insensitive version of str_replace
    https://www.php.net/manual/en/function.str-ireplace.php

    la cosa che non avevo notato prima (per via della funzione) e che sostituisce il testo evidenziato in base a come si digita nella casella di input

    esiste un metodo alternativo che evidenzia solamente e lascia inalterato il testo?

  8. #8
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    ecco il fix, in questo modo vengono cercate tute le parole nel database (che sono con la prima lettera maiuscola)anche se si digita in maisuscolo e o minuscolo nella form

    Codice PHP:
    $_POST['input_nome']=trim($_POST['input_nome']); // funzione per eliminare spazi vuoti
    $value = ucwords(strtolower($_POST['input_nome'])); // trasforma la prima lettera in maiuscolo
    Codice PHP:

    <?php echo str_ireplace($value, "<span class=\"highlight\">$value</span>", $nome);?>

Tags for this Thread

Regole di scrittura

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