• User

    Motore di ricerca che non funziona

    Salve, sto cercando di creare uno script che ricerchi una chiave all'intenro di un database, evidentemente però commetto qualche errore che non riesco a scovare

    -file search.php

    [PHP]<?
    include("topser_foot.inc.php");

    top();
    ?>
    <br/><br /><br /><br/><br /><br />

    <div align="center">
    <center>

    <table border="1" width="300" bgcolor="#FFFF99">
    <tr>
    <td width="100%">

    <p align="center"><b><font size="3" >INSERISCI UNA MARCA</font></b></p>

    <form method="post" action="result.php">
    <p align="center"><input type="text" name="chiave" /></p>
    <p align="center"><input type="submit" value="cerca" /><br /></p>
    </form>
    </tr>
    </table>
    </center>
    </div>

    <br /><br/><br /><br /><br /><br/><br /><br />
    <?
    foot();
    ?>
    [/PHP]

    • file result.php

    [PHP]<?
    include("topser_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 ($chiave))
    {
    $parola = trim($parola);
    if ($parola != "")
    $query .= "marca LIKE '%$parola%' OR tipo LIKE '%$parola%' OR venditore LIKE '%$parola%' ";

    }

    $query .= "0";

    $query = "SELECT * FROM prodotti WHERE " . $query;

    $result = mysql_query($query, $db);
    ?>
    <table border="0" width="640">
    <tr>
    <td width="15" bgcolor="#FFFF00">
    <b><font color="#FF0000" size="3">ID</font></b></td>
    <td width="101" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">MARCA</font></b></td>
    <td width="141" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">TIPO</font></b></td>
    <td width="18" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">VENDITORE</font></b></td>
    <td width="71" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">PREZZO</font></b></td>
    </tr>
    <?
    while ($row = mysql_fetch_array($result))
    {
    echo "<tr><td width="15"> <font size="4">$row[id]</font></td>"
    . "<td width="101"><font size="4"> $row[marca]</font></td>"
    . "<td width="141"><font size="4">$row[tipo]</font></td> "
    . "<td width="18" <font size="4"> $row[venditore]</font></td>"
    ." <td width="71"<font size="4">$row[prezzo]</font></td></tr>";
    }
    foot()
    ?>

    [/PHP]

    QUesti sono gli errori:

    Notice: Undefined variable: chiave in c:\users\documents\easyphp1-8\www\prova\result.php on line 14

    Warning: Variable passed to each() is not an array or object in c:\users\documents\easyphp1-8\www\prova\result.php on line 18

    Dove sbaglio?? Grazie mille anticipate


  • User

    mi sono accorto di aver postato il codice sbagliato, correggo qui

    [PHP]<?
    include("topser_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 .= "marca LIKE '%$parola%' ";

    }

    $query .= "0";

    $query = "SELECT * FROM prodotti WHERE " . $query;

    $result = mysql_query($query, $db);
    ?>
    <table border="0" width="640">
    <tr>
    <td width="15" bgcolor="#FFFF00">
    <b><font color="#FF0000" size="3">ID</font></b></td>
    <td width="101" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">MARCA</font></b></td>
    <td width="141" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">TIPO</font></b></td>
    <td width="18" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">VENDITORE</font></b></td>
    <td width="71" bgcolor="#FFFF00">
    <p align="center"><b><font color="#FF0000" size="3">PREZZO</font></b></td>
    </tr>
    <?
    while ($row = mysql_fetch_array($result))
    {
    echo "<tr><td width="15"> <font size="4">$row[id]</font></td>"
    . "<td width="101"><font size="4"> $row[marca]</font></td>"
    . "<td width="141"><font size="4">$row[tipo]</font></td> "
    . "<td width="18" <font size="4"> $row[venditore]</font></td>"
    ." <td width="71"<font size="4">$row[prezzo]</font></td></tr>";
    }
    foot()
    ?>

    [/PHP]

    Notice: Undefined variable: chiave in c:\users\documents\easyphp1-8\www\prova\result1.php on line 13

    ma perchè non riconosce la variabile chiave?


  • User

    Forse perchè non gliela passi ne inizializzi da nessuna parte?


  • User

    La memorizzo con il form e la richiamo nel secondo script, immagino abbia sbagliato qualcosa ma proprio non riesco a correggere. Comunque grazie


  • User Attivo

    Ciao,
    il dato che invii con il form tramite POST si trova in $_POST['chiave'] e non in $chiave.

    Alessandro