ciao,
prendendo spunto dal post di JackieEstacado http://forum.html.it/forum/showthrea...hreadid=945147
vorrei fare alcune modifiche per visualizzare una galleria di immagini che mi permettono di filtrare le immagini sempre nella stessa pagina, per ora mediante il campo titolo (che include più parole es "tiziano ride").
Premetto che non ne sono capace e cerco di capire e chiedo aiuto affinché queste due pagine funzionino e possano essere d'aiuto ad altri non capaci come me, ma con il desiderio di provarci e infine riuscirci grazie alle persone più esperte.
primo passo creazione connessione al db
config.tiz.php
Codice PHP:
<?
// parametri del database
$db_host = "localhost";
$db_user = "root";
$db_password = "disegno";
$db_name = "db";
?>
file search_prova.php
Codice PHP:
<html>
<head>
</head>
<body>
<form method="POST" ACTION="search_prova.php" name="ricerca">
<?
include("config.tiz.php");
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.tiz.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.tiz.php");
//stampa della tabella della pagina di ricerca
print ("<TABLE>") .
("<tr>") .
("<td>[B]Nome[/B]</td>") .
("<td><INPUT type=\"text\" name=\"titolo\" VALUE=\"{$_POST[titolo]}\"></td>") .
("</tr>");
print ("<tr>") .
("<td colspan=\"2\"><input type=\"image\" name=\"ricerca\" src=\"immagini/Ricerca.jpg\" ></td>") .
("</tr>") .
("</TABLE>");
if (($_POST[ricerca_x])||($_POST[ricerca_y]))
{
include('galleria_prova.php');
}
mysql_close($db);
?>
</form>
</body>
</html>
infine il file galleria_prova.php
tengo a precisare che questo tipo di impaginazione è stato preso dal post di saibal
http://forum.html.it/forum/showthrea...hreadid=469430
Codice PHP:
<?
include("config.tiz.php");
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.tiz.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.tiz.php");
$query = @mysql_query("SELECT IDIMG, cronologia2, url_small FROM tblimg ORDER BY IDIMG");
$num_record = mysql_num_rows($query);
//adesso dichiaro un po' di variabili utili allo script
//colonne è il numero di celle per riga che dovà avere la nostra tabella
$colonne = 4;
//calcoliamo le righe della tabella che ci dovrebbero venire in base al numero di record
/*se ho 6 risultati e ho scelto 3 celle per riga avrò due righe totali*/
$tot_righe = $num_record/$colonne;
//dichiaro tre indici che mi serviranno
$i_x = 0;
$x_x = 0;
$k_x = 0;
/*questo mi serve per determinare la lunghezza delle celle della tabella.
questo valore deve essere variabile ovviamente in base al numero di colonne.
mi spiego: se ho due colonne la singola cella dovrà
essere lunga il 50%; se metto tre colonne
dovrà essere il 33% e così via*/
$cell_width = floor(25/$colonne);
//adesso scrivo il codice di inizio tabella
echo
'<table width="80%" border="0" cellspacing="1" cellpadding="3">
<tr>';
//adesso scorriamo i risultati ottenuti con un ciclo while
while($array = mysql_fetch_array($query)){
$IDIMG = $array['IDIMG'];
$titolo = $array['titolo'];
$url_small = $array['url_small'];
//incremento gli indici perchè mi serviranno dopo
$i_x++;
$k_x++;
$x_x++;
//stampo le celle dei risultati
echo'<td width="$cell_width%">';
echo $titolo. "
";
echo "<img src=\"".$url_small."\">";
echo'</td>';
/*ogni volta che l'indice $i_x è uguale al numero
di colonne scelto vuol dire che devo chiudere una riga*/
if($i_x == $colonne)
{
echo'</tr>';
if
($i_x == $colonne && (($x_x/$colonne) != $tot_righe))
{
echo'<tr>';
}
//riazzero l'indice $i_x per riniziare i calcoli fin quando mi serve
$i_x = 0;
} // fine $i_x == $colonne
} //fine del ciclo
/*a questo punto devo vedere che tipo di tabella mi è venuta fuori.
in pratica devo vedere se ci sono delle celle vuote
da stampare oppure posso chiudere la tabella.
per fare questo faccio due controlli
se il numero di celle scelte per riga è superiore ai risultati ottenuti per riga stampo o meno le celle mancanti.
questo può succedere perchè magari abbiamo scelto di
avere 3 celle per riga ma i risultati ottenuti sono 4
e quindi c'è l'inizio di una seconda riga che
deve avere per forza tre celle...
un po' contorto ma dovreste aver capito*/
if ($colonne <= $x_x){
/*stampo le celle mancanti se la divisione dei risultati per le colonne dà il resto.
questo vuol dire appunto che
ci sono meno risultati per riga rispetto alle celle scelte*/
if (($k_x%$colonne) != 0){
$indice = $k_x;
/*inizio un breve ciclo che in pratica fa questo:
"per ogni riga, se vedi che i risultati ottenuti
sono inferiori alle celle scelte con $colonne,
stampami delle celle vuote fino ad arrivare
al completamento della riga*/
while (($indice%$colonne) != 0 ){
echo'<td>[img]immagine_vuota.gif[/img]</td>';
//incremento il nuovo indice per ripetere l'operazione fin quando necessario
$indice++;
} //fine ciclo while
/*se invece la divisione non dà resto vuol dire che
il numero di risulati va bene in base alle celle scelte
(ad esempio 3 celle per riga con 6 risulati: 6/3 = 2)*/
if(($indice%$colonne) == 0 ){
echo'</tr>';
}
} //fine ($k%$colonne)!= 0
/*stessa cosa qui: il numero di risulati va bene in base
alle celle scelte e quindi posso chiudere la riga*/
} else{ //fine if $colonne <= $x
echo '</tr>';
}
//adesso posso finalmente chiudere la tabella
echo '</table>';
mysql_close($db);
?>
ed ora giungiamo al mio problema... non mi filtra i valori perchè?
io continuo a sbatterci la testa e se qualcuno volesse darmi una mano... beh più che volentieri.
un piccolo o una maggiore chiarezza.
io vorrei inserire un campo per la ricerca fulltext e più campi per una ricerca in determinati campi.Naturalmente dovrò fare delle aggiunte e modifiche, ma in questo modo potrei filtrare i dati sempre meglio giusto?
Grazie
Tz