Mitgliedsausweise drucken...

Hast du Vorschläge, was wir an Admidio noch verbessern könnten ? Hier kannst du uns deine Vorstellung an neuen Funktionen mitteilen.
Antworten
james_dean
Beiträge: 2
Registriert: 18. Jun 2008, 14:10

Mitgliedsausweise drucken...

Beitrag von james_dean »

Hallo,

ein sehr gelungenes Tool muss ich sagen. Wie wäre es eine Mitgliedausweisfunktion zu integrieren die PDF ausgibt. (http://fpdf.org/) Und die Listendruckvorschau mit PDF erzeugen wäre auch nicht schlecht. Aber sonst ein sehr gut gelungenes Tool.
james_dean
Beiträge: 2
Registriert: 18. Jun 2008, 14:10

So mal ein Test für eine Druckfunktion...

Beitrag von james_dean »

So ich hab mal eine Mitgliedsausweisfunktion integriert... allerdings reichen meine Kenntnisse nicht ganz um es als plugin anzubieten... ich schicke mal einen screenshot und den code für die die es interessiert... den aufruf der datei habe ich in die profil.php integriert (weiß leider nicht wie es als plugin geht...)

Bild

Ihr benötigt noch die mem_image.php die ist im netz zu finden...

Ausweis.php

Code: Alles auswählen

<?php
define('FPDF_FONTPATH','/usr/local/fpdf/font/');
require('/usr/local/fpdf/fpdf.php');
require('mem_image.php');

// Pfad des Plugins ermitteln
$plugin_folder_pos = strpos(__FILE__, "adm_plugins") + 11;
$plugin_file_pos   = strpos(__FILE__, "ausweis.php");
$plugin_folder     = substr(__FILE__, $plugin_folder_pos+1, $plugin_file_pos-$plugin_folder_pos-2);
if(!defined('PLUGIN_PATH'))
{
    define('PLUGIN_PATH', substr(__FILE__, 0, $plugin_folder_pos));
}
require_once(PLUGIN_PATH. "/../adm_program/system/common.php");

//aktuellen User holen
$a_user_id = $_GET['user_id'];
////////////////////////////////////////////////////////////////////
// DB auf Admidio setzen, da evtl. noch andere DBs beim User laufen
$g_db->setCurrentDB();
////////////////////////////////////////////////////////////////////
//Daten Für User Afragen////////////////////////////////////////////
//Nachname
$sql = "SELECT `usd_value`
        FROM `adm_user_data`
        WHERE `usd_usr_id` = $a_user_id
        AND `usd_usf_id` = 1";
$result_name = $g_db->query($sql);
$name = mysql_fetch_row($result_name);

//Vorname///////////////////////////////////////////////////////////////////////
$sql = "SELECT `usd_value`
        FROM `adm_user_data`
        WHERE `usd_usr_id` = $a_user_id
        AND `usd_usf_id` = 2";
$result_vorname = $g_db->query($sql);
$vorname = mysql_fetch_row($result_vorname);

//Mitgliedsnummer auslesen//////////////////////////////////////////////////////
$sql = "SELECT `usd_value`
        FROM `adm_user_data`
        WHERE `usd_usr_id` = $a_user_id
        AND `usd_usf_id` = 23";
$result_mnr = $g_db->query($sql);
$result_mnr = mysql_fetch_row($result_mnr);
$mnr = $result_mnr[0];

//Geburtstag auslesen///////////////////////////////////////////////////////////
$sql = "SELECT `usd_value`
        FROM `adm_user_data`
        WHERE `usd_usr_id` = $a_user_id
        AND `usd_usf_id` = 10";
$result_geb = $g_db->query($sql);
$geb = mysql_fetch_row($result_geb);
$gebDatum = $geb[0];
                    
//Foto aus der Datenbank lesen und ausgeben/////////////////////////////////////
$sql = "SELECT `usr_photo`
        FROM `adm_users` 
        WHERE `usr_id` = $a_user_id"; 
$photos = $g_db->query($sql);
$ph = mysql_fetch_row($photos);
$photo = $ph[0];

//Wenn etwas fehlt dann abrechen////////////////////////////////////////////////
if($photo==null or $gebDatum==null or $mnr==null){
   
   echo "daten unvollständig... ausweis drucken nicht möglich !!!!!!!!!!!!";
   return;
}

//Alle Daten aus Datenbank holen/////////////////////////////////////
$sql = "SELECT  (SELECT usf_name from adm_user_fields where usd_usf_id=usf_id), usd_value
        FROM `adm_user_data`
        WHERE usd_usr_id =  $a_user_id"; 

$allDataResult = $g_db->query($sql);

////////////////////////////////////////////////////////////////////////////////
//uft8 convertieren
$name_dec = utf8_decode($name[0]); 
$vorname_dec = utf8_decode($vorname[0]);

//Geburtsdatum formatieren
$gebDatum = date("d.m.Y",strtotime($gebDatum)); 
             
//Ausweis drucken
class Mitglied extends MEM_IMAGE{ 
  
 function print_Ausweis($x,$y,$_name,$_vorname,$_mnr,$_geb){  
  global $photo;
  $this->Rect($x+8,$y+8,83,50,'D');
  $this->SetXY($x+10,$y+10.5);
  $this->SetTextColor(34, 139, 34);
  $this->SetFont('Times','B',14);
  $this->Cell(80,7,'SC 1903 Weimar e.V.',0,2,'L');
  $this->SetDrawColor(255, 215, 0);
  $this->SetLineWidth(0.5);
  $this->Line($x+12, $y+18, $x+55, $y+18);
  $this->Ln(2.5);
  $this->SetFont('Times','B',13.5);
  $this->SetX($x+12);
  $this->Cell(32,7,'Mitgliedskarte',0);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Times','B',13.5);
  $this->Cell(10,7,$_mnr);
  $this->Ln(6);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','',4.5);
  $this->SetX($x+12);
  $this->Cell(10,7,"Name");
  $this->Ln(3.1);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','',11);
  $this->SetX($x+12);
  $this->Cell(10,7,$_name);
  $this->Ln(3.8);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','',4.5);
  $this->SetX($x+12);
  $this->Cell(10,7,"Vorname");
  $this->Ln(3.1);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','',11);
  $this->SetX($x+12);
  $this->Cell(18,7,$_vorname); 
  $this->Ln(3.8);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','',4.5);
  $this->SetX($x+12);
  $this->Cell(10,7,"Geburtssatum");
  $this->Ln(3.1);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','B',10);
  $this->SetX($x+12);
  $this->Cell(10,7,$_geb);
  $this->Ln(7);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','',7);
  $this->SetX($x+12);
  $this->Cell(18,7,'Der Vorstand');
  //from Mem_Image()
  $this->Image('var://photo', $x+61, $y+12, 26, 34, 'JPEG');
  $this->SetDrawColor(0, 0, 0);
  $this->SetLineWidth(0.2);
  $this->Rect($x+61,$y+12,26,34);
  $this->Image('sc_stempel_1.png', $x+53, $y+38,15,'PNG');
  $this->Image('unterschrift_praesident.png', $x+33, $y+45,18,'PNG');
  //////////////////////////////////////////////////////////////////////////////
 }

 function print_Karteikarte($_allDataResult,$_mnr){ 
  $this->Rect(20,15,180,270,'D');
  $this->SetXY(27,24);
  $this->SetTextColor(0,0,0);
  $this->SetFont('Arial','B',16);
  $this->Cell(55,7,'Mitgliedskarteikarte',0);
  $this->Cell(0,7,$_mnr);
  $this->SetFont('Times','B',16);
  $this->SetFont('Times','',15);
  while ($zeile = mysql_fetch_array($_allDataResult))
  {
    $this->SetXY(27,40+($i*10));
    if ($zeile[0]=="Geburtstag"){
       $this->Cell(50,7,utf8_decode($zeile[0]));
       $this->Cell(20,7,utf8_decode(date("d.m.Y",strtotime($zeile[1]))));
    }
    else if ($zeile[0]=="Eintrittsdatum"){
       $this->Cell(50,7,utf8_decode($zeile[0]));
       $this->Cell(20,7,utf8_decode(date("d.m.Y",strtotime($zeile[1]))));
    }
    else {
      $this->Cell(50,7,utf8_decode($zeile[0]));
      $this->Cell(20,7,utf8_decode($zeile[1]));
    }
    $i++;
  }
  $this->Image('var://photo', 145, 40, 45, 0, 'JPEG');
 }
}

$pdf=new Mitglied();
 $pdf->SetDisplayMode('fullpage');
  $pdf->AddPage();
  $pdf->print_Karteikarte($allDataResult,$mnr);
  $pdf->AddPage();
  $pdf->SetXY(20,15);
  $pdf->SetFont('Times','B',14);
  $pdf->Cell(0,0,'Mitgliederausweis:');
  $pdf->print_Ausweis(15,20,$name_dec,$vorname_dec,$mnr,$gebDatum);
$pdf->Output();
?>
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hi James-Dean,

ich werde mir das bei Gelegenheit mal genauer anschauen. So eine Funktion wäre sicherlich sinnvoll und würde gut in unser Programm passen.

Vielen Dank schon mal für den Code.

Gruß
Fasse
Andree
Beiträge: 78
Registriert: 18. Jan 2008, 16:00
Wohnort: Celle
Kontaktdaten:

Beitrag von Andree »

fasse hat geschrieben:Hi James-Dean,

ich werde mir das bei Gelegenheit mal genauer anschauen. So eine Funktion wäre sicherlich sinnvoll und würde gut in unser Programm passen.

Vielen Dank schon mal für den Code.

Gruß
Fasse
für viele andere ... ich habe mir einfach einen Seriendruck in Word gemacht. Entweder ziehe ich mir die Daten via CSV oder ich Importiere die Daten einfach in eine Lokale MySQL Datenbank und greife auf diese dann zu.

Geht wunderbar !!!
Bis dann

Andree
Antworten