Piccolo motore di ricerca

ho una tabella di questo tipo

Codice:$query1   =   "CREATE   TABLE   ricette   (id   INT   (5)   UNSIGNED   not   null   AUTO_INCREMENT, titolo   VARCHAR   (50)   not   null   , regione   VARCHAR   (50)   not   null   , tipopiatto   TEXT   not   null   , persone   INT   (2) , ingredienti   TEXT   not   null   , preparazione   TEXT   not   null   , note   TEXT   , PRIMARY   KEY   (id))";

e una query che dovrebbe fare da motore di ricerca nel db ma non và sai aiutarmi nel vedere qualche errore?

Codice:

<?
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   ";
}
$query   .=   "0";
$query   =   "SELECT   id,   titolo,      FROM   ricette   WHERE   "   .   $query;
$result   =   mysql_query($query,   $db);
while   ($row   =   mysql_fetch_array($result))
{   echo   "<a   href=\"view.php?id=$row[id]\">"   .   date("j/n/y",   $row[data])   .   "   -   $row[titolo]</a><br>";   }
foot()
?>

si appoggia ad un semplice form

Codice:

<?
include("top_foot.inc.php");
include("config.inc.php");
top();
?>
<form   method=post   action=result.php>
<input   type=text   name=chiave><input   type=submit   value=cerca><br>
</form>
<?
foot();
?>

Io vorrei in questo modo cercare una o piu' parole all'interno delle ricette e una volta trovate mi restituisca i titoli delle stesse.

Attualmente qualsiasi parola inserisco non mi restituisce nulla :tichedoff:

Grazie

inviato 10 anni fa
blackeyes
X 0 X

Prova a cambiare:

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

con

$keys   =   explode   (",",   $_POST['chiave']);

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Prova a cambiare:

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

con

$keys   =   explode   (",",   $_POST['chiave']);

 :bye:

non va' ho provato anche:

$query   .=   "ricette.titolo   LIKE   '%$parola%'   OR   ricette.testo   LIKE   '%$parola%'     OR   ";
risposto 10 anni fa
blackeyes
X 0 X

lo stesso  script usato per le news va' tranquillamente,

<?
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   .=   "news.titolo   LIKE   '%$parola%'   OR   news.testo   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   "<a   href=\"view.php?id=$row[id]\">"   .   date("j/n/y",   $row[data])   .   "   -   $row[titolo]</a><br>";   }
foot()
?>

in quello per le ricette ho cambiato solo la tabella alla quale puntare :'( :'( :'( :'(

risposto 10 anni fa
blackeyes
X 0 X

Ricevi qualche errore? Prova a mettere error_reporting(E_ALL); all'inizio dello script.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Ricevi qualche errore? Prova a mettere error_reporting(E_ALL); all'inizio dello script.

no nessun errore poi il secondo che ti ho postato funziona è molto strano :(

risposto 10 anni fa
blackeyes
X 0 X
Ricevi qualche errore? Prova a mettere error_reporting(E_ALL); all'inizio dello script.

Hai ragione mi da':

[glow=red,2,300]Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /membri2/syrio/result.php on line 22[/glow]

ma che vuol dire??? sono proprio digiuno di mysql

risposto 10 anni fa
blackeyes
X 0 X
sono proprio digiuno di mysql

Haiaiaiaiai! ecco la cura:

http://www.phpnews.it/corsi/corso-php-mysql/

per il momento ti basta sapere che c'è un errore nella query. Dopo l'istruzione:

$result   =   mysql_query($query,   $db);

metti un:

echo $query;

e riporta il risultato così do un'occhiata alla query.  :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

SELECT id, titolo, FROM ricette WHERE ricette.titolo LIKE '%pasta%' OR ricette.testo LIKE '%pasta%' OR 0

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /membri2/syrio/result.php on line 23

Per la cura da stasera la comincio ;) :P

risposto 10 anni fa
blackeyes
X 0 X

C'è una virgola di troppo, tra "titolo" e "FROM"

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

C'è una virgola di troppo, tra "titolo" e "FROM"

 :bye:

tolta la ,

SELECT id, titolo FROM ricette WHERE ricette.titolo LIKE '%pasta%' OR ricette.testo LIKE '%pasta%' OR 0

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /membri2/syrio/result.php on line 23

 :'( :bye:

risposto 10 anni fa
blackeyes
modificato 10 anni fa
X 0 X

C'è una virgola di troppo, tra "titolo" e "FROM"

 :bye:

Ho tolto la , e adesso funziona  :D

Seguendo la tua guida adesso so' che vuol dire

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

Ho seguito il suggerimento di creare il file connect.php (invece di require uso include cambia molto??)

Grazie ancora per l'estrema disponibilità  O0 per qualsiasi dubbio non esitero' a scocciarti ancora ;D

 :bye:

risposto 10 anni fa
blackeyes
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda