Visualizzazione risultati 1 fino 14 di 14

Discussione: Form di ricerca per un archivio

  1. #1
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito Form di ricerca per un archivio

    Salve, utenti di AV.

    ho appena finito di creare un archivio di programmi, che prende i dadi dal db, con un motore di ricerca, il probblema e che per il motori di ricerca ho usato la funzione explode() divedento la chiavi in spazzi, ma ora non mi funziona, vi scrivo qui il codice dei file che ho usato:

    il primo file quello che quando clikki sul pulsante submit del form di ricerca di visualiza i lisultati altrimenti di visualiza una lista completa dei downloadin ve lo scrivo qui:
    Codice PHP:
    <table align="center" width="99%" cellpadding="1" cellspacing="1">
    <tr>
    <td style="border-bottom:groove #000022 1px"><sup>Download</sup></td>
    </tr>
    <tr>
    <td>
    Benvenudi nell' area downloading, qui potrete scaricare i programmi che più vi interessano cercandolo nella barra di ricerca presente qui sotto o sempricimente trovando il link del suo download
    <div style="background:none; border:none"><form action="index.php?Dir=download&search=go" name="search" method="post">
    <input type="text" name="pro"/>
    <input type="submit" name="cercad" value="Cerca" />
    </form><br />
    </div>
    <?
    if ($_GET["search"]=="go") {
    $program = explode("&nbsp;", $pro);
    $mysql = "SELECT * FROM Download WHERE Nome = '$program' AND Visibile = '1'";
    $result = mysql_query($mysql);
    include (
    "list1_download.php") ;
    }else {
    include (
    "list_download.php") ;
    }
    ?>
    <br />
    <?
    if ($_SESSION["username"]=="Jeak") {
    echo
    "<center><a href=\"index.php?Dir=add_download\" title=\"Aggiungi download\"><img border=\"0\" src=\"img/add.gif\" /></a>&nbsp;&nbsp;<a href=\"index.php?Dir=delete_download\" title=\"Elimina download\"><img border=\"0\" src=\"img/delete.gif\" /></a></center>";
    }
    ?>
    </td>
    </tr>
    </table>
    mentre il file dove visualiza i risultati di ricerca ve lo scrivo qui sotto:
    Codice PHP:
    <style type="text/css">
    <!--
    .Stile1 {
    font-size: 18px;
    font-weight: bold;
    }
    -->
    </style>
    <center>
    <span class="Stile1">Risultati ricerca</span>:
    </center>
    <?
    if ($result_s != $result) {
    echo
    "<table align='center' width='80%' cellpadding='0' cellspacing='0'><tr align='center'><td>Nessun risultato trovato</td></tr></table>" ;
    }else {
    echo
    "<table align=\"center\" width=\"80%\" cellpadding=\"0\" cellspacing=\"0\" background=\"img/stab.png\">
    <tr align=\"center\">
    <td width=\"32%\" style=\"border:solid #003366 1px\"><strong>Nome programma </strong></td>
    <td width=\"37%\" style=\"border:solid #003366 1px\"><strong>Piattaforma</strong></td>
    <td width=\"31%\" style=\"border:solid #003366 1px\"><strong>Azioni</strong></td>
    </tr>
    </table>"
    ;
    while (
    $rs = mysql_fetch_array($result)) {
    echo
    "<table align='center' width='80%' cellpadding='0' cellspacing='0'><tr align='center'><td width='32%' style='border:solid #003366 1px; border-top:none'>$rs[Nome]</td><td width='37%' style='border:solid #003366 1px; border-top:none'>$rs[Piattaforma]</td><td width='31%' style='border:solid #003366 1px; border-top:none'><a title='Visualizza Descrizioni' href='dsc_download.php'><img border='0' src='img/dsc.gif' /></a>&nbsp;<a title='Scarica Programma' href='$rs[link]'><img border='0' src='img/dwl.gif' />&nbsp;<a title='Segnala Programma' href='$rs[link]'><img border='0' src='img/posta.gif' /></a></td></tr></table>" ;
    }
    }
    ?>
    se provo a eseguire lo script non mi restituische un errore, ma mi restituisce immediatamente la query che uso per la ricerca uguale a FALSE, potete vedere voi?

    ho provato in tutti i modi, ma ancora non ho risolto

    Sevenjeak
    Software developer and much more

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Modifica:
    Codice PHP:
    $program = explode("&nbsp;", $pro);
    Con questo:
    Codice PHP:
    $program=explode("&nbsp;",$_POST['pro']);
    In questo modo hai un array. Un campo di un database non può essere uguale a un array.
    Modifica:
    Codice PHP:
    $mysql = "SELECT * FROM Download WHERE Nome = '$program' AND Visibile = '1'";
    Con:
    Codice PHP:
    $mysql="SELECT * FROM Download WHERE ";
    for(
    $i=0;$i<count($program);$i++)
    $mysql.="Nome LIKE '%".mysql_escape_string($program[$i])."%' AND ";
    $mysql.="AND Visibile='1'";
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Sei tedesco per caso? Perché nello scrivere vedo che confondi la "d" con la "t" parecchie volte...

    Ad ogni modo, prova a scrivere semplicemente questo al posto della tua explode:
    Codice PHP:
    $program = explode(" ", $pro);
    UPDATE: ho postato appena dopo funcool... ma se avessi ancora problemi prova a tenere conto di quanto ho scritto sopra (i dati via GET vengono passati con la normale codifica ASCII, senza l'uso di entità HTML).

    Stammi bene...
    Ultima modifica di dementialsite : 06-12-2007 alle ore 11.04.53
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Sei tedesco per caso? Perché nello scrivere vedo che confondi la "d" con la "t" parecchie volte...

    Ad ogni modo, prova a scrivere semplicemente questo al posto della tua explode:
    Codice PHP:
    $program = explode(" ", $pro);
    UPDATE: ho postato appena dopo funcool... ma se avessi ancora problemi prova a tenere conto di quanto ho scritto sopra (i dati via GET vengono passati con la normale codifica ASCII, senza l'uso di entità HTML).

    Stammi bene...
    grazie, con questa modifica infatti lo script mi va, mi da solo questo errore nel file dei risultati:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
    in questa righa:
    Codice PHP:
    while ($rs = mysql_fetch_array($result)) {
    ha, quasi dimenticavo, per gli errori grammaticare non è che non sono italiano ...contattate debug privatamente, vi spiegera tutto lui
    Ultima modifica di sevenjeak : 06-12-2007 alle ore 18.42.58

    Sevenjeak
    Software developer and much more

  5. #5
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Hai provato a fare la modifica che ti ho suggerito io?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  6. #6
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da funcool Visualizza messaggio
    Hai provato a fare la modifica che ti ho suggerito io?
    si, ho provato, con la modifica che mi hai fatto tu mi restituische la query uguale a false, mentre con la modifica che mi ha dado dementialsite mi restituische l' errore che ho postato nel mio post precedente

    Sevenjeak
    Software developer and much more

  7. #7
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Dopo il codice che ti ho suggerito io, inserisci:
    Codice PHP:
    echo $mysql;
    Cosa stampa?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  8. #8
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da funcool Visualizza messaggio
    Dopo il codice che ti ho suggerito io, inserisci:
    Codice PHP:
    echo $mysql;
    Cosa stampa?
    echo $mysql , mi va, mi stampa SELECT * FROM Download WHERE Nome LIKE '%%' AND Visibile='1'

    ah, una domanda, a che serve quel ciclo for?
    Ultima modifica di sevenjeak : 07-12-2007 alle ore 11.53.23

    Sevenjeak
    Software developer and much more

  9. #9
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Al posto di:
    Codice PHP:
    $program=explode("&nbsp;",$_POST['pro']);
    Prova a mettere:
    Codice PHP:
    $program=explode(" ",$_POST['pro']);
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  10. #10
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da funcool Visualizza messaggio
    Al posto di:
    Codice PHP:
    $program=explode("&nbsp;",$_POST['pro']);
    Prova a mettere:
    Codice PHP:
    $program=explode(" ",$_POST['pro']);
    infatti ora mi va, ma mi da il seguente errore:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Fasterwolf\list1_download.php on line 23

    questo errore me lo da nella riga dove ho mezzo il ciclo while

    Sevenjeak
    Software developer and much more

  11. #11
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ti stampa solo l'errore? Carichi la pagina facendo la ricerca tramite il form?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  12. #12
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Se adesso la situazione è questa:
    Codice PHP:
    $program = explode(" ", $pro);
    $mysql = "SELECT * FROM Download WHERE Nome = '$program' AND Visibile = '1'";
    l'errore è dovuto al fatto che stai costruendo una query legando un array in una stringa (con conseguenze imprevedibili).

    Quello che devi fare in realtà è qualcosa di più complicato, cioè estrarre ogni singola parola da quell'array e legarla nella query in modo opportuno. Più o meno così (attenzione agli spazi):
    Codice PHP:
    $program = explode("&nbsp;", $pro);
    $mysql = "SELECT * FROM Download ";
    $i = 0;
    foreach (
    $program as $p)
    {
    if (
    strlen ($p) && $i++)
    $mysql .= "WHERE (Nome LIKE '%$p%'";
    else
    $mysql .= " OR Nome LIKE '%$p%'";
    }
    if (
    $i)
    $mysql .= ") AND Visibile = '1'";
    else
    $mysql .= " WHERE Visibile = '1'";
    In questo modo, ogni parola sarà cercata come sottostringa dei termini nel tuo database, anche parziale (attenzione: una ricerca di "pro" ti restituirebbe tanto "pro evolution soccer" quanto "windows xp professional").

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  13. #13
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Se vuole cercare tutte le parole, basta che utilizzi quello che ho scritto all'inizio io (che credevo utilizzassi già).
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  14. #14
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da funcool Visualizza messaggio
    Se vuole cercare tutte le parole, basta che utilizzi quello che ho scritto all'inizio io (che credevo utilizzassi già).
    ah dire la verita io lo provato con tutte e due, tutte e due mi danno li stessi errore, mi esce scritto questo errore:
    Codice:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Fasterwolf\list1_download.php on line 23
    nella while del file list1_download.php

    Sevenjeak
    Software developer and much more

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •