Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727

    ordinare i risultati sia con % sia senza

    in un mio semplice motore di ricerca interno al db uso questa query:

    $query .= "nome LIKE '%$parola%' OR categoria LIKE '%$parola%' OR sottocategoria LIKE '%$parola%' OR descrizione LIKE '%$parola%' OR ";

    funziona bene però ad esempio nel caso io scriva la parola NEVE lui trova i record NEVE ma trova anche BIANCANEVE, avendo io messo %, e li mescola

    mi chiedo: sarebbe possibile che lui nell'estrarre i risultati mettesse PRIMA quelli con corrispondenza perfetta (in pratica quelli senza %) poi SOLO DOPO quelli considerando le % ???

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    uh fantastico, ho subito provato: ho modificato le tabelle del db, ho modificato la query così:

    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    $parola = strtolower($parola);

    if ($parola != "")

    $query .= "SELECT *, MATCH(nome, categoria, sottocategoria, descrizione) AGAINST('%$parola%') AS attinenza FROM foto WHERE MATCH(nome, categoria, sottocategoria, descrizion) AGAINST('%$parola%') ORDER BY attinenza DESC ";
    }
    $query .= "0";

    $query = $query;

    $records_media = mysql_query($query);
    $num_records = mysql_num_rows($records_media);
    $count = $num_records;



    ma mi restituisce errore-->
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

    un aiutino?

  4. #4
    Argh! Non usare il driver mysql, ma mysqli!

    Comunque, quando ti dice che il risultato non è una risorsa MySQL significa che è sbagliata la query. In questo caso non puoi usare l'asterisco:

  5. #5
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    stampa l'errore mysql.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    oh grazie dell'aiuto, avrete capito che sono un pò un cavernicolo del php, ma ci metto tanto impegno!!!

    allora: la query l'ho copiata ugualeuguale da quell'articolo che mi è stato suggerito...

    l'errore stampato è:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in pagina ecc ecc on line 211
    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '0' at line 1

    poi questa storia del driver non l'ho capita argh

  7. #7
    Scusa mi sono sbagliato: il problema è che aggiungi "0" alla fine della query causando un errore.

    Il driver, o il modulo che usi per connetterti a MySQL, è il vecchio mysql, io ti consiglio di usare mysqli. E anche se magari ora non hai esperienza di oggetti, sforzati di imparare a usare l'approccio a oggetti, sul manuale di PHP troverai degli esempi chiarissimi.

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ma l'hai provata nel phpmyadmin ?

    prova ad editarla per capire in che riga si crea l'errore.

    Le tue tabelle sono myisam ?
    Hai creato l'indice fulltext ?
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    uh grandi novità
    in phpmyadmin funzionaaaaa!!
    quindi nel php ho sbagliato qualcosa ma lo vediamo dopo
    il problema è che in questo nuovo modo (con NEVE) mi restituisce 4 risultati
    nel modo classico invece 140............
    io non volevo una super selezione così, volevo solo un ordinamento migliore per attinenza...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    altre novità: pensavo di aver sbagliato il carattere jolly (% invece di *), ho provato ma con neve mi dà sempre 4 miseri record, ecco la query fulltext (pippa)

    SELECT *, MATCH(nome, categoria, sottocategoria, descrizione) AGAINST("*neve*") AS attinenza FROM tabella WHERE MATCH(nome, categoria, sottocategoria, descrizione) AGAINST("*neve*") ORDER BY attinenza DESC

    io di biancaneve ne ho decine, lei dovrebbe trovarli lo stesso, no?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.