Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Ricercare una riga sul DB, come fare?

    E' possibile fare una ricerca a scaglioni sul DB?
    per esempio, cercami tutte le righe che contengono la parole "amore",
    poi delle righe che hai trovato che contenevano la parola "amore", prendi solo quelle che contengono anche la parola "cuore", di queste altre prendi solo quelle che contengono anche la praola "viaggio" ecc ecc.

    E poi cosa più difficile è possibile fargli scrivere la frase cercata senza scrivere tutto il resto?
    per esempio mettiamo che nella riga che ha trovato c'è scritto "Mi chiamo Marco. Il mio cuore ha trovato l'amore in viaggio. Ne sono felice", io vorrei che scrivesse solo: "Il mio cuore ha trovato l'amore in viaggio."

    Come si fa? qualcuno lo sa? chiedo troppo da MySQL?
    Grazie a chiunque voglia aiutarmi

  2. #2
    SELECT table.frase
    FROM table
    WHERE table.frase LIKE '%amore%' && table.frase LIKE '%cuore%' && table.frase LIKE '%viaggio%'

    table e frase sono ripettivamente la tabella e il campo in qui hai inserito le frasi

  3. #3
    e si ma in questo esempio noi sapevamo che erano 3 parole che volevamo cercare, ma metti che ne sono di più o di meno? come si può fare? non posso mica riempire il tutto con && all'infinito?

  4. #4
    se deve funzionare con un numero variabile, salvale tutte in un array, quindi con un ciclo foreach aggiungi per ogni parola alla query && frase.table LIKE "%$chiave%".
    Poi , esegui la query con mysql

  5. #5
    e questo si può fare? scusa ma la query non deve essere già compilata?
    tu come faresti per esempio?

    mettiamo che non mio array ho 4 parole
    conto il numero di parole nell'array poi faccio un ciclo for
    For(i=0;i<n;i++){
    e qui che ci metto?
    }

  6. #6
    Nella variabile $keys hai salvato le parole da cercare
    Codice PHP:
    $query "SELECT table.frase FROM table WHERE";
    foreach (
    $keys as $key )
    {
    $query .= "&& table.frase LIKE '%$key%' ";

    poi mandi a sql la query $query

  7. #7
    Supponendo che la frase sia memorizzata nella variabile $frase:

    codice:
    $parole = explode (" ",$frase);
    
    $query = "SELECT campo FROM tabella WHERE";
    
    for ($k=0;$k<count($parole);$k++) {
    
        if ($k != 0) $query .= " && ";
        $query .= "campo LIKE '%$parole[$k]%'";
    
    }
    
    echo $query;
    Prova cosi' e vedi se la query che ti stampa va bene... non ho controllato eventuali errori di sintassi perche' sono un po' di fretta, come al solito... :P

  8. #8
    Ha ok, grazie mille non sapevo si potesse fare una cosa del genere

  9. #9
    Originariamente inviato da lorenz82
    Ha ok, grazie mille non sapevo si potesse fare una cosa del genere
    Si puo' fare tutto... o quasi... :P

  10. #10
    Però la seconda domanda che avevo fatto è un pò più complicato da fare vero?
    per ora ho fatto che mi suddivideva in un altra tabella tutto quello che c'era scritto dividendolo per punti, e poi prendeva la riga con la maggiore corrispondenza di parole.
    non c'è un modo più snello di farlo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.