Sempre per aumentare le risorse utili a VirtueMart, vi segnalo questo script utile per generare le
etichette da applicare hai colli da spedire.
http://forum.html.it/forum/showthread.php?threadid=445992Anche in questo caso se qualche anima pia decide di rielaborare il cod. e creare un moduletto x VM, glie ne saremo tutti MOLTO grati!
Ciao!
Posto anche il codice per evitare che in futuro il link segnalato in precedenza non funzioni.
<?php
/ ****************************************
***************************
# STAMPARE BUSTE ED ETICHETTE SINGOLE
#
# Autore: Piero Maccario - Asti
# Alias: piero.mac ON html.it-php forum
#
# Data: 03/05/2003 - Test version only. Per forum html.it-php
#
# Utilizzo: Permette di stampare buste, oppure etichette singole
# in qualsiasi formato utilizzando esclusivamente
# uno script PHP prelevando i dati da una tabella mysql.
# Lo script aggiorna il record stampato per evitare
# stampe doppie. Ottimizzato per le reti INTRANET.
# Posizionare nel db la flag "stampato SI/NO" su "NO"
# sui record da usare prima di iniziare la stampa.
#
# Build up: PHP 4.3.1 - Mysql 4.0.12
#
# Compatibilita' OS: Windows 98/ME/XP/2000 - Apache any version.
#
# Richiede: extension=php_printer.dll (file ini.php)
#
****************************************
***************************/
# Nell'esempio che segue il posizionamento dei dati e' valido per buste
# in formato 12 x 18 con stampa del foglio verticale e con un logo .bmp sul
# lato sx alto. Inserire la busta dal lato largo con la faccia in basso.
# Per altri formati variate le cooordinate x,y delle rispettive variabili
$logo_x = 120; # posizione x di un logo
$logo_y = 120; # posizione y di un logo
$logo = "Logo007.bmp"; # nome del file in formato .bmp
$text_x = 1100; # posizionamento di colonna. In pixel.
$text_y = 900; # posizionamento prima riga.
$font_h = 60; # altezza del font (sempre pixel)
$font_w = 22; # larghezza del font
$font_c = "Arial"; # nome del font
# connessione al db - preleviamo i nostri dati e contiamoli
$server = "localhost";
$user = "root";
$pwd = "";
$datab = "agenda";
$tabella = "soci";
$link = mysql_connect ($server, $user, $pwd) or die ("Mysql dice: " . mysql_error() . mysql_errno());
$db = mysql_select_db ($datab, $link) or die ("Mysql dice: " . mysql_error());
$action = "select * from $tabella where stampato = 'NO'";
$query = mysql_query ($action, $link);
$num = mysql_num_rows($query);
echo "<p><h5>Stamperemo n. $num buste con i seguenti nominativi:</h5></p>";
$n_busta = 1;
# apriamo un thread di lavoro con la stampante. lo facciamo prima del while
$handle=printer_open();
# creazione del font - cfr. il manuale per le molte opzioni e compatibilita'
# <a href="http://www.zend.com/manual/ref.printer.php" target="_blank">http://www.zend.com/manual/ref.printer.php</a> oppure
# <a href="http://forum.html.it/forum/showthread.php?s=&threadid=348674" target="_blank">http://forum.html.it/forum/showthre...threadid=348674</a>
# nota: il font deve essere selezionato all'interno del documento di stampa
$font = printer_create_font("$font_c", $font_h, $font_w, PRINTER_FW_NORMAL, false, false, false, 0);
# ciclo di stampa - Estraggo le variabili dall'array per maggior chiarezza.
# Dal contenuto dell'array si puo' vedere come e' composta la tabella "soci".
while ($result = mysql_fetch_array ($query))
{
$id = $result["socio_id"]; # campo INT(4) UNSIGNED NOT NULL AUTO INCREMENT
$tit = $result["titolo"]; # VARCHAR(10)
$cog = $result["cognome"]; # VARCHAR(20)
$nom = $result["nome"]; # VARCHAR(20)
$ind = $result["indirizzo"]; # VARCHAR(30)
$cap = $result["cap"]; # INT(5)
$cit = $result["citta"]; # VARCHAR(30)
$sta = $result["stampato"]; # CHAR(2) DEFAULT 'NO'
# finalmente si stampa. Si consiglia di non aprire/chiudere il documento fuori dal while
# Si sono avuti problemi su alcuni PC, problemi non approfonditi visto che si risolvevano
# aprendo e chiudendo ogni volta un documento diverso all'interno del ciclo while.
printer_start_doc($handle,'Stampa Buste'); # inizio documento
printer_start_page($handle); # inizio pagina
printer_select_font($handle, $font); # seleziono il font creato
printer_draw_bmp($handle, "$logo", $logo_x, $logo_y); # stampo il logo .bmp
printer_draw_text($handle," $tit", $text_x, $text_y); # I riga
printer_draw_text($handle," $nom $cog", $text_x, $text_y+80); # II abbassata di 80 pixel
printer_draw_text($handle," $ind", $text_x, $text_y+160); # perche' 60 pixel del font
printer_draw_text($handle," $cap - $cit", $text_x, $text_y+240); # piu' 20 pixel di spazio, ecc.
printer_end_page($handle); # Fine pagina espelle la busta
printer_end_doc($handle); # Fine documento
# vediamo su monitor cosa stiamo stampando a scopo di feedback
echo "<p><h5>Busta n. $n_busta - Stampo: $tit $cog $nom - $ind - $cap $cit</h5></P>";
# Aggiorniamo il record con l'indicazione di stampato=SI. Questo permette di riprendere
# la stampa evitando di stampare doppioni. Ovvio che prima di iniziare a stampare sara'
# necessario fare un UPDATE di tutti i record posizionando a NO la flag 'stampato'.
# O solo dei record che si vogliono stampare.Ovvio... ma non scontato che ci si ricordi...
$action1 = "UPDATE $tabella SET stampato = 'SI' WHERE socio_id = $id";
$query1 = mysql_query ($action1, $link);
$num1 = mysql_affected_rows(); # diamo una controllatina alle gomme...
if ($num1 == 1) { # tutto ok
echo "<p><h5>Il record di $nom $cog e' stato aggiornato</h5></p>";
$n_busta = $n_busta +1; # incrementiamo il num. delle buste stampate
}
else { # acc.. qualcosa e' andato storto
echo "<p><h5>Il record di $nom $cog non e' stato aggiornato.</h5></p>";
echo "<p><h5>La stampa in corso viene interrotta.</h5></p>";
printer_abort($handle); # abortiamo lo spool di stampa
printer_close($handle); # chiudiamo la sessione
exit(); # ed usciamo dal programma
}
}
# chiudiamo tutte le connessioni
# ciao ciao
printer_close($handle);
mysql_free_result($query);
mysql_close($link);
?>