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

    ricerca nel db con parti di parole

    ho inserito nella mia pagina dei risultati della ricerca questo codice che ho rpeso dal forum:

    $keys = explode (",", $chiave);
    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "CODART LIKE '%$parola%' OR DESART LIKE '%$parola%' OR RICGRU LIKE '%$parola%'
    OR RICFAM like '%$parola%' ";
    }

    $CERCA = "SELECT * FROM M_ARTICOLI WHERE ($query) ";

    e funziona,a cnhe se data al mia conoscenza un po' incerta del php non ho ben capito come funziona, soprattutto $keys = explode (",", $chiave);
    perché se metto la virgola (,) nel form di ricerca mi dà errore? quella funzione non serve proprio a separare le aprole dalla virgola?
    le accetta solo se lascio lo spazio bianco.
    Oltre a questo vorrei sapere perché se scrivo SPAZZOLA CAPELLI trova tutti i record con SPAZZOLA e CAPELLI, se scrivo SPAZZ trova tutti quelli con SPAZZ (quindi SPAZZOLE, SPAZZOLA, SPAZZOLINI, etc) ma se scrivo SPAZZ CAP non trova niente.
    milka

  2. #2
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Ricordati prima di tutto che MySql non sbaglia mai

    Comunque non trova niente perchè la tua stringa sql risulta essere (compilata...)

    codice:
    SELECT * 
    FROM M_ARTICOLI 
    WHERE 
     CODART LIKE '%SPAZZ CAP%' OR 
     DESART LIKE '%SPAZZ CAP%' OR 
     RICGRU LIKE '%SPAZZ CAP%' OR
     RICFAM like '%SPAZZ CAP%'
    Capisci bene che "SPAZZ CAP" non può essere SPAZZOLA CAPELLI, nè SPAZZOLE, ecc... perchè la considera tutta un blocco...

  3. #3
    ok, quindi faccio prima a mettere una nota sotto il form di ricerca con scritto di inserire parole per intero.
    milka

  4. #4
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Potresti, per esempio, prendere le parole da cercare e creare un array separandole secondo spazi, virgole, ecc...

    poi ri-incollare l'array con % tra le parole in modo che una ricerca con "SPAZZ CAP" diventa "%SPAZZ%CAP%" che ti potrebbe restituire SPAZZOLE CAPELLI, SPAZZOLA CAPEZZOLI, ECC... (scusa il francesismo )

    prova a cercare sul manuale di MySql... magari c'è qualche consiglio interessante...

    ByeZ

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.