Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73

    funzione ricerca aiuto correzione codice

    Salve ragazzi ho questo codice che utilizzo per fare una ricerca con parole multiple su varie tabelle del database dopo averle filtrate mediante dei criteri

    purtroppo mi da i seguenti errori:


    Warning: Cannot use a scalar value as an array .... on line ....

    (line di riferimento - $query[] = "(fname LIKE '%$chiave%'...)

    Warning: implode(): Bad arguments. in ... on line ...

    (line di riferimento - $query_string = " ...)

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ... on line ...

    (line riferimento - while ($row = mysql_fetch_array ($dati)){ ...)


    Qualcuno ha la gentilezza di darmi una mano?

    ECCO IL CODICE IN QUESTIONE:


    <?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_base = array(); // Define the querybase as an empty array

    foreach($parole as $chiave) // for each value in the keywords array
    {
    if($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_string = 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_string;


    $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>");
    }
    mysql_free_result ($dati);

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

  2. #2
    meglio affrontare un pezzettino di codice alla volta. Parti dal primo errore e metti un riferimento alla riga in cui avviene
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  3. #3
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73
    ciao IroN@xiD grazie per l'aiuto.

    Ho corretto un pò il codice ma mi da ancora molti problemi:

    risultati duplicati e anche quelli che contengono solo una della keywords utilizzate

    Innanzitutto ecco il nuovo 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>");
    }
    mysql_free_result ($dati);

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

  4. #4
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    73
    Inoltre mi da i seguenti errori ancora:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource

    se mi puoi dare una mano mi faresti un piacere enorme.... dimmi come posso facilitarti il compito...

    GRAZIEEE....

  5. #5
    codice:
    $dati=mysql_db_query("$sql_db",$query_string);
    while ($row = mysql_fetch_array ($dati)){
    dovresti sempre inserire un controllo quando esegui delle query. Non è detto che vadano a buon fine.
    Infatti "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource" significa che hai passato alla funzione mysql_fetch_array() una risorsa non valida. Nel tuo caso probabilmente si tratta di un false ritornato dalla funzione mysql_db_query() dopo aver fallito la query.

    Ti do uno spunto per migliorare il codice e capire dove sta l'errore.

    codice:
    $dati=mysql_db_query("$sql_db",$query_string);
    if($dati===false) trigger_error("Errore SQL
    ".mysql_error(),E_USER_ERROR);
    Inoltre non ti serve invocare mysql_free_result a meno che tu non utilizzi un tipo particolare di query ed in particolari situazioni. Cmq in questo caso non serve.

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  6. #6
    Utente di HTML.it L'avatar di zoom
    Registrato dal
    Dec 2001
    Messaggi
    1,737
    mi unisco perchè anch'io ho lo stesso errore...

    $rs = mysql_query($SQL, $conn);
    $ricercati = mysql_fetch_array($rs)

    mi da questo errore

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

    se inserisco il codice postato da te vedo pagina totalmente bianca invece :master:

    ho provato a farmi stampare la query ma non vedo nessun tipo di errore
    Chicco Ravaglia per sempre con noi!

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.