phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Impaginare con php

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Rispondi
Avatar utente
brividorosanero
Utente
Utente
Messaggi: 44
Iscritto il: 17/06/2011, 15:33
Sesso: Maschio
Versione: 3.0.9
Server: UNIX/Linux
PHP: 5.2.13
Database: mysql
Località: Danimarca
Contatta:

Impaginare con php

Messaggio da brividorosanero » 25/06/2011, 18:10

Ciao ragazzi. Ho creato da poco un guestbook in php che si appoggia a database MySQL. Per adesso lo sto provando in locale con easyPHP. L'unico problema che mi è rimasto, è di impaginare i vari commenti presi dal database. Vi posto il codice:

Codice: Seleziona tutto

<?php
	function leggi()
	{
	$data_server="localhost";
	$data_user="root";
	$data_pass="";
	$x_pag = 2;     //numero max di righe da visualizzare
	$pag = isset($_GET['page']) && $_GET['page'] > 1 ? (int) $_GET['page'] : 1;
	$connection= mysql_connect("$data_server", "$data_user", "$data_pass") or die(mysql_error());
	mysql_select_db("guestbook", $connection) or die(mysql_error());
	$all_rows = mysql_query("SELECT * FROM firma ORDER BY data DESC", $connection); //numero di righe totale
	$all_pages= ceil($all_rows/$x_pag); //numero di pagine totali
	$first = ($pag - 1) * $x_pag; //calcola da quale riga deve partire a visualizzare
	$rs = mysql_query("SELECT * FROM firma ORDER BY data DESC LIMIT $first, $x_pag"); //prende i primi $x_pag record a partire da $first
	$nr = mysql_num_rows($rs); //numero di record
	if ($nr != 0)
	{
		for($x = 0; $x < $nr; $x++)
		{
			$row = mysql_fetch_row($rs);
			$nominativo = $row[1];
			$messaggio= $row[2];
			$data= $row[3];
			$parti_data = explode(" ", $data);
			$data_comp=$parti_data[0];
			$parti= explode("-", $data_comp);
			$anno= $parti[0];
			$mese= $parti[1];
			$giorno= $parti[2];
			$orario= $parti_data[1];
			echo "<table cellpadding=\"5\" style=\"
				background-color: #FF99FF;
				border-collapse: collapse;\">";
				echo "
						<tr>
						<td style=\"
						width: 100px;
						border: 1pt solid;\"> 
						<span style=\"
						font-size: 14pt;
						font-weight: bold;\"> $nominativo </span> <br /> <br />
						$giorno-$mese-$anno <br />
						$orario</td>
						<td style=\"
						width: 750px;
						border: 1pt solid;
						text-align: left;\">
						$messaggio </td>
						</tr>";
			echo "</table>";
		}
	}
	else
	{
		echo "Nessun record trovato!";
	}
	if ($all_pages > 1)
	{
		if ($pag > 1)
		{
			echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "\">";
			echo "Pagina Indietro</a>&nbsp;";
		} 
		if ($all_pages > $pag)
		{
			echo "<a href=\"".$_SERVER['PHP_SELF']."?pag=".($pag+1) ."\">";
			echo "Pagina Avanti</a>";
		} 
	}

	mysql_close($connection);
	}
?>
E' come se $pag rimanesse sempre a 1. Infatti quando clicco su pagina successiva mi fa vedere sempre gli stessi record. Io penso che l'errore sia su:

Codice: Seleziona tutto

$pag = isset($_GET['page']) && $_GET['page'] > 1 ? (int) $_GET['page'] : 1;
Ma non so come correggerlo. Qualcuno mi può dare una mano? Grazie!
Immagine

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Impaginare con php

Messaggio da Carlo » 25/06/2011, 18:32

Il tuo codice non è ben ottimizzato.

Se per caso vuoi estrarre 10 record per pagina, ecco una bozza di codice:

Codice: Seleziona tutto

<?php
$pag = (isset($_GET['page']) && is_numeric($_GET['page'])) ? $_GET['page'] : 1;
$per_pagina = 10;

$sql = "SELECT * FROM firma ORDER BY data DESC LIMIT " . (($per_pagina * $pag) - ($per_pagina - 1)) . "," . $per_pagina;
?>
Con questo codice, se per esempio sei nella pagina 2, estrae 10 record, partendo dall'11° record, se sei nella pagina 3, estrae 10 record a partire dal 21° record, e così via.
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Avatar utente
brividorosanero
Utente
Utente
Messaggi: 44
Iscritto il: 17/06/2011, 15:33
Sesso: Maschio
Versione: 3.0.9
Server: UNIX/Linux
PHP: 5.2.13
Database: mysql
Località: Danimarca
Contatta:

Re: Impaginare con php

Messaggio da brividorosanero » 25/06/2011, 18:44

Si Carlo è proprio quello che vorrei fare, adesso provo il codice che mi hai dato e ti faccio sapere. Grazie!
Immagine

Avatar utente
brividorosanero
Utente
Utente
Messaggi: 44
Iscritto il: 17/06/2011, 15:33
Sesso: Maschio
Versione: 3.0.9
Server: UNIX/Linux
PHP: 5.2.13
Database: mysql
Località: Danimarca
Contatta:

Re: Impaginare con php

Messaggio da brividorosanero » 25/06/2011, 19:08

Ciao Carlo ho provato il tuo codice però non mi compare più il link di "Pagina avanti" sotto la tabella. Anche questa parte di codice secondo me è da ottimizzare:

Codice: Seleziona tutto

if ($all_pages > 1)
   {
      if ($pag > 1)
      {
         echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "\">";
         echo "Pagina Indietro</a>&nbsp;";
      }
      if ($all_pages > $pag)
      {
         echo "<a href=\"".$_SERVER['PHP_SELF']."?pag=".($pag+1) ."\">";
         echo "Pagina Avanti</a>";
      }
   }

Immagine

Avatar utente
brividorosanero
Utente
Utente
Messaggi: 44
Iscritto il: 17/06/2011, 15:33
Sesso: Maschio
Versione: 3.0.9
Server: UNIX/Linux
PHP: 5.2.13
Database: mysql
Località: Danimarca
Contatta:

Re: Impaginare con php

Messaggio da brividorosanero » 25/06/2011, 19:13

Avevo fatto un errore io, adesso mi visualizza "pagina avanti" però come prima mi visualizza sempre gli stessi record anche quando cambio pagina cliccando su pagina successiva
Immagine

Avatar utente
brividorosanero
Utente
Utente
Messaggi: 44
Iscritto il: 17/06/2011, 15:33
Sesso: Maschio
Versione: 3.0.9
Server: UNIX/Linux
PHP: 5.2.13
Database: mysql
Località: Danimarca
Contatta:

Re: Impaginare con php

Messaggio da brividorosanero » 25/06/2011, 21:16

Ho risolto, c'era anche un errore in:

Codice: Seleziona tutto

"?pag="
Ho rinominato in

Codice: Seleziona tutto

"?page="
Perchè $_GET ha dentro 'page" e non 'pag' (avevo scritto $_GET['page'])
Immagine

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti