Newsgroup: it.comp.www.php
Titolo: query e pagine web.

Ciao a tutti,
avrei bisogno del vostro aiuto in merito a una questione molto diffusa, chi 
mi saprebbe fornire uno script che gestisca l'impaginazione di più campi una 
volta letto da un database.
Mi spiego meglio con un esempio, cosi in effetti sono stato un po' 
complicato e contorto.
Supponiamo di avere un database con CODICE + DESCRIZIONE + PREZZO io devo 
visualizzare per esempio 30 articoli per pagina (1-30, 31-60  etc). un po' 
come avviene  ad esempio in google. in corrispondenza di "pagine dei 
risultati"
Grazie in anticipo a chi vorrà aiutarmi in tal senso.
Cooper.
-- 
BlueWare Web Agency
   [http:] 
www.blueware.it
   [msn:] 
coo...@blueware.it
   [icq:] 146781935 


se chiedere è umano, farlo senza aver prima cercato su google est 
diabolicum. 

 ha scritto nel messaggio 
news:3adq2lF...@individual.net...

E' più corretto non "chiedere è umano" ma "chiedere è lecito" ....e 
rispondere è cortesia.
Ho cercato su google ma non sono venuto a capo di qualcosa che potesse fare 
al caso mio.
Google è un motore di ricerca non uno sviluppatore di script. Intendiamoci 
io non chiedo uno script scritto solo per me, ma qualcosa di già pronto che 
si avvicini a quanto chiesto.
Sicuramente qualcuno/a qui avrà qualcosa del genere o archiviato da qualche 
parte, per cui avendolo usato mi può essere d'aiuto molto meglio di quanto 
possa fare google.
Io ho chiesto qui sia perchè oggetto del newsgroup sia perchè in casi 
specifici è meglio affidarsi a una persona con esperienza e professionalità 
piuttosto che a una macchina che manca di queste due caratteristiche.


Rintoccavano le 19:11, mercoledě 23 marzo 2005, quando Cooper vocifero' che
...
puoi utilizzare la key word specifica del db che usi. Nel caso di mysql, ad
esempio, la query da inviare potrebbe avere una struttura del tipo:
select {<nomi_campi>|*} from <nome_tabella> [where <condizioni>] limit
<record_iniziale_da_visualizzare> <num_record_da_visualizzare>
E' ovvio che <record_iniziale_da_visualizzare> ed eventualmente
<num_record_da_visualizzare> saranno variabili opportunamente trattate da
php e passate ed aggiornate di pagina in pagina tramite metodo get, post...
-- 
Questo messaggio si autodistruggera' entro 10"
    _     _
  o' |,=./ `o
     (o o)    
 ooO--(_)--Ooo-


Ok grazie ma non mi riferivo a questo, ma allo script che gestisce le pagine 
(tipo quello di google)
Insomma se c'era qualcosa di già pronto che ad esempio legge i record del db 
e vede che sono 300 e li distribuisce in 10 pagine, visualizzando le pagine 
mettiamo 1-5 e poi il tasto avanti (pagina successiva) o indietro (pagina 
precedente).
Questo per intenderci.


 Cooper.
<?php
    include_once("dbConnection.php");
    include_once("header.php");
$initStartLimit = 0;
$limitPerPage = 10;
$startLimit = $_REQUEST['startLimit'];
$numberOfRows = $_REQUEST['rows'];
$sortBy = $_REQUEST['sortBy'];
$sortOrder = $_REQUEST['sortOrder'];
if ($startLimit=="")
{
        $startLimit = $initStartLimit;
}
if ($numberOfRows=="")
{
        $numberOfRows = $limitPerPage;
}
if ($sortOrder=="")
{
        $sortOrder  = "DESC";
}
if ($sortOrder == "DESC") { $newSortOrder = "ASC"; } else  { $newSortOrder = "DESC"; }
$limitQuery = " LIMIT ".$startLimit.",".$numberOfRows;
$nextStartLimit = $startLimit + $limitPerPage;
$previousStartLimit = $startLimit - $limitPerPage;
if ($sortBy!="")
{
        $orderByQuery = " ORDER BY ".$sortBy." ".$sortOrder;
}
$sql = "SELECT   * FROM codici".$orderByQuery.$limitQuery;
$result = MYSQL_QUERY($sql);
$numberOfRows = MYSQL_NUM_ROWS($result);
if ($numberOfRows==0) {  
?>
Sorry. No records found !!
<?
}
else if ($numberOfRows>0) {
    $i=0;
?>
<br>
<?
if ($_REQUEST['startLimit'] != "")
{
?>
<a href="<? echo  $_SERVER['PHP_SELF']; ?>?startLimit=<? echo $previousStartLimit; ?>&limitPerPage=<? echo $limitPerPage; ?>&sortBy=<? echo $sortBy; ?>&sortOrder=<? echo $sortOrder; ?>">Previous <? echo $limitPerPage; ?> Results</a>....
<? } ?>
<?
if ($numberOfRows == $limitPerPage)
{
?>
<a href="<? echo $_SERVER['PHP_SELF']; ?>?startLimit=<? echo $nextStartLimit; ?>&limitPerPage=<? echo $limitPerPage; ?>&sortBy=<? echo $sortBy; ?>&sortOrder=<? echo $sortOrder; ?>">Next <? echo $limitPerPage; ?> Results</a>
<? } ?>
<br><br>
<TABLE CELLSPACING="0" CELLPADDING="3" BORDER="0" WIDTH="100%">
    <TR>
        <TD>
            <a href="<? echo $PHP_SELF; ?>?sortBy=codice&sortOrder=<? echo $newSortOrder; ?>&startLimit=<? echo $startLimit; ?>&rows=<? echo $limitPerPage; ?>">
                <B>Codice</B>
            </a>
</TD>
        <TD>
            <a href="<? echo $PHP_SELF; ?>?sortBy=descrizione&sortOrder=<? echo $newSortOrder; ?>&startLimit=<? echo $startLimit; ?>&rows=<? echo $limitPerPage; ?>">
                <B>Descrizione</B>
            </a>
</TD>
        <TD>
            <a href="<? echo $PHP_SELF; ?>?sortBy=prezzo&sortOrder=<? echo $newSortOrder; ?>&startLimit=<? echo $startLimit; ?>&rows=<? echo $limitPerPage; ?>">
                <B>Prezzo</B>
            </a>
</TD>
    </TR>
<?
    while ($i<$numberOfRows)
    {
        if (($i%2)==0) { $bgColor = "#FFFFFF"; } else { $bgColor = "#C0C0C0"; }
    $thisCodice = MYSQL_RESULT($result,$i,"codice");
    $thisDescrizione = MYSQL_RESULT($result,$i,"descrizione");
    $thisPrezzo = MYSQL_RESULT($result,$i,"prezzo");
?>
    <TR BGCOLOR="<? echo $bgColor; ?>">
        <TD><? echo $thisCodice; ?></TD>
        <TD><? echo $thisDescrizione; ?></TD>
        <TD><? echo $thisPrezzo; ?></TD>
    <TD><a href="editCodici.php?codiceField=<? echo $thisCodice; ?>">Edit</a></TD>
    <TD><a href="confirmDeleteCodici.php?codiceField=<? echo $thisCodice; ?>">Delete</a></TD>
    </TR>
<?
        $i++;
    } // end while loop
?>
</TABLE>
<br>
<?
if ($_REQUEST['startLimit'] != "")
{
?>
<a href="<? echo  $_SERVER['PHP_SELF']; ?>?startLimit=<? echo $previousStartLimit; ?>&limitPerPage=<? echo $limitPerPage; ?>&sortBy=<? echo $sortBy; ?>&sortOrder=<? echo $sortOrder; ?>">Previous <? echo $limitPerPage; ?> Results</a>....
<? } ?>
<?
if ($numberOfRows == $limitPerPage)
{
?>
<a href="<? echo $_SERVER['PHP_SELF']; ?>?startLimit=<? echo $nextStartLimit; ?>&limitPerPage=<? echo $limitPerPage; ?>&sortBy=<? echo $sortBy; ?>&sortOrder=<? echo $sortOrder; ?>">Next <? echo $limitPerPage; ?> Results</a>
<? } ?>
<br><br>
<?
} // end of if numberOfRows > 0
?>
<?php
    include_once("footer.php");
?> 


[cut]
Grazie per il codice, sei stato molto gentile, adesso lo provo e ci studio 
sopra.


 Cooper.
okkio che manca l'id..
se posti la tabella in formato sql si fa prima


intendi separata dal codice e quindi caricata direttamente sul db tramite 
phpmyadmin?


 (pagina precedente).
...beh, di bello e pronto conosco i "panini" che vendono da mcdonald e
attivita' simili. Pensavo bastasse l'input, l'idea. 
Lo script php che rende possibile la cosa è composto da poche righe di
codice comunque mutevole in base alle proprie esigenze (ad esempio l'uso
del metodo get, post o semplicemente tramite link, controlli
sull'attendibilita' dei valori passati, righe differenziate per colore,
disponibilita' di campi all'interno della tabella in grado di accogliere
l'input o la scelta dell'utente ecc...)



Fai bene a sollevare queste problematiche, ma non mi sembra di averle 
chieste, avevo chiesto un qualcosa di generico già buttato li su quattro 
righe (per essere concisi avevo chiesto il "nucleo" di questo script su cui 
poi costruire tutto il resto).
