Questo codice fa riferimento a quanto pubblicato qui.
<?php
// BlogNatale 2007
// Progetto 1: Genera un file PDF con stampate cartelle da utilizzare per la tombola natalizia
// Coded By Napolux - http://www.napolux.com
// Imposto file PDF
require('fpdf.php');
$pdf=new FPDF("P","mm","A4");
$pdf->AddPage();
// Inizializzo generatore di numeri casuali - http://it2.php.net/mt_srand
function creaSeme()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
// Creo il seme che verrГ utilizzato per la generazione
mt_srand(creaSeme());
//$valorecasuale = mt_rand();
function generaCartelle($numCartelle)
{
// Variabile globale
global $pdf;
for($n = 0; $n < $numCartelle; $n++)
{
// Ogni 3 cartelle aggiungo una pagina :)
if(($n % 3 == 0) && ($n > 0))
$pdf->AddPage();
// Definisco grandezza font
$pdf->SetFont("Arial","B",20);
// Array bidimensionale che conterrГ la cartella generata
$cartella = array();
// Serve per evitare duplicati
$inseriti = array();
// Genero matrice 3x9 contenente la cartella
for($i=0;$i<3;$i++)
{
for($j=0;$j<9;$j++)
{
// Casi speciali (1a e 9a colonna)
switch($j)
{
// 1a colonna (numeri casuali da 1 a 9)
case 0:
$ok = false;
while(!$ok)
{
$cartella[$i][$j] = mt_rand((($j*10)+1),((($j+1)*10)-1));
if(!in_array($cartella[$i][$j],$inseriti))
{
$ok = true;
$inseriti[] = $cartella[$i][$j];
}
}
break;
// 9a colonna (numeri casuali da 80 a 90)
case 8:
$ok = false;
while(!$ok)
{
$cartella[$i][$j] = mt_rand((($j*10)),(($j+1)*10));
if(!in_array($cartella[$i][$j],$inseriti))
{
$ok = true;
$inseriti[] = $cartella[$i][$j];
}
}
break;
// Colonne intermendie
default:
$ok = false;
while(!$ok)
{
$cartella[$i][$j] = mt_rand((($j*10)),((($j+1)*10)-1));
if(!in_array($cartella[$i][$j],$inseriti))
{
$ok = true;
$inseriti[] = $cartella[$i][$j];
}
}
break;
}
}
}
// Riordino le colonne
for($j=0;$j<9;$j++)
{
$tmp = array($cartella[0][$j],$cartella[1][$j],$cartella[2][$j]);
sort($tmp);
$cartella[0][$j] = $tmp[0];
$cartella[1][$j] = $tmp[1];
$cartella[2][$j] = $tmp[2];
}
// Elimino 4 elementi per riga
for($i=0;$i<3;$i++)
{
$eliminati = 0;
while ($eliminati < 4)
{
$posizione = mt_rand(0,8);
if($cartella[$i][$posizione] != " ")
{
$cartella[$i][$posizione] = " ";
$eliminati++;
}
}
}
// Separatore e intestazione cartelle :)
$pdf->Cell(40,10,"Tombola!");
$pdf->Ln();
// Aggiungo cartella al PDF
for($i=0;$i<3;$i++)
{
for($j=0;$j<9;$j++)
{
$pdf->Cell(20,20,$cartella[$i][$j],1,0,"C",0);
}
$pdf->Ln();
}
// Credits & separatore
$pdf->SetFont('Arial','B',10);
$pdf->Cell(10,10,"Da un'idea di Francesco Napoletano - http://www.napolux.com");
$pdf->Ln(20);
}
}
// Chiamo funzione per generare X cartelle
// Se non viene passato parametro ne genero solamente 3
if(isset($_GET["numcartelle"]) && $_GET["numcartelle"] > 0)
generaCartelle($_GET["numcartelle"]);
else
generaCartelle(3);
// Mando in output il PDF :)
$pdf->Output();
?>