query per paginazione record

megarospo

Utente Attivo
25 Set 2007
147
0
0
Secondo voi, cosa c'è di sbagliato in questa query che serve per realizzare una paginazione di record?

$query = mysql_query("SELECT * FROM tab1 WHERE nome LIKE '%%%s%%' AND formato LIKE '%%%s%%' AND descrizione LIKE '%%%s%%' ORDER BY nome LIMIT ".$inizio.",".$max, $varnome_ricerca,$varformato_ricerca,$vardescrizione_ricerca) or die (mysql_error());


quando inserisco la parte in rosso mi da degli errori.


Grazie per l'aiuto
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Prova così:

$query = mysql_query("SELECT * FROM tab1 WHERE nome LIKE '%".$varnome_ricerca."%' AND formato LIKE '%".$varformato_ricerca."%' AND descrizione LIKE '%".$vardescrizio ne_ricerca."%' ORDER BY nome LIMIT ".$inizio.",".$max) or die (mysql_error());
 

megarospo

Utente Attivo
25 Set 2007
147
0
0
Ho risolto scrivendo al posto di "mysql_query" "sprintf" , ma poi ho altri problemi. Ora provo anche come mi suggerisci tu. Grazie.
 

megarospo

Utente Attivo
25 Set 2007
147
0
0
i link di paginazione ora funzionano con questo script:

$query = mysql_query("SELECT * FROM tab1 WHERE nome LIKE '%$varnome_ricerca%' AND formato LIKE '%$varformato_ricerca%' AND descrizione LIKE '%$vardescrizione_ricerca%' ORDER BY nome LIMIT ".$inizio.",".$max) or die (mysql_error());


Se scrivo come mi ha suggerito Trogo, ( '%".$varformato_ricerca."%'), non mi funziona.

ora non mi da' nessun urrore ma mi visualizza una pagina bianca con stritto solo :
1 2 3 4 5 6 7 > Ultima pag.
Precedente | Prossima pag.


Mentre dovrebbe farmi vedere una tabella con i dati impaginati.
ciao.
 

megarospo

Utente Attivo
25 Set 2007
147
0
0
Ciao tutti. Ho voluto fare un pò di prove, ma non sono riuscito a far funzionare la paginazione.
Al punto in cui sono la pagina dei risultati mi restituisce una videata con 1 2 3 4 5 6 7 > Ultima pag. | Precedente | Prossima pag. e la tabella sotto con un tot di record indicato nello script.
Ma clicccando su un numero la tabella sottostante non cambia. (sembra proprio che non ci sia collegamento tra la parte di script per la paginazione e lo script per il riempimento della tabella)
Il tutto è composto da 3 file:
Il primo contiene la classe PHP;
Il secondo contiene il form per la ricerca;
Il terzo gli script per la paginazione e per riempire la tabella (inutile sottolineare che il casino è su questo terzo file).
Sono convinto che questi script possono risultare molto utili a tantissimi utenti.
Grazie per l'aiuto!! :book:



File Paginazione

<?php
// definiamo una costante per la pagina corrente
define("SELF", $_SERVER['PHP_SELF']);

// definiamo la classe
class Paging
{
// definiamo la pagina di partenza
function paginaIniziale($max_row)
{
if ((!isset($_GET['p'])) || ($_GET['p'] == "1"))
{
$parti_da = 0;
$_GET['p'] = 1;
}else{
$parti_da = ($_GET['p']-1) * $max_row;
}
return $parti_da;
}

// contiamo le pagine e stabiliamo quanti records devono essere impaginati
function contaPagine($conta, $max_row)
{
$pgg = (($conta % $max_row) == 0) ? $conta / $max_row : floor($conta / $max_row) + 1;
return $pgg;
}

// mostriamo l'elenco delle pagine
function listaPagine($p_corrente, $pgg)
{
$listapgg = "";
if (($p_corrente != 1) && ($p_corrente))
{
$listapgg .= " <a href=\"".SELF."?p=1\">Prima pag.</a> ";
}
if (($p_corrente-1) > 0)
{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente-1)."\"><</a> ";
}
for ($i=1; $i<=$pgg; $i++)
{
if ($i == $p_corrente)
{
$listapgg .= "<b>".$i."</b>";
}else{
$listapgg .= "<a href=\"".SELF."?p=".$i."\">".$i."</a>";
}
$listapgg .= " ";
}
if (($p_corrente+1) <= $pgg)
{
$listapgg .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">></a> ";
}
if (($p_corrente != $pgg) && ($pgg != 0))
{
$listapgg .= "<a href=\"".SELF."?p=".$pgg."\">Ultima pag.</a> ";
}
$listapgg .= "</td>\n";
return $listapgg;
}

// permettiamo la navigazione per pagine precedenti e successive
function precedenteSuccessiva($p_corrente, $pgg)
{
$impaginazione = "";
if (($p_corrente-1) <= 0)
{
$impaginazione .= "Precedente";
}else{
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente-1)."\">Pag. precedente</a>";
}
$impaginazione .= " | ";
if (($p_corrente+1) > $pgg)
{
$impaginazione .= "Prossima";
}else{
$impaginazione .= "<a href=\"".SELF."?p=".($p_corrente+1)."\">Prossima pag.</a>";
}
return $impaginazione;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>

<body>
</body>
</html>



File ricerca

<?php require_once('Connections/prodotto.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="CSSprodottotesto.css" rel="stylesheet" type="text/css" />

</head>
</html>


<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title></title>
</head>

<body>
<div align="center" class="prodottotesto"><span class="Stile4"><span class="Stile5"><span class="Stile6"></span></span></span><span class="Stile11">Ricerca prodotto<br />
</span>(per non iscritti) </div>
<form action="ricercaRisultatimini.php" method="post" enctype="multipart/form-data" name="formricerca" id="formricerca">
<p>
<span class="prodottotesto">
<label>Titolo prodotto
<input name="titolo" type="text" id="titolo" size="50" />
</label>
</span></p>
<p>
<span class="prodottotesto">
<label>tipo prodotto
<select name="tipo" id="tipo">
<option value="%" selected="selected">Tutti</option>
<option value="PRODOTTO1">PRODOTTO1</option>
<option value="prodotto2">prodotto2</option>
<option>Altro tipo</option>
</select>
</label>
</span></p>
<p>
<span class="prodottotesto">
<label>Descrizione prodotto
<input name="descrizione" type="text" id="descrizione" size="50" />
</label>
</span></p>
<p>
<span class="prodottotesto">
<label></label>
</span><span class="prodottotesto">
<label>
<input type="submit" name="Submit" value="Ricerca" />
</label>
</span></p>
</form>
<div align="center" class="prodottotestobarranavig"><a href="index.php" class="Stile5">Home</a></div>
</body>
</html>

File risultati:

<?php
if (!isset($_SESSION)) {
session_start();
}
$currentPage = $_SERVER["PHP_SELF"];

require_once('Connections/Prodotto.php');

//includiamo il file della classe per la paginazione
require("Connections//paginazione.php");

//connettiamoci a MySQL e selezioniamo il database
class MySQL
{
function MySQL()
{
$this->host_name = "localhost";
$this->user_name = "user";
$this->password = "";
$this->data_name = "database";
$this->link = mysql_connect($this->host_name, $this->user_name, $this->password) or die (mysq_error());
mysql_select_db($this->data_name) or die (mysq_error());
}
}

$maxRows_ricerca = 5;
$pageNum_ricerca = 0;
if (isset($_GET['pageNum_ricerca'])) {
$pageNum_ricerca = $_GET['pageNum_ricerca'];
}
$startRow_ricerca = $pageNum_ricerca * $maxRows_ricerca;

$vartipo_ricerca = "%";
if (isset($_POST['tipo'])) {
$vartipo_ricerca = (get_magic_quotes_gpc()) ? $_POST['tipo'] : addslashes($_POST['tipo']);
}
$vardescrizione_ricerca = "%";
if (isset($_POST['descrizione'])) {
$vardescrizione_ricerca = (get_magic_quotes_gpc()) ? $_POST['descrizione'] : addslashes($_POST['descrizione']);
}
$varnome_ricerca = "%";
if (isset($_POST['nome'])) {
$varnome_ricerca = (get_magic_quotes_gpc()) ? $_POST['nome'] : addslashes($_POST['nome']);
}
mysql_select_db($database_Prodotto, $Prodotto);
$query_ricerca = sprintf("SELECT Prodotto.nome, Prodotto.tipo, Prodotto.descrizione, Prodotto.altroProdotto FROM Prodotto WHERE Prodotto.nome LIKE '%%%s%%' AND Prodotto.tipo LIKE '%%%s%%' AND Prodotto.descrizione LIKE '%%%s%%' ORDER BY Prodotto.nome", $varnome_ricerca,$vartipo_ricerca,$vardescrizione_ricerca);
$query_limit_ricerca = sprintf("%s LIMIT %d, %d", $query_ricerca, $startRow_ricerca, $maxRows_ricerca);
$ricerca = mysql_query($query_limit_ricerca, $Prodotto) or die(mysql_error());
$row_ricerca = mysql_fetch_assoc($ricerca);

if (isset($_GET['totalRows_ricerca'])) {
$totalRows_ricerca = $_GET['totalRows_ricerca'];
} else {
$all_ricerca = mysql_query($query_ricerca);
$totalRows_ricerca = mysql_num_rows($all_ricerca);
}
$totalPages_ricerca = ceil($totalRows_ricerca/$maxRows_ricerca)-1;


$data = new MySQL();

// istanziamo la classe per l'impaginazione
$p = new Paging;

// numero massimo di risultati per pagina
$max = $maxRows_ricerca;

// identifichiamo la pagina da cui iniziare la numerazione
$inizio = $p->paginaIniziale($max);

// contiamo i records nel database
$query_count = mysql_query("SELECT Prodotto.nome, Prodotto.tipo, Prodotto.descrizione, Prodotto.altroProdotto FROM Prodotto WHERE Prodotto.nome LIKE '$varnome_ricerca' AND Prodotto.tipo LIKE '$vartipo_ricerca' AND Prodotto.descrizione LIKE '$vardescrizione_ricerca' ORDER BY Prodotto.nome") or die (mysql_error());
$count = mysql_num_rows($query_count) or die (mysql_error());

// troviamo il numero delle pagine che dovrà essere contato
$pagine = $p->contaPagine($count, $max);

// limitiamo la SELECT al numero di risultati per pagina
$query = mysql_query("SELECT Prodotto.nome, Prodotto.tipo, Prodotto.descrizione, Prodotto.altroProdotto FROM Prodotto WHERE Prodotto.nome LIKE '$varnome_ricerca' AND Prodotto.tipo LIKE '$vartipo_ricerca' AND Prodotto.descrizione LIKE '$vardescrizione_ricerca' ORDER BY Prodotto.nome LIMIT ".$inizio.",".$max) or die (mysql_error());

//mostriamo le pagine
$lista = $p->listaPagine($_GET['p'], $pagine);
echo $lista . "<br>";

//mostriamo il navigatore Precedente/Successiva
$navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine);
echo $navigatore;




?>




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="CSSProdottotesto.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.Stile10 {font-weight: bold}
-->
</style>
</head>
</html><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Risultati ricerca dei Prodotto</title>

</head>

<body class="Prodottotesto">
<div align="center"><span class="Stile10"><span class="Stile11"><span class="Stile12">Risultati della ricerca dei Prodotto
</span></span></span></div>

<table width="100%" border="1">
<tr>

<td colspan="5" bgcolor="#0099FF" class="Stile3">&nbsp;</td>
</tr>
<?php do { ?><tr>
<td colspan="3"><span class="Stile8"><strong>nome:<?php echo $row_ricerca['nome']; ?></strong> </span><span class="ProdottotestoNOMI"> </span> <br />
<span class="Stile8"> </span></td>
<td colspan="2"><span class="Stile8"><strong>tipo: <?php echo $row_ricerca['tipo']; ?> </strong></span></td>
</tr>
<tr>
<td colspan="5"><span class="Stile8"><strong>Descrizione: <?php echo $row_ricerca['descrizione']; ?></strong> </span></td>
</tr>
<tr>
<td colspan="5"><span class="Stile8"><strong>Altro sul Prodotto: <?php echo $row_ricerca['altroProdotto']; ?></strong> </span></td>
</tr>
<tr>
<td colspan="5"><div align="center" class="Prodottotestobarranavig">
<div align="left"><a href="registrazione.php"><em>Nota:...</em></a></div>
</div></td>
</tr>
<tr>
<td width="177"><span class="Stile8"><strong>Nick utente:</strong><strong> </strong></span></td>
<td width="160"><span class="Stile8"><strong>Provincia:</strong> </span></td>
</tr>
<?php } while ($row_ricerca = mysql_fetch_assoc($ricerca)); ?>
</table>

<p align="center">Questa Pagina contiene un totale di <strong> Prodotto trovati</strong>.</p>
<p align="center">
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Prova a cambiare nel file ricercaRisultatimini.php questa riga

Da così:
PHP:
$count = mysql_num_rows($query_count) or die (mysql_error());

A così:
PHP:
$count = mysql_num_rows($query_count);
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
non basta inviare in get il numero della pagina, dovresti aggiungere una variabile in cui è settato l'ultimo valore per la ricerca.
 

megarospo

Utente Attivo
25 Set 2007
147
0
0
Ho fatto come suggeriva Trogo e ora la situazione è che nella tabella mi stampa i contenuti, ma non mi visualizza " 1|2|3|4|... ecc.
Mentre per quello che dice eliox (visto che sono un primate php :crying: ) ho difficolta a realizzarlo. Mi puoi far vedere come farestri tu? :book: Poi lo script rimarrà a disposizione di tutti. Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Aiuto per query PHP 8
V Query per una somma PHP 2
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
T Query per ricerca ritardo evento MS Access 7
Alex_70 actor film query per php PHP 1
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
elpirata [PHP] Query per ricercare stringa in più colonne PHP 5
S Il metodo $.getJSON() e <select> che non si popola di dati per query troppo grandey Ajax 0
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
Trapano Query in php come ordinare per data e anche per ora PHP 7
M Query mysql per selezioni random in categorie mirate PHP 4
M Access-Query per creare una tabella con la data nel nome tabella MS Access 0
L Vanno bene queste due query per estrarre da due tabelle? MySQL 6
M Query Join per 2 colonne MySQL 1
otto9due Piccolo aiutino per una query.. PHP 3
F Miglior metodo per contare le righe di una query MySQL 2
M query per distinct su data timestamp Database 1
K query per popolare una select tramite ajaxc php e xml ! Ajax 14
A [RISOLTO] Query per ricerca campo timestamp MySQL 2
N Chronoform: query UPDATE passando per il Confirmation Page Joomla 0
A [risolto] aiuto integrazione query per db calcistico MySQL 2
P [Access 2000] Export query in tanti file (uno per ogni record) MS Access 0
L radio button scattenare get per la query PHP 4
R passare una variabile in query per ORDER BY PHP 6
ivarello Raggruppare Query per mese PHP 1
J Aiuto per una query di eliminazione PHP 5
K creare uno script in php , per generare in modo automatico query PHP 2
Trapano Query per data PHP 1
Trapano Query semplicissima ma non per me :-( PHP 5
EffeElle Problema per una query di aggiornamento record php PHP 35
R Aiutino per query MySql PHP 8
P Query Mysql per inserimento multiplo MySQL 4
A Query per ricerca PHP 2
F aiuto per query UNIONE mysql MySQL 2
A Query per l'estrazione di occorrenze identiche PHP 1
A Il risultato di una query diviso per lettera PHP 2
L Query per fascie di età Classic ASP 0
E Aiuto per query PHP 8
E due query per due tabelle MySQL 22
grottafelix Query per estrazione record "a settimana" Classic ASP 1
Z query sql e script php per ordinamento dati tabella PHP 2
F query per ordine alfabetico ma... PHP 1
A Aiuto, query per Access 2003 MS Access 5
O query per db access PHP 0
giorgione_tg Per eseguire una query... PHP 6
max75 query su due tabelle e dati doppioni MS Access 2
E Query differenza tra tabelle MySQL 5
E Query Alias PHP 4
T Query con date MS Access 1
K Inserimento query Errore 1366 PHP 4

Discussioni simili