Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Semplice motore di ricerca tramite parole chiave
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • cosina
      cosina User • ultima modifica di

      Semplice motore di ricerca tramite parole chiave

      Buongiorno a tutti, ho trovato in rete un semplicissimo motore di ricerca tramite parole chiave. Funziona, ma solo inserendo esattamente i termini indicati.
      Come vedete nel codice che segue, l'autore aggiunge piu termini validi, ad un certo punto (hess toy truck), ma la ricerca funziona solamente inserendoli tutti e tre. Vorrei sapere se e possibile correggere il codice, affinche la ricerca porti alla pagina di arrivo anche se l'utente inserisce uno solo, o piudi uno, dei termini stabiliti, ma non tutti necessariamente e non nello stesso ordine. La guida ufficiale si trova qui: http://www.learningaboutelectronics.com/Articles/How-to-create-a-search-engine-using-PHP.php

      Grazie mille per l'aiuto

      [PHP]<?php

      $result= $_POST['search'];
      $result= strtolower($result);

      if (strpos($result, "dropbox") == "true")
      header ('Location: http://www.dropbox.com');

      if (strpos($result, "amazon") == "true")
      header ('Location: http://www.amazon.com');

      if (strpos($result, "google") == "true")
      header ('Location: http://www.google.com');

      if (strpos($result, "ebay") == "true")
      header ('Location: http://www.ebay.com');

      if (strpos($result, "wikipedia") == "true")
      header ('Location: http://www.wikipedia.org');

      if (strpos($result, "youtube") == "true")
      header ('Location: http://www.youtube.com');

      if (strpos($result, "hess toy truck") == "true")
      header ('Location: https://hesstoytruck.com');

      if (strpos($result, "lm7805") == "true")
      header ('Location: http://www.learningaboutelectronics.com/Articles/What-is-a-LM7805-voltage-regulator');

      echo "No results found for this search";
      ?> [/PHP]

      [HTML]<form action="searchpage.php" method="post">

      <h1>Product Search</h1>

      <label>Enter Product Name </label>
      <input type="text"name="search" id="txtName"/><br><br>
      <input type="submit" name="submit" id="submit" value="Search"/>

      </form> [/HTML][

      ](http://www.learningaboutelectronics.com/Articles/How-to-create-a-search-engine-using-PHP.php)

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • cosina
        cosina User • ultima modifica di

        Credevo di aver trovato la soluzione, ma come non detto :gtsad:

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • A
          alex.2019 User Attivo • ultima modifica di

          Ciao Cosina 🙂

          prova questo, lo uso io 😄

          [HTML]

          <p class="bioheading">Search</p><div class="biodata">
          <div class="p-3 mb-2 bg-info text-white">
          <form name="searchform" onSubmit="return dosearch();">
          <table border="1" cellpadding="20" cellspacing="0" bgcolor="#F2F2F2">
          <tr>
          <td>
          Search: 
          <select name="sengines">
          <option value="http://www.google.com/search?q=">Google</option>
          <option value="https://www.amazon.com/s?k=">amazon</option>
          <option value="https://it.wikipedia.org/w/index.php?sort=relevance&search=">wikipedia</option>
          <option value="https://www.bing.com/search?q=">Bing</option>
          <option value="

          >
          </select>
            For: 
          <input type="text" name="searchterms">
          <input type="submit" name="SearchSubmit" value="Search">
          </td>
          </tr>
          </table>
          </form>

          <script type="text/javascript">
          function dosearch() {
          var sf=document.searchform;
          var submitto = sf.sengines.options[sf.sengines.selectedIndex].value + escape(sf.searchterms.value);
          window.open(submitto);
          return false;
          }
          </script>

          [/HTML]

          conoscendo i parametri di ricerca della query lo puoi personalizzare come vuoi

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • cosina
            cosina User • ultima modifica di

            Grazie Alex, lo provo. Anzi, gia provato, va benissimo, ma non e quello di cui ho bisogno. Io ho proprio necessita` di inserire delle chiavi di ricerca scelte. Il codice che mi hai dato funziona solo con il titolo esatto delle pagine. Grazie comunque

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • U
              ultima Moderatore • ultima modifica di

              Ciao cosina 😉
              Son un po' fuori contesto del tuo progetto quindi non riesco a darti una regola specifica perchè in questi casi solitamente si preleva il campo, si converte in array, si esegue un ciclo e si fa il match.
              Tuttavia, provo ad allargare un po' i tuoi orizzonti.
              Se in quel caso specifico, utilizzi la funzione di PHP strstr, quanto meno controlli se una delle 3 parole è contenuta.
              Esempio:
              [PHP]
              <?php
              $stringa = "hess toy truck";
              if (strstr($stringa, $result) == true)
              header ('Location: https://hesstoytruck.com');
              [/PHP]

              In pratica, cerchi $result all'interno di $stringa. In caso true, quindi positivo fai redirect.
              Fonte: https://www.php.net/manual/en/function.strstr.php

              Fammi sapere.
              Ciao.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • cosina
                cosina User • ultima modifica di

                Io l'ho detto che sei un GENIO e qui lo ripeto. Ciao Ultima e ben ritrovato. Ovviamente funziona, come tutte le soluzioni che mi hai passato finora. Non preoccuparti "del mio progetto", perche` ormai sono passata da molti altri progetti e questo non ha nulla a che fare con il precedente che conoscevi. Grazie mille, sei il mio angelo custode. Un abbraccio virtuale e buona giornata. Ciao

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • cosina
                  cosina User • ultima modifica di

                  Una cosa ancora ti chiedo: in questo modo funziona solo se le parole vengono inserite rispettando il loro ordine. Cioe`, se io scrivo "hess toy", funziona, ma se scrivo "toy hess" non funziona. Esiste un modo per farlo funzionare anche se le parole non rispettano l'ordine? Grazie mille

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • U
                    ultima Moderatore • ultima modifica di

                    Tutto è possibile.
                    In questo caso specifico ti basta convertire il parametro in array con la funzione explode() e successivamente effettuare un ciclo per fare il riconoscimento.
                    Ipotizzando che l'utente scrive toy hess, il parametro verrà creato in:
                    array("toy", "hess")
                    e tramite il ciclo foreach che ho inserito, cerco le corrispondenze all'interno della stringa. Nel caso in cui ne incontra una, fa redirect alla url corretta.
                    Questo sistema grezzo, ha delle falle, perchè funzionerebbe anche in caso di "toy abcd" scritto nel campo input. Per renderlo sempre più performante, devi lavorare sul parametro.
                    Comunque qui l'esempio.
                    [PHP]
                    $strings = "hess toy truck";
                    $keywords = explode(" ", $result);
                    foreach($keywords as $keyword)
                    {
                    if( strstr($strings, $keyword) == true )
                    {
                    header("Location: https://hesstoytruck.com");
                    break;
                    exit();
                    }
                    }
                    [/PHP]

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • cosina
                      cosina User • ultima modifica di

                      Perfetto, grazie mille! Provo tutto con calma e ci giocherello per i perfezionamenti. In caso di difficolta`, verro di nuovo a romperti le scatole, ma confido di farcela da sola. Ciao Ultima, sei prezioso :smile5:

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      Caricamento altri post
                      Rispondi
                      • Topic risposta
                      Effettua l'accesso per rispondere
                      • Da Vecchi a Nuovi
                      • Da Nuovi a Vecchi
                      • Più Voti