paginare risultati query in tabelle

ciao a tutti e' il mio primo post e il mio primo script php  :)

devo trovare il modo per paginare i risultati di una query in una tabella per ciascun risultato..

Come si fa? voi ne avete idea?

Ho iniziato a modificare uno script di paginazione e ora mi mostra i risultati come elenco...

GRAZIE CIAO

qs e' il codice che ho iniziato a modificare ma dovrei inserire l'output della query nelle tabelle

<?

include("include/connessione.php");

/* Mi calcolo le variabili per la paginazione */

$query="SELECT * FROM $tabella ";

$risultato=mysql_query($query);

       // echo "<ol start='" . ($begin+1) ."'>\n";

        // creo un elenco numerato per ogni record

while ($riga = mysql_fetch_assoc($risultato)) {

echo "<li>" . $riga["idlist"] . "</li>\n";

echo "<li>" . $riga["listname"] . "</li>\n";

echo "<li>" . $riga["listdescription"] . "</li>\n";

echo "<li>" . $riga["categoria"] . "</li>\n";

echo "<li>" . $riga["categoria2"] . "</li>\n";

echo "<li>" . $riga["gginvio"] . "</li>\n";

echo "<li>" . $riga["parola"] . "</li>\n";

echo "<li>" . $riga["attivazione"] . "</li>\n";

}

// ciclo sui risultati

        //echo "</ol>";

        // chiudo l'elenco numerato

mysql_close($connessione);

// chiudo la connessione

?>

inviato 10 anni fa
eppyy
X 0 X

Ma devi inserire ogni riga dell'output in una tabella, cioè:

<table><tr><td>riga1</td></tr></table>
<table><tr><td>riga2</td></tr></table>
...

oppure una riga in ogni riga della tabella:

<table>
<tr><td>riga1</td></tr>
<tr><td>riga2</td></tr>
....

</table>
...

???

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X

ciao innanzitutto grazie

poi ho provato ma mi dice:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in D:\Inetpub\webitalia\sito\php\paginazione.php on line 13

forse perche' i tag html sono dentro i tag <? ?>

??? (l'ho buttata li ma e' solo un'ipotesi)

e se volessi avere 3 di qs risultati per ogni riga?

riga 1 ris1 - ris2 - ris3

riga 2 ris4 - ris5 - ris6

....ecc...

grazie ciao

risposto 10 anni fa
eppyy
X 0 X

oppure devo usare degli apici o doppio apici?

risposto 10 anni fa
eppyy
X 0 X

non ti ho postato la soluzione alla domanda!! volevo solo sapere il layout che vuoi?

ipotesi 1

tabella1----riga1

tabella2----riga2

ipotesi 2

tabella unica

----riga1

----riga2

Quale preferisci?

risposto 10 anni fa
Nico Colonna
X 0 X

ah scusa non avevo capito

l'ideale sarebbe:

table

riga 1 --- risultato1incella1,risultato2incella2,risultato3incella3

riga 2 --- risultato4incella1,risultato5incella2,risultato6incella6

insomma una tabella con 3 colonne e n righe per i risultati

grazie mille

risposto 10 anni fa
eppyy
X 0 X

Da quello che hai scritto nel primo post, ciascuna riga contiene 8 elementi (idlist, listname, ecc.). Per cui la soluzione:

tabella

riga1(idlist1, listname1, ...)

riga2(idlist2, listname2, ...)

si risolve così:

<?php

include("include/connessione.php");
/* Mi calcolo le variabili per la paginazione */

$query="SELECT * FROM $tabella ";
$risultato=mysql_query($query);

//apro la tabella       
$contenuto = "<table>";

//ciclo di caricamento delle righe
while ($riga = mysql_fetch_assoc($risultato)) {
$contenuto .= "<tr><td>".$riga["idlist"]."</td>";
$contenuto .= "<td>".$riga["listname"]."</td>";
$contenuto .= "<td>".$riga["listdescription"]."</td>";
$contenuto .= "<td>".$riga["categoria"]."</td>";
$contenuto .= "<td>".$riga["categoria2"]."</td>";
$contenuto .= "<td>".$riga["gginvio"]."</td>";
$contenuto .= "<td>".$riga["parola"]."</td>";
$contenuto .= "<td>".$riga["attivazione"]."</td></tr>";
}

//chiudo la tabella
$contenuto .= "</table>";

//visualizzo la tabella
echo $contenuto;

mysql_close($connessione);
// chiudo la connessione

?>

Non l'ho provato ma dovrebbe andare.

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X

ciao Fred!

funziona grazie!!!

e se volessi mettere come ti dicevo 3 risultati per ogni riga?

tipo:

tabella riga1(idlist1, listname1, ...) tabella riga2(idlist2, listname2, ...)tabella riga3(idlist3, listname3, ...)

e poi cosi' via 3 risultati per riga?

grazie ancora

risposto 10 anni fa
eppyy
X 0 X

Devi utilizzare un contatore dei risultati. Ad esempio:

<?php

include("include/connessione.php");
/* Mi calcolo le variabili per la paginazione */

$query="SELECT * FROM $tabella ";
$risultato=mysql_query($query);

//apro la tabella       
$contenuto = "<table>";

$n=3;   //Fissa il numero di risultati per ogni riga
$i=0;   //Contatore per ogni riga

//ciclo di caricamento delle righe
while ($riga = mysql_fetch_assoc($risultato)) {
if ($i==0){   $contenuto .= "<tr>";}
$contenuto .= "<td>".$riga["idlist"]."</td>";
$contenuto .= "<td>".$riga["listname"]."</td>";
$contenuto .= "<td>".$riga["listdescription"]."</td>";
$contenuto .= "<td>".$riga["categoria"]."</td>";
$contenuto .= "<td>".$riga["categoria2"]."</td>";
$contenuto .= "<td>".$riga["gginvio"]."</td>";
$contenuto .= "<td>".$riga["parola"]."</td>";
$contenuto .= "<td>".$riga["attivazione"]."</td>";
$i++;
if ($i==$n){   $contenuto .= "</tr>";$i=0;}
}
//Nel caso in cui i risultati non sono in multiplo di $n
if ($i!=$n){$contenuto .= "</tr>";}

//chiudo la tabella
$contenuto .= "</table>";

//visualizzo la tabella
echo $contenuto;

mysql_close($connessione);
// chiudo la connessione

?>

uso la variabile i che parte da 0 (apro la riga) e ad ogni ciclo si incrementa, quando arrivo a 3 ($i==$n) chiudo la riga. Se il numero dei risultati non è multplo di 3 ($n) all'interno del ciclo non ho chiuso la riga, per cui devo farlo fuori.

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X

l'ho provato e funziona.

Poi l'ho implementato a quello che stavo modificando ed e' come se non lo leggesse...

ti ho postato il codice...

grazie ancora

<?php

include("include/connessione.php");
/* Mi calcolo le variabili per la paginazione */

$query="SELECT * FROM $tabella ";
$risultato=mysql_query($query);

//apro la tabella       
$contenuto = "<table width=54% border=1>";

$n=3;   //Fissa il numero di risultati per ogni riga
$i=0;   //Contatore per ogni riga

//ciclo di caricamento delle righe
while ($riga = mysql_fetch_assoc($risultato)) {
if ($i==0){   $contenuto .= "<tr>";}
$contenuto .= "<td width=15%><input type=checkbox name=checkbox value=checkbox></td>";
$contenuto .= "<td width=23%>".$riga["img"]."</td>";
$contenuto .= "<td width=62%>".$riga["listname"]."</td></tr>";
$contenuto .= "<tr><td colspan=2>".$riga["img"]."</td>";
$contenuto .= "<td rowspan=3>".$riga["listdescription"]."</td></tr>";
$contenuto .= "<tr><td colspan=2>".$riga["img"]."</td></tr>";
$contenuto .= "<tr><td colspan=2>".$riga["esempio"]."</td>";
$i++;
if ($i==$n){   $contenuto .= "</tr>";$i=0;}
}
//Nel caso in cui i risultati non sono in multiplo di $n
if ($i!=$n){$contenuto .= "</tr>";}


//chiudo la tabella
$contenuto .= "</table>";

//visualizzo la tabella
echo $contenuto;

mysql_close($connessione);
// chiudo la connessione

?>
risposto 10 anni fa
eppyy
X 0 X

volevo inserire una tabella piu' complessa come quella che ti scrivo sotto e seguendo le tue istruzioni funzionava.

cioe' mi dava i risultati impaginati uno per riga.

Ho cercato di implementare poi la modifica che mi hai scritto per avere 3 risultati su una riga ma non funziona.

Ho provato a togliere </tr> dalla fine e a fare altre prove ma nulla mi rida' lo stesso risultato che avevo avuto prima...

ecco la tabella: GRAZIE ANCORA

<table width="54%" border="1">

  <tr>

    <td width="15%"><input type="checkbox" name="checkbox" value="checkbox"></td>

    <td width="23%">img</td>

    <td width="62%">listname</td>

  </tr>

  <tr>

    <td colspan="2">dettagli</td>

    <td rowspan="3">descrizione</td>

  </tr>

  <tr>

    <td colspan="2">archivio</td>

  </tr>

  <tr>

    <td colspan="2">esempio</td>

  </tr>

</table>

risposto 10 anni fa
eppyy
X 0 X

perchè al posto di fare un a tabella per ogni iterazione non fai una cosa del genere:

echo "<table>";

while ($dati = mysql_fetch_array($select))

{

echo "<tr><td>$dati[nomecampo]</td></tr>"

}

echo "</table>";

in modo da generare una tebella con tante righe quanti  record ci sono nel db... :)

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

credo serva una tabella per ogni set di risultati paginati 3 a 3 per riga.

L'unica cosa che non riesco a capire e' perche' impostando quella tabella non funziona.

Hai idea?

grazie mille

ciao

risposto 10 anni fa
eppyy
X 0 X

si prova i tag in questo modo

echo '<table>';

con

echo '<table width="200" border="0" cellspacing="0" cellpadding="0">';

dovrebbe andare

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

ciao in verita' non ho capito molto e scusa non credo sia colpa tua poiche' la mia conoscenza di php e' iniziata questo pomeriggio...me la cavicchio con asp   :'( :2funny:

In ogni caso ho proseguito avendo capito la sintassi e ho creato quello che mi serviva.

Il db mi restituisce il risultato A che inserisce in una tabella A

e poi il risultato B che inserisce nella tabella b

e cosi' via.

Le tabelle le inserisce una sotto l'altra

tabella A con il dato A

tabella B con il dato B

ecc...

Vorrei a qs punto poterle mettere 3 di qs tabelle per riga...

FRED mi ha dato una mano precedentemente ma non riesco a farlo andare a posto.

vi posto il codice (almeno in parte...)

<?php

include("include/connessione.php");

/* Mi calcolo le variabili per la paginazione */
$query="SELECT * FROM $tabella ";
$risultato=mysql_query($query);

//apro la tabella       
$contenuto = "<tr>";;


//ciclo di caricamento delle righe
while ($riga = mysql_fetch_assoc($risultato)) {

$contenuto .= "<td><table=center></td>";
$contenuto .= "<table height=128 cellspacing=0 cellpadding=0 width=183 bgcolor=#ffffff border=0 align=center>";
$contenuto .= "<tbody>";
$contenuto .= "<tr>";
$contenuto .= "<td colspan=3>";
$contenuto .= "<table cellspacing=0 cellpadding=0 width=100% border=0 align=center>";
$contenuto .= "<tbody>";
$contenuto .= "<tr>";

poi prosegue per 60 righe con altrettante istruzioni

$contenuto .="" le variabili sono piu' avanti ma funziona la paginazione...

e poi conclude in qs modo:

$contenuto .= "</tr>"
$contenuto .= "</tbody>"
$contenuto .= "</table>"
$contenuto .= "</td>"
$contenuto .= "</tr>"
$contenuto .= "</tbody>"
$contenuto .= "</table>"
}


//chiudo la tabella
$contenuto .= "</table>";

//visualizzo la tabella
echo $contenuto;

mysql_close($connessione);
// chiudo la connessione

?>

COME FACCIO AD AVERE 3 TABELLE PER OGNI RIGA?

GRAZIE INFINITE!

risposto 10 anni fa
eppyy
X 0 X

prova con questo:

<?php

include("include/connessione.php");
/* Mi calcolo le variabili per la paginazione */

$query="SELECT * FROM $tabella ";
$risultato=mysql_query($query);

//apro la tabella       
$contenuto = "<table>";

$n=3;   //Fissa il numero di risultati per ogni riga
$i=0;   //Contatore per ogni riga

//ciclo di caricamento delle righe
while ($riga = mysql_fetch_assoc($risultato)) {
if ($i==0){   $contenuto .= "<tr>";}
$contenuto .= "<td><table width=\"54%\" border=\"1\">";

$contenuto .= "<tr>";
$contenuto .= "<td width=\"15%\"><input type=\"checkbox\" name=\"checkbox\" value=\"checkbox\"></td>";
$contenuto .= "<td width=\"23%\">".$riga["image"]."</td>";
$contenuto .= "<td width=\"62%\">".$riga["listname"]."</td>";
$contenuto .= "</tr>";

$contenuto .= "<tr>";
$contenuto .= "<td colspan=\"2\">".$riga["img"]."</td>";
$contenuto .= "<td rowspan=\"3\">".$riga["listdescription"]."</td>";
$contenuto .= "</tr>";

$contenuto .= "<tr>";
$contenuto .= "<td colspan=\"2\">".$riga["img"]."</td>";
$contenuto .= "</tr>";

$contenuto .= "<tr>";
$contenuto .= "<td colspan=\"2\">".$riga["esempio"]."</td>";
$contenuto .= "</tr>";

$contenuto .= "</table></td>";
$i++;
if ($i==$n){   $contenuto .= "</tr>";$i=0;}
}
//Nel caso in cui i risultati non sono in multiplo di $n
if ($i!=$n){$contenuto .= "</tr>";}

//chiudo la tabella
$contenuto .= "</table>";

//visualizzo la tabella
echo $contenuto;

mysql_close($connessione);
// chiudo la connessione

?>

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X

 :'(  :'(  :'(

non cambia nulla purtroppo

adesso la situazione e' qs:

tabella1

tabella2

tabella3

tabella3

ecc...

e dovrebbe diventare preferibilmente

tabella1  tabella2  tabella3

ciaoo grazie

risposto 10 anni fa
eppyy
X 0 X

mandami il codice html che ti restituice.

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X

http://www.advstore.it/index/pagdef.php

un esempio senza immagini...da cui puoi vedere che ci sono N tabelle una sotto l'altra

come si fa?

grazie ancora ciao

risposto 10 anni fa
eppyy
X 0 X

Giusto per conferma, questo è l'output del codice che ti ho modificato?

risposto 10 anni fa
Nico Colonna
X 0 X

ciao Fred

allora quello che mi hai mandato tu l'ho riprovato e funziona

solamente che la tabella che contiene i risultati e che va riproposta 3 per riga e' molto piu' complessa. ti metto tutto il cod html. Quello che vorrei capire e' che tipo di funzionamento produce lo script perche' magari essendo la <table> inserita in un'altra <table> con <tbody> ecc... genera allo script dei casini...

ecco il codice

<td><table=center></td>
<table height=128 cellspacing=0 cellpadding=0 width=183 bgcolor=#ffffff border=0 align=center>
<tbody>
<tr>
<td colspan=3>
<table cellspacing=0 cellpadding=0 width=100% border=0 align=center>
<tbody>
<tr>
<td width=3 background=http://www.advstore.it/NUOVO-/NUOVO-/button%20centre%20blu.gif></td>
<td align=left width=12 background=http://www.advstore.it/NUOVO-/NUOVO-/button%20centre%20blu.gif><input name=idlist type=checkbox value=".$riga["idlist"]."></td>
<td height=1 align=left background=http://www.advstore.it/NUOVO-/NUOVO-/button%20centre%20blu.gif><font color=#ffffff size=1 face=Verdana, Arial, Helvetica, sans-serif><strong>".$riga["listname"]."</strong></font></td>
<td width=3 background=http://www.advstore.it/NUOVO-/NUOVO-/button%20centre%20blu.gif></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width=1 bgcolor=#e7e7e9><img height=1 src=http://www.advstore.it/index/images/punto.gif width=1></td>
<td align=middle>
<table height=100% cellspacing=0 cellpadding=0 width=170 border=0>
<tbody>
<tr>
<td>
<tr>
<td><img height=3 src=http://www.advstore.it/index/images/punto.gif width=1></td>
</tr>
<tr>
<td><table height=100 cellspacing=0 cellpadding=0 width=100% border=0>
<tbody>
<tr>
<td valign=top align=middle><img src=http://www.advstore.it/index/img-box-newsletter/".$riga["img"].".jpg></td>
</tr>
<tr>
<td><img height=5 src=http://www.advstore.it/index/images/punto.gif width=1></td>
</tr>
<tr>
<td><table height=43 cellspacing=0 cellpadding=0 width=100% background=http://www.advstore.it/index/bg_attiva.gif border=0>
<tbody>
<tr>
<td valign=center align=middle><font size=1><a href=http://www.advstore.com/index/dettaglio.php?idlist=".$riga["idlist"]."><img src=http://www.advstore.it/index/images/dettagli.gif border=0></a></td>
</tr>
<tr>
<td valign=Center align=middle></td>
</tr>
<tr>
<td valign=Center align=middle><font size=1><a href=http://www.advstore.it/index/include/prova2.php?idlist=".$riga["idlist"]."><img src=http://www.advstore.it/index/images/archivio-blu.gif border=0></td></font></a></td>
</tr>
<tr>
<td valign=center align=middle><font size=1><a href=".$riga["url2"]."><img src=http://www.advstore.it/index/images/".$riga["indice"].".gif border=0></a></td></font></td>
</tr>
</tbody>
</table>
</td>
<td><img height=1 src=http://www.advstore.it/index/images/punto.gif width=3></td>
</tr>
</tbody>
</table>
</td>
<td style=line-height: 12px><font size=1 face=Verdana, Arial, Helvetica, sans-serif>".$riga["listdescription"]."</font></td>
</tr>
<tr>
</tr>
</tbody>
</table>
</td>
<td width=1 bgcolor=#e7e7e9><img height=1 src=http://www.advstore.it/index/images/punto.gif width=1></td>
</tr>
<tr>
<td colspan=3>
<table cellspacing=0 cellpadding=0 width=100 border=0>
<tbody>
<tr>
<td width=5 bgcolor=#ffffff><img src=http://www.advstore.it/index/images/left_smussolineaGC_inf_sx.gif></td>
<td background=http://www.advstore.it/index/images/left_pezzolineaGC_inf.gif><img height=1 src=http://www.advstore.it/index/images/punto.gif width=173></td>
<td width=5 bgcolor=#ffffff><img src=http://www.advstore.it/index/images/left_smussolineaGC_inf_dx.gif></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br>

grazie ancora tanto!

risposto 10 anni fa
eppyy
X 0 X

In generale non è un problema inserire 3 tabelle in una riga, ciò che bisogna fare è inserire i tag <table>...</table> all'interno delle celle <td>...</td> della riga. Per cui 3 tabelle in una riga si inseriscono così:

<table>
<tr>                   <!--apri riga-->
 <td>                 <!--apri cella-->

   <table>
    <tr>
     <td>primo risultato</td>
    </tr>
   </table>

  </td>                <!--chiudi cella-->
  <td>                 <!--apri cella-->

   <table>
    <tr>
     <td>secondo risultato</td>
    </tr>
   </table>

  </td>                <!--chiudi cella-->
  <td>                 <!--apri cella-->

   <table>
    <tr>
     <td>terzo risultato</td>
    </tr>
   </table>

  </td>                <!--chiudi cella-->
 </tr>                  <!--chiudi riga-->
</table>

Per inserire più righe devi ripeter il codice compreso tra i tag <table> e </table>.

Resta da inserire il risultato della query in primo risultato, secondo risultato, ecc.

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X

FRED, non so come ringraziarti.

grazie per avermi aiutato ma soprattutto aiutato a capire spiegandomi i meccanismi. Ora ho capito.

Mi e' semplicemente bastato spostare il primo </td> alla fine dell'html che ti ho postato.

ho fatto come hai detto tu.

grazie mille

risposto 10 anni fa
eppyy
X 0 X

 ;D O0

 :bye:

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