Ciao a tutti, premetto che sto imparando gradualmente PHP e che non è da molto che ci "smanetto".
Sto diventando matto per un problema.

Ho un DB ("users") con una tabella ("utenti") con 3 campi: id, nome, cognome.

Ho creato una pagina php che estrae i dati contenuti nel DB, li mette in tabella e, per ogni elemento, dà la possibilità di cancellare uno o più elementi selezionando la rispettiva checkbox.

Fin qui tutto ok.

Il problema è che il database contiene un numero veramente enorme di valori ed io vorrei suddividere questi record estratti facendo apparire il numero delle pagine con le freccine avanti e indietro

es: << 1, 2 ... 5 >>

Ora: in Internet, come pure su html.it ho trovato delle ottime guide che spiegano come ottenere questa cosa comunemente chiamata 'paginazione'...però non riesco ad integrarle nel mio codice. Credo che il problema sia dovuto al fatto che sia la cancellazione che la paginazione utilizzano le variabili _GET e che io non riesco correttamente a gestire, proprio perché sono ancora un po' imbranato...

Mi potreste gentilmente aiutare?

Questo è il codice della pagina mostra_nomi.php e che funziona bene


Codice PHP:
<?php
$DB_host     
'localhost';
$DB_user     'root';
$DB_password '';
$DB_name     'users';

//connessione al DB
$link mysql_connect($DB_host$DB_user$DB_password);

if (!
$link) {

die (
'Non riesco a connettermi: ' mysql_error());

}

$db_selected mysql_select_db($DB_name$link);

if (!
$db_selected) {

die (
"Errore nella selezione del database: " mysql_error());

}

if(
$_POST)

{

$ids = isset($_POST['id']) ? $_POST['id'] : array();

elimina_record($ids);

}

elseif(isset(
$_GET['id']))

{

elimina_record(array($_GET['id']));

}

else

mostra_lista();

function 
mostra_lista()

{

// mostro un eventuale messaggio

if(isset($_GET['msg']))

echo 
'[b]'.htmlentities($_GET['msg']).'[/b]

'
;

// preparo la query

$query "SELECT id,nome,cognome FROM utenti";

// invio la query
$result mysql_query($query);


// controllo l'esito

if (!$result) {

die(
"Errore nella query $query: " mysql_error());

}


echo 
'<form name="form1" method="post" action="">

<table border="1">

<tr>

<th></th>

<th>Nome</th>

<th>Cognome</th>

<th></th>

</tr>'
;


while (
$row mysql_fetch_assoc($result))

{

$nome htmlentities($row['nome']);
$cognome htmlentities($row['cognome']);

// preparo il link per la modifica dei dati del record

$link $_SERVER['PHP_SELF'].'?id=' $row['id'];

echo 
"<tr>

<td><input name=\"id[]\" type=\"checkbox\" value=\"
$row[id]\" /></td>

<td>
$nome</td>

<td>
$cognome</td>

<td><a href=\"
$link\">elimina</a></td>

</tr>"
;

}


echo 
'</table>




<input type="submit" name="Submit" value="Elimina record selezionati" />

</form>'
;

// libero la memoria di PHP occupata dai record estratti con la SELECT

mysql_free_result($result);


// chiudo la connessione a MySQL

mysql_close();

}

function 
elimina_record($ids)

{
// verifico che almeno un id sia stato selezionato

if(count($ids) < 1)

{

$messaggio urlencode("Nessun record selezionato!");

header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);

exit;

}


// per precauzione converto gli ID in interi

$ids array_map('intval',$ids);

// creo una lista di ID per la query

$ids implode(',',$ids);

// preparo la query

$query "DELETE FROM utenti WHERE id IN ($ids)";

// invio la query

$result mysql_query($query);

// controllo l'esito

if (!$result) {

die(
"Errore nella query $query: " mysql_error());

}


// conto il numero di record cancellati

$num_record mysql_affected_rows();


// chiudo la connessione a MySQL

mysql_close();

 

$messaggio urlencode("Numero record cancellati: $num_record");

header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);

}

?>
Questa è la pagina sorella di quella sopra che dovrebbe mostrare i risultati della query spalmandoli su più pagine (ma non funziona ):

Codice PHP:
<?php
$DB_host     
'localhost';
$DB_user     'root';
$DB_password '';
$DB_name     'users';


//Connetto al database


$link mysql_connect($DB_host$DB_user$DB_password);

if (!
$link) {

die (
'Errore durante la connessione: ' mysql_error());

}


$db_selected mysql_select_db($DB_name$link);

if (!
$db_selected) {

die (
"Errore durante la selezione del database: " mysql_error());

}


if(
$_POST)

{

$ids = isset($_POST['id']) ? $_POST['id'] : array();

elimina_record($ids);

}

elseif(isset(
$_GET['id']))

{

elimina_record(array($_GET['id']));

}

else

mostra_lista();


function 
mostra_lista()

{

// mostro un eventuale messaggio

if(isset($_GET['msg']))

echo 
'[b]'.htmlentities($_GET['msg']).'[/b]

'
;

//---------------------------codice per elenco pagine
// esecuzione prima query
$count mysql_query("SELECT COUNT(id) FROM utentii");
$res_count mysql_fetch_row($count);

// numero totale di records
$tot_records $res_count[0];

// risultati per pagina(secondo parametro di LIMIT)
$per_page 2;

// numero totale di pagine
$tot_pages ceil($tot_records $per_page);

// pagina corrente
$current_page = (!$_GET['page']) ? : (int)$_GET['page'];

// primo parametro di LIMIT
$primo = ($current_page 1) * $per_page;

//-------------------------------------------------

// preparo la query

$query "SELECT id,nome,cognome FROM utenti LIMIT $primo$per_page;";

 

// invio la query
$result mysql_query($query);


// controllo l'esito

if (!$result) {

die(
"Errore nella query $query: " mysql_error());

}

 

echo 
'

<form name="form1" method="post" action="">

<table border="1">

<tr>

<th></th>

<th>Nome</th>

<th>Cognome</th>

<th></th>

</tr>'
;


while (
$row mysql_fetch_assoc($result))

{

$nome htmlentities($row['nome']);
$cognome htmlentities($row['cognome']);

 

// preparo il link per la modifica dei dati del record

$link $_SERVER['PHP_SELF'].'?id=' $row['id'];

 

echo 
"<tr>

<td><input name=\"id[]\" type=\"checkbox\" value=\"
$row[id]\" /></td>

<td>
$nome</td>

<td>
$cognome</td>

<td><a href=\"
$link\">elimina</a></td>

</tr>"
;

}


echo 
'</table>




<input type="submit" name="Submit" value="Elimina record selezionati" />

</form>'
;

 

// libero la memoria di PHP occupata dai record estratti con la SELECT

mysql_free_result($result);


// chiudo la connessione a MySQL

mysql_close();

}

 

function 
elimina_record($ids)

{
// verifico che almeno un id sia stato selezionato

if(count($ids) < 1)

{

$messaggio urlencode("Nessun record selezionato!");

header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);

exit;

}

 

// per precauzione converto gli ID in interi

$ids array_map('intval',$ids);

 

// creo una lista di ID per la query

$ids implode(',',$ids);

 

// preparo la query

$query "DELETE FROM utenti WHERE id IN ($ids)";

 

// invio la query

$result mysql_query($query);

 

// controllo l'esito

if (!$result) {

die(
"Errore nella query $query: " mysql_error());

}

 

// conto il numero di record cancellati

$num_record mysql_affected_rows();

 

// chiudo la connessione a MySQL

mysql_close();

 

$messaggio urlencode("Numero record cancellati: $num_record");

header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);

}

// includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
include("paginazione_2.php");


//inseriamo la paginazione
echo $paginazione;

?>
Mi potreste gentilmente aiutare?

Grazie mille in anticipo.