Ciao a tutti,ho un piccolo problema:
Codice PHP:
<?
session_start();
//la classe per il paging
class Paging {
private $totPag; //Totale Pagine nella tabella
private $pagCorr; //Pagina corrente
private $totRighe; //Totale righe nella tabella
private $righePerPagina; //Numero di righe per pagina da ottenere
//Facilita l'accesso all'array dell'intervallo
const kIntervalloInizio='inizio';
const kIntervalloLunghezza='lunghezza';
// Il costruttore chiede quale sia la pagina corrente, il totale delle
// righe in tabella e quante righe per pagina interessano
public function __construct($pagCorr,$totRighe,$righePerPagina) {
$this->pagCorr=$pagCorr;
$this->totRighe=$totRighe;
$this->righePerPagina=$righePerPagina;
$this->totPag=$this->contaPagine($totRighe, $righePerPagina);
}
// Consente di modificare la pagina corrente con un'altra dopo
// l'esecuzione del construct
public function vaiAPagina($pagina){
if($pagina==self::kUltimaPagina)
$this->pagCorr=$this->totPag;
elseif(is_numeric($pagina) and $pagina>1 and $pagina<$this->totPag)
$this->pagCorr=$pagina;
else
$this->pagCorr=1;
}
//Indica in quante pagine viene divisa la tabella
public function contaPagine($totRighe, $righePerPagina) {
return ceil($totRighe / $righePerPagina);
}
//Restituisce un array indicante la posizione del primo record e quante
//righe occorre scorrere
public function dammiIntervallo() {
return array(
self::kIntervalloInizio => ($this->pagCorr-1) * $this->righePerPagina,
self::kIntervalloLunghezza => $this->righePerPagina
);
}
//Ritorna il numero per la prossima pagina
public function prossimaPagina(){
if($this->totPag==0)
return 1;
return ($this->pagCorr>=$this->totPag)?$this->totPag:$this->pagCorr+1;
}
//Ritorna il numero per la pagina precedente
public function precedentePagina(){
return ($this->pagCorr<=1)?1:$this->pagCorr-1;
}
}
//PREPARA L'OGGETTO PAGING E LO RITORNA
function CostruisciOggettoPaging($sql) {
if (!isset($_GET['p']))
$pagCorr = 1;
else
$pagCorr=$_GET['p'];
$res = mysql_query($sql) or die('Err3');
$totRighe = mysql_num_rows($res);
mysql_free_result($res);
$righePerPagina = 25;
return new Paging($pagCorr, $totRighe, $righePerPagina);
}
//REALIZZA LA TABELLA E LA RITORNA SOTTO FORMA DI STRINGA
function CostruisciTabella($p,$sql) {
$inter=$p->dammiIntervallo();
$res = mysql_query("$sql limit {$inter[Paging::kIntervalloInizio]},{$inter[Paging::kIntervalloLunghezza]}") or die('Err4');
ob_start();
//Definizione della tabella
echo <<<END
<table border="0" cellpadding="7px">
<tr>
<th>Nome</th>
<th>Cognome</th>
<th>Ruolo</th>
<th>Età</th>
<th>Costo</th>
<th>Squadra</th>
<th>Tuffo</th>
<th>Respinta</th>
<th>Presa</th>
<th>Reattività</th>
<th>Resistenza</th>
</tr>
END;
while ($row = mysql_fetch_assoc($res)) {
$id = $row['id'];
$_SESSION['id_giocatori'] = $id;
$costo = number_format($row['costo'], "0", "", ".");
echo <<<END
<tr>
<td>{$row['nome']}</td>
<td>{$row['cognome']}</td>
<td>{$row['ruolo']}</td>
<td>{$row['età']}</td>
<td>$costo €</td>
<td>{$row['squadra']}</td>
<td>{$row['tuffo']}</td>
<td>{$row['respinta']}</td>
<td>{$row['presa']}</td>
<td>{$row['reattività']}</td>
<td>{$row['resistenza']}</td>
<td>[url="azione_compra_port.php"][img]immagini/icona_compra.jpg[/img][/url]</td>
</tr>
END;
}
//Link di navigazione
echo <<<END
<th colspan="2">
[url="{$_SERVER['PHP_SELF']}?p={$p->precedentePagina()}"]Indietro[/url] |
[url="{$_SERVER['PHP_SELF']}?p={$p->prossimaPagina()}"]Avanti[/url]
</th>
</table>
END;
mysql_free_result($res);
return ob_get_clean();
}
//connessione al database
include('../connect.php');
//estrazione dei giocatori
$sql="SELECT * FROM GIOC_giovani_port WHERE squadra='Senza contratto.' ORDER BY nome ASC";
$p = CostruisciOggettoPaging($sql);
$tabella_dati = CostruisciTabella($p,$sql);
mysql_close($conn);
echo $tabella_dati;
?>
azione_compra_port.php
Codice PHP:
<?
session_start();
$id = $_SESSION['id_giocatori'];
//connessione al database
include('connect.php');
//sessione
include('sessione.php');
//cash della squadra
$team = $_SESSION['username'];
$query = "SELECT * FROM SQUADRA_dati WHERE team='$team'";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_array($result);
$cash = $row['cash'];
//prezzo giocatore
$query = "SELECT * FROM GIOC_giovani_port";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_array($result);
$id = $row['id'];
$costo = $row['costo'];
//il cash non è sufficiente...
if($cash < $costo){
echo "Non hai abbastanza soldi per acquistare il giocatore.";
}else{ //...altrimenti procedo con l'acquisto
//cambiamo squadra al giocatore
$query="UPDATE GIOC_giovani_port SET squadra='$team' WHERE id='$id'";
$result = mysql_query($query) or die (mysql_error());
//togliamo i soldi dal conto
$operazione = ($cash - $costo);
$query="UPDATE SQUADRA_dati SET cash='$operazione' WHERE team='$team'";
$result = mysql_query($query) or die (mysql_error());
}
?>
La parte riguardante l'operazione per togliere i soldi dal conto funziona,il problema è che il giocatore che acquisto tramite lo script non cambia squadra come invece dovrebbe.Alla fine del codice ho messo echo $_SESSION['id_giocatori']; per vedere il risultato dell'id e mi sono accorto che rimane sempre uguale,quindi ho sbagliato ad assegnare il valore!
Vi ringrazio per la pazienza