Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    159

    motore di ricerca dalla Guida PHP/MySql pratica

    ciao, ho trovato questa guida
    http://php.html.it/guide/lezione/228...re-di-ricerca/
    per la creazione di un motor di ricerca.
    Ho salvato le pagine search.php e result.php come spiegato. In particolare la pagina result.php ha questo script
    <?
    include("top_foot.inc.php");
    include("config.inc.php");
    top();

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $keys = explode (",", $chiave);

    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query = "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR ";
    }
    $query .= "0";

    $query .= "SELECT id, titolo, data FROM news WHERE " . $query;

    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    { echo "" . date("j/n/y", $row[data]) . " - $row[titolo]
    "; }
    ?>
    <?
    foot()
    ?>

    Quando eseguo la ricerca dalla pagina search.php vado alla pagina result.php e compare questo errore

    Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in D:\Inetpub\webs\materamachicom\result.php on line 27

    Ho provato a modificare lo script
    { echo "" . date("j/n/y", $row[data]) . " - $row[titolo]
    "; }
    con
    { echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a>
    "; }

    La pagina result non mi da più l'errore però non visualizza nessun risultato della ricerca...
    Perchè?

  2. #2
    Per prima cosa evita l'utilizzo dell' short_open_tag (<?), al suo posto utilizza il tag di apertura completo (<?php).

    Poi abilita la visualizzazione completa degli errori inserendo il seguente codice all'inizio dello script:
    Codice PHP:
    error_reporting(E_ALL);
    ini_set('display_errors'1); 
    Infine, evita l'utilizzo di register_globals ed utilizza invece gli array super globali $_GET, $_POST etc. per accedere ai dati inviati dal client.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    159
    ciao,
    ho inserito
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    ho lasciato
    { echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a>
    "; }

    adesso il messaggio di errore è:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Inetpub\webs\materamachicom\result.php on line 29

    perchè? non capisco questo errore...

  4. #4
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Inetpub\webs\materamachicom\result.php on line 29
    Significa che http://www.php.net/mysql_query è fallito e ha restituito false invece che una valida risorsa MySQL.

    Utilizza http://www.php.net/mysql_error per ottenere un dettaglio sull'errore che si è verificato.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    159
    ciao, mi devi perdonare ma io mi sto cimentando adesso con il php, per cui non riesco a capire come muovermi in questo caso...
    L'errore significa forse che lo script non riesce a leggere il database?

  6. #6
    Guarda, basta che al comando mysql_query asooci un DIE con la segnalazione ed il numero dell'errore.

    Codice PHP:
    $result mysql_query($query$db) OR DIE("
    Errore Numero:"
    mysql_errno() ."

    Descrizione: "
    mysql_error()); 
    In questo modo leggi nome e descrizione del tuo errore.
    Una volta che sai questo, puoi anche postare il messaggio di errore e vedremo come ti possiamo dare una mano.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    159
    ciao ho seguito le tue istruzioni e l'errore è
    Errore Numero:1064
    Descrizione: 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 'titolo LIKE '%antonio%' OR testo LIKE '%antonio%' OR autore LIKE
    ...ora???
    Grazie mille

  8. #8
    Dunque...... :master:
    C'è un errore di sintassi nella query, per cui modifica leggermente lo script come ti indico e poi fammi risapere.

    Codice PHP:
    // ometto la parte precedente

    $query "";
    reset ($keys);
    while (list(,
    $parola) = each ($keys)) 
    $parola trim($parola);
    if (
    $parola != "")
    $query "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR ";
    }
    $query .= "0";

    $query .= "SELECT id, titolo, data FROM news WHERE " $query;

    echo 
    $sql;
    exit;

    /*
    La parte successiva dello script puoi anche non commentarla
    tanto non viene eseguita per via dell'exit.
    */ 
    Così vai a stampare la stringa della query come tale e dovresti vedere dove c'è l'errore di sintassi.
    Se non lo trovi da solo, posta la stringa qui e vedremo il da farsi.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    159
    allora ho modificato così:
    [PHP]
    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query = "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR ";
    }
    $query .= "0";

    $query .= "SELECT id, titolo, data FROM news WHERE " . $query;

    echo $sql;
    exit;



    ?>
    <?php
    foot()
    ?>
    [PHP]

    l'errore è:

    Notice: Undefined variable: sql in D:\Inetpub\webs\materamachicom\result.php on line 28

    la linea 28 è: echo $sql;


  10. #10
    Colpa mia: ho sbagliato a scrivere il nome della variabile nella echo.

    Codice PHP:
    // correggi solo questa riga
    echo $query
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.