Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73

    Ricerca multipla con risultati duplicati

    Ragazzi ho il seguente problema:

    Quando eseguo la ricerca con una parola: tutto ok

    Quando eseguo la ricerca con più parole mi duplica i risultati per ogni parola cercata.

    Fino ad ora siete stati splendidi, sapreste ancora una volta darmi una mano?

    GRAZIE

    ECCO IL CODICE...

    <?php
    include("data.php");
    include("paging.func.php");

    $link=mysql_connect("$sql_host","$sql_user","$sql_ pass");





    $tutto = "SELECT A.*, B.* FROM members AS A INNER JOIN profiles AS B ON A.mem_id = B.mem_id";
    $query = mysql_db_query ($sql_db,$tutto)
    or die ("Non riesco ad eseguire la richiesta $tutto");
    $righe = mysql_num_rows ($query);



    if ($settore == "10"){ $settorevar = ''; }
    else{ $settorevar = "and B.industry = '$settore'"; }


    if ($nazione == "all"){ $nazionevar = ''; }
    else{ $nazionevar = "and A.country = '$nazione'"; }



    ?>
    contenuti <? echo $righe ?> contatti[/b]</td>
    </tr>


    <tr>
    <td width="100%" colspan="2">
    <p align="center">
    <form method=POST action=<? echo $PATH_INFO ?>>

    <input type="text" name="chiave" size="20">


    <select name="nazione" onChange="listCategory.populate();" width="150" style="width: 150px" align="center">
    <option value="all" >ovunque</option>
    <option value="italy">italia</option>
    <option value="usa">usa</option>
    <option value="france">france</option>
    </select>


    <select name="settore" size="5" onChange="listmessage_categoryId.populate();" width="150" style="width: 150px" align="center">

    <option SELECTED value="10" >qualunque</option>
    <option value="8">Telecomunicazioni</option>
    <option value="80">Marketing ed Advertising</option>
    <option value="13">Pratica Medica</option>


    </select>



    </td>
    </tr><tr>
    <td width="100%" colspan="2">
    <p align="center">
    <input type="submit" value="Cerca Corrispondenze">
    </td></form></tr></table>
    </td><td width="74%">
    <blockquote>
    <p align="left">[b]




    <?


    if (isset($chiave)){

    $parole= explode(" ",$chiave); // Explode the keywordstring, and create an array

    $query = array(); // Define the querybase as an empty array

    foreach($parole as $chiave) // for each value in the keywords array
    {
    if(!empty($chiave)) // check against empty values
    { // Now create an individual array value for each keyword
    $query[] = "(fname LIKE '%$chiave%'
    or lname LIKE '%$chiave%'
    or interests LIKE '%$chiave%'
    or books LIKE '%$chiave%'
    or about LIKE '%$chiave%'
    or skills LIKE '%$chiave%'
    or p_positions LIKE '%$chiave%'
    )" ;
    }

    $query_str = implode(" and ", $query); // merge all array elements, use AND between individual sections

    // Now finish the querystring with required sql commands
    $query_string = "

    SELECT A.*, B.*
    FROM members AS A
    INNER JOIN profiles AS B
    ON A.mem_id = B.mem_id $nazionevar $settorevar
    WHERE ".$query_str;


    $dati=mysql_db_query("$sql_db",$query_string);

    while ($row = mysql_fetch_array ($dati)){
    $verifica=$row["books"];

    echo $row["fname"]." ".$row["lname"]."
    ";
    echo "interessi: ".$row["interests"]."
    ";
    echo "descrizione: ".$row["about"]."
    ";
    echo "posizioni ".$row["p_positions"]."
    ";
    echo "Attitudini: ".$row["skills"]."<hr size=1 color=#000000>";
    echo "<a href=\"index.php?mode=people_card&p_id=".$row["mem_id"]."\">Guarda il profilo</a>"."<hr size=1 color=#000000>";
    }
    }
    if (!$verifica){
    print ("Nessuna corrispondenza
    per la parola <font color=#000080>$chiave</font>");
    }


    }else{
    echo "Elenco Corrispondenze";
    }
    mysql_close ($link);
    ?>

  2. #2
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73
    ragazzi proprio non riesco ad uscirne... davvero nessuno riesce a darmi una mano?

  3. #3
    Originariamente inviato da mariatmind
    ragazzi proprio non riesco ad uscirne... davvero nessuno riesce a darmi una mano?
    Stampa la query.

    echo $query_string

    Dovresti anche non utilizzare piu' mysql_db_query, funzione ormai dichiarata deprecata da lungo tempo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73
    Ciao piero.mac, grazie per i consigli,

    quando stampo la query per la ricerca "tennis giovanna" mi da questi risultati (duplicati):

    ----------------
    Iazzetta Maria Giovanna


    SELECT A.*, B.* FROM members AS A INNER JOIN profiles AS B ON A.mem_id = B.mem_id WHERE (fname LIKE '%tennis%' or lname LIKE '%tennis%' or interests LIKE '%tennis%' or books LIKE '%tennis%' or about LIKE '%tennis%' or skills LIKE '%tennis%' or p_positions LIKE '%tennis%' or schools LIKE '%tennis%' or hometown LIKE '%tennis%' or here_for LIKE '%tennis%' or specialities LIKE '%tennis%' or overview LIKE '%tennis%' or travel LIKE '%tennis%' )



    Iazzetta Maria Giovanna


    SELECT A.*, B.* FROM members AS A INNER JOIN profiles AS B ON A.mem_id = B.mem_id WHERE (fname LIKE '%tennis%' or lname LIKE '%tennis%' or interests LIKE '%tennis%' or books LIKE '%tennis%' or about LIKE '%tennis%' or skills LIKE '%tennis%' or p_positions LIKE '%tennis%' or schools LIKE '%tennis%' or hometown LIKE '%tennis%' or here_for LIKE '%tennis%' or specialities LIKE '%tennis%' or overview LIKE '%tennis%' or travel LIKE '%tennis%' ) and (fname LIKE '%giovanna%' or lname LIKE '%giovanna%' or interests LIKE '%giovanna%' or books LIKE '%giovanna%' or about LIKE '%giovanna%' or skills LIKE '%giovanna%' or p_positions LIKE '%giovanna%' or schools LIKE '%giovanna%' or hometown LIKE '%giovanna%' or here_for LIKE '%giovanna%' or specialities LIKE '%giovanna%' or overview LIKE '%giovanna%' or travel LIKE '%giovanna%' )
    ---------------

    RIESCI A CAPIRE QUALCOSA IN PIU'...?

  5. #5
    ciao, potresti provare ad usare SELECT DISTINCT, oppure a mettere un GRUOP BY in fondo alla query.

    alternativamente prova ad usare mysql_fetch_assoc al posto di mysql_fetch_array.

    ciao

  6. #6
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73
    Ciao K-Line, purtroppo non ho grande esperienza... potresti farmi un esempio midificando il codice che ho postato?

    Lo so che chiedo un pò troppo ma mi aiuteresti davvero tanto...

    In ogni caso, grazie dell'aiuto...

  7. #7
    ciao, prova a modificare questa parte

    SELECT A.*, B.*
    FROM members AS A
    INNER JOIN profiles AS B
    ON A.mem_id = B.mem_id $nazionevar $settorevar
    WHERE ".$query_str;

    così...

    SELECT A.*, B.*
    FROM members AS A
    INNER JOIN profiles AS B
    ON A.mem_id = B.mem_id $nazionevar $settorevar
    WHERE ".$query_str GROUP BY A.mem_id;

  8. #8
    ps: mi sono scordato di sistemare gli apici

    SELECT A.*, B.*
    FROM members AS A
    INNER JOIN profiles AS B
    ON A.mem_id = B.mem_id $nazionevar $settorevar
    WHERE ".$query_str." GROUP BY A.mem_id";

  9. #9
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73
    K-Line purtroppo mi da sempre i risultati duplicati...

    AD ESEMPIO i risultati per la ricerca GIOVANNA TENNIS sono questi:


    ---------------------------------------
    Iazzetta Maria Giovanna

    (Questa è la query stampata)SELECT A.*, B.* FROM members AS A INNER JOIN profiles AS B ON A.mem_id = B.mem_id WHERE (fname LIKE '%giovanna%' or lname LIKE '%giovanna%' or interests LIKE '%giovanna%' or books LIKE '%giovanna%' or about LIKE '%giovanna%' or skills LIKE '%giovanna%' or p_positions LIKE '%giovanna%' or schools LIKE '%giovanna%' or hometown LIKE '%giovanna%' or here_for LIKE '%giovanna%' or specialities LIKE '%giovanna%' or overview LIKE '%giovanna%' or travel LIKE '%giovanna%' ) GROUP BY A.mem_id


    Iazzetta Maria Giovanna


    (Questa è la query stampata) SELECT A.*, B.* FROM members AS A INNER JOIN profiles AS B ON A.mem_id = B.mem_id WHERE (fname LIKE '%giovanna%' or lname LIKE '%giovanna%' or interests LIKE '%giovanna%' or books LIKE '%giovanna%' or about LIKE '%giovanna%' or skills LIKE '%giovanna%' or p_positions LIKE '%giovanna%' or schools LIKE '%giovanna%' or hometown LIKE '%giovanna%' or here_for LIKE '%giovanna%' or specialities LIKE '%giovanna%' or overview LIKE '%giovanna%' or travel LIKE '%giovanna%' ) and (fname LIKE '%tennis%' or lname LIKE '%tennis%' or interests LIKE '%tennis%' or books LIKE '%tennis%' or about LIKE '%tennis%' or skills LIKE '%tennis%' or p_positions LIKE '%tennis%' or schools LIKE '%tennis%' or hometown LIKE '%tennis%' or here_for LIKE '%tennis%' or specialities LIKE '%tennis%' or overview LIKE '%tennis%' or travel LIKE '%tennis%' ) GROUP BY A.mem_id

    ------------------------------------

  10. #10
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73
    Da quello che vedo dalle query stampate è come se facesse una prima query per la prima parola e poi la query giusta verificando entrambe le parole... si dovrebbe eliminare la prima query..

    Quale potrebbe essere la soluzione?

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.