Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts

Untuk upload text file ke database (SQL Server atau MySQL) dengan delimiter titik koma (;), script php nya adalah sebagai berikut :

"

$filenm = fopen("U-THCQ-DataItemH1-1209281400.mm", "r");

// Read line by line until end of file
while(!feof($filenm)) {
$filename = fgets($filenm);

$pisah = explode(";", $filename);

$no_sj = $pisah[0];
$tgl_sj = $pisah[1];
$no_do = $pisah[2];
$tgl_do = $pisah[3];

   //echo fgets($filenm) . "
";

echo $no_sj . " - " . $tgl_sj . " - " . $no_do . " - " . $tgl_do . "
";
}

fclose($filenm);
?>
"


Nama text file yang dibaca adalah : U-THCQ-DataItemH1-1209281400.mm.

Output yang dihasilkan sebagai berikut :

CBR150RC(IN)M/T - BK - BLACK - CBR 150R
CBR150RC(IN)M/T - OH - ORANGE HITAM - CBR 150R
CBR150RC(IN)M/T - PM - PUTIH MERAH - CBR 150R
CBR150RC(IN)M/T - RD - RED - CBR 150R
CBR150RC(IN)RM/T - OH - ORANGE HITAM - CBR 150R


Pernah saya menemui kesulitan pada saat hendak mencari tanggal terakhir dari suatu bulan secara otomatis (dari program). Setelah coba 'tanya' sama 'mbah Google' akhirnya ketemulah script untuk mencari tanggal terakhir dari suatu bulan.
Scriptnya sebagai berikut :


  $bulan = "02";
  $tahun = "2009";
$lastday= date('Y-m-d',strtotime('-1 second',strtotime('+1 month',strtotime(date($bulan).'/01/'.date($tahun).' 00:00:00'))));

echo "Tanggal terakhir dari bulan $bulan $tahun adalah $lastday
";

$exlast = explode("-", $lastday);
//ambil nama hari dari tgl terakhir
$cekhari = mktime(0,0,0,date($exlast[1]),date($exlast[2]),date($exlast[0]));
$tglcekhari = date("Y-m-d", $cekhari);
$hari = date("D", $cekhari);
echo "jatuh pada hari \"$hari\"
";


echo "Tgl yang diambil adalah : ".CekLastDay($lastday,0);

function CekLastDay($X,$Z) {
$Extgl = explode("-",$X);
$M = mktime(0,0,0,date($Extgl[1]),date($Extgl[2])-$Z,date($Extgl[0]));
$Mtgl = date("Y-m-d", $M);
$Mhari = date("D", $M);

if($Mhari=="Sat" or $Mhari=="Sun") {
return CekLastDay($Mtgl,1);
//echo "sini $Mtgl
";
} else
return $Mtgl;

}
?>

Tampilan outputnya sebagai berikut :

Tanggal terakhir dari bulan 02 2009 adalah 2009-02-28 
jatuh pada hari "Sat"
Tgl yang diambil adalah : 2009-02-27

Untuk memanggilnya menggunakan fungsi : terbilangs.

-----


function terbilang($angka) {
    // pastikan kita hanya berususan dengan tipe data numeric
    $angka = (float)$angka;

    // array bilangan
    // sepuluh dan sebelas merupakan special karena awalan 'se'
    $bilangan = array(
        '',
        'satu',
        'dua',
        'tiga',
        'empat',
        'lima',
        'enam',
        'tujuh',
        'delapan',
        'sembilan',
        'sepuluh',
        'sebelas'
    );

    // pencocokan dimulai dari satuan angka terkecil
    if ($angka < 12) {
        // mapping angka ke index array $bilangan
        return $bilangan[$angka];
    } else if ($angka < 20) {
        // bilangan 'belasan'
        // misal 18 maka 18 - 10 = 8
        return $bilangan[$angka - 10] . ' belas';
    } else if ($angka < 100) {
        // bilangan 'puluhan'
        // misal 27 maka 27 / 10 = 2.7 (integer => 2) 'dua'
        // untuk mendapatkan sisa bagi gunakan modulus
        // 27 mod 10 = 7 'tujuh'
        $hasil_bagi = (int)($angka / 10);
        $hasil_mod = $angka % 10;
        return trim(sprintf('%s puluh %s', $bilangan[$hasil_bagi], $bilangan[$hasil_mod]));
    } else if ($angka < 200) {
        // bilangan 'seratusan' (itulah indonesia knp tidak satu ratus saja? :))
        // misal 151 maka 151 = 100 = 51 (hasil berupa 'puluhan')
        // daripada menulis ulang rutin kode puluhan maka gunakan
        // saja fungsi rekursif dengan memanggil fungsi terbilang(51)
        return sprintf('seratus %s', terbilang($angka - 100));
    } else if ($angka < 1000) {
        // bilangan 'ratusan'
        // misal 467 maka 467 / 100 = 4,67 (integer => 4) 'empat'
        // sisanya 467 mod 100 = 67 (berupa puluhan jadi gunakan rekursif terbilang(67))
        $hasil_bagi = (int)($angka / 100);
        $hasil_mod = $angka % 100;
        return trim(sprintf('%s ratus %s', $bilangan[$hasil_bagi], terbilang($hasil_mod)));
    } else if ($angka < 2000) {
        // bilangan 'seribuan'
        // misal 1250 maka 1250 - 1000 = 250 (ratusan)
        // gunakan rekursif terbilang(250)
        return trim(sprintf('seribu %s', terbilang($angka - 1000)));
    } else if ($angka < 1000000) {
        // bilangan 'ribuan' (sampai ratusan ribu
        $hasil_bagi = (int)($angka / 1000); // karena hasilnya bisa ratusan jadi langsung digunakan rekursif
        $hasil_mod = $angka % 1000;
        return sprintf('%s ribu %s', terbilang($hasil_bagi), terbilang($hasil_mod));
    } else if ($angka < 1000000000) {
        // bilangan 'jutaan' (sampai ratusan juta)
        // 'satu puluh' => SALAH
        // 'satu ratus' => SALAH
        // 'satu juta' => BENAR
        // @#$%^ WT*

        // hasil bagi bisa satuan, belasan, ratusan jadi langsung kita gunakan rekursif
        $hasil_bagi = (int)($angka / 1000000);
        $hasil_mod = $angka % 1000000;
        return trim(sprintf('%s juta %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else if ($angka < 1000000000000) {
        // bilangan 'milyaran'
        $hasil_bagi = (int)($angka / 1000000000);
        // karena batas maksimum integer untuk 32bit sistem adalah 2147483647
        // maka kita gunakan fmod agar dapat menghandle angka yang lebih besar
        $hasil_mod = fmod($angka, 1000000000);
        return trim(sprintf('%s milyar %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else if ($angka < 1000000000000000) {
        // bilangan 'triliun'
        $hasil_bagi = $angka / 1000000000000;
        $hasil_mod = fmod($angka, 1000000000000);
        return trim(sprintf('%s triliun %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else {
        return 'Wow...';
    }
}

function koma($x)
{
    $x = stristr($x,'.');

    $angka = array('nol','satu','dua','tiga','empat','lima','enam','tujuh','delapan','sembilan');

    $temp   = '';
    $pjg    = strlen($x);
    $pos    = 1;

    while($pos < $pjg)
    {
        $char   = substr($x,$pos,1);
        $pos++;
        $temp  .=  ' '.$angka[$char];
    }
    return $temp;

}

function terbilangs ($x)
{
    if($x<0 p="p">    {
        $hasil = 'minus '.trim(terbilang($x));
    }
    else
    {
        $poin  = trim(koma($x)) ;
        $hasil = trim(terbilang($x));
    }

    if($poin)
    {
        $hasil = ucwords($hasil).' Koma '.ucwords($poin);
    }
    else
    {
        $hasil = ucwords($hasil);//.' koma '.ucwords($poin);;
    }

    return $hasil;

 
}
?>

Berikut ini saya akan mencoba untuk mengakses data di tabel Customer yang sudah tersedia di database MySQL dengan menggunakan PHP. Procedure ini akan mem-passing 1 buah parameter yaitu Customer Id nya.

Pertama sya membuat procedure untuk membuat query nya sebagai berikut :

CREATE PROCEDURE `usp_testCustomer3`(
    IN CustId     varchar(18)
)
BEGIN
  select customer_id, customer_name
  from customer
  where customer_id = CustId
  group by customer_id, customer_name;
END

Setelah procedure tercipta, kita coba akses procedure tersebut dengan PHP. Program PHP tersebut saya buat sebagai berikut :

<html>
<body>
<h1>Parsing parameter to a stored procedure</h1>
<pre>
<?php

$mysql = mysql_connect('localhost', 'root', 'triadpass', false, 65536);
mysql_select_db('new_ccrm');

$query = "CALL usp_testCustomer3('01080800051139')";
$result=mysql_query($query) or die(mysql_error());

if ($result)
{
   while ($rows=mysql_fetch_array($result))
   {
          echo trim($rows['customer_id']) . " - " . trim($rows['customer_name']) . "<br>";
   }
   mysql_free_result($result);
}
mysql_close($mysql)

?>
</pre><br>
This demonstration shows a stored procedure to which a parameter has
been passed which is passed in turn into the select query.
</body>
</html>

Setelah itu saya jalankan script PHP tersebut, sehingga outputnya adalah sebagai berikut :

Parsing parameter to a stored procedure

01080800051139 - R. HESTI ENDANG SIREGAR




This demonstration shows a stored procedure to which a parameter has been passed which is passed in turn into the select query.



Nah, ternyata tidak sulit kan membuatnya? Selamat berkreasi dengan procedure-procedure yang lain.

Untuk mengakses data pada database biasanya kita menggunakan query biasa di program, baik itu menggunakan ASP, VB, .Net, PHP atau bahasa pemrograman apapun.

Kali ini saya ingin mencoba untuk mengakses data pada database MySQL dengan memanfaatkan Procedure dan dipanggil menggunakan bahasa pemrograman PHP.

Dengan menggunakan tabel Customer yang sudah tersedia, saya mencoba untuk membuat procedure tanpa parameter untuk menampilkan field Customer Id dan Customer Name.

Pertama saya buat procedurenya dahulu sebagai berikut :

CREATE PROCEDURE `ups_testCustomerNonParam`()
BEGIN
      select * from customer
      order by customer_id
      limit 25;
END

Limit 25 disini maksudnya saya hanya ingin menampilkan sebanyak 25 record saja, karena total keseluruhannya bisa mencapai ratusan ribu reord.

Setelah Procedure ter-create lalu kita buat program PHP untuk memanggil procedure tersebut.

<html>
<body>
<h1>Access Data from a stored procedure</h1>
<pre>
<?php

$mysql = mysql_connect('localhost', 'root', 'triadpass', false, 65536);
mysql_select_db('new_ccrm');

$query = "CALL ups_testCustomerNonParam()";
$result=mysql_query($query) or die(mysql_error());

if ($result)
{
   while ($rows=mysql_fetch_array($result))
   {
          echo trim($rows['customer_id']) . " - " . trim($rows['customer_name']) . "<br>";
   }
   mysql_free_result($result);
}
mysql_close($mysql)

?>
</pre><br>
This demonstration shows a stored procedure to which a parameter has
been passed which is passed in turn into the select query.
</body>
</html>

Nah, setelah itu kita bisa akses program tersebut dan outputnya adalah sebagai berikut :

Access Data from a stored procedure

123 - AMEL
*10120310319990000 - Jeny
0001 - ATIK
0001 - CHINTIA
0001 - ELOK
0001 - EVI
0001 - IREN
0001 - MILA
0001 - NURLAILA
0001 - RATNA
0001 - RODATUL
0001 - SUMIYATI
0001 - TAMY
0001 - VERONIKA
0001 - WINIE
0001 - YANTI
01080800030002 - TJONG NURSANA
01080800030003 - MARIAMAN
01080800030004 - LENA
01080800030005 - HETI
01080800030006 - FITRI
01080800030007 - RISMA TUMORANG
01080800030008 - HETI
01080800030009 - ASIH
01080800030010 - ELI




Mudah bukan caranya? Untuk topik berikutnya, saya akan coba membuat sebuah program PHP singkat untuk mengakses procedure dengan menggunakan parameter.

function convert_number_to_words($number) {
    
    $hyphen      = '-';
    $conjunction = ' and ';
    $separator   = ', ';
    $negative    = 'negative ';
    $decimal     = ' point ';
    $dictionary  = array(
        0                   => 'zero',
        1                   => 'one',
        2                   => 'two',
        3                   => 'three',
        4                   => 'four',
        5                   => 'five',
        6                   => 'six',
        7                   => 'seven',
        8                   => 'eight',
        9                   => 'nine',
        10                  => 'ten',
        11                  => 'eleven',
        12                  => 'twelve',
        13                  => 'thirteen',
        14                  => 'fourteen',
        15                  => 'fifteen',
        16                  => 'sixteen',
        17                  => 'seventeen',
        18                  => 'eighteen',
        19                  => 'nineteen',
        20                  => 'twenty',
        30                  => 'thirty',
        40                  => 'fourty',
        50                  => 'fifty',
        60                  => 'sixty',
        70                  => 'seventy',
        80                  => 'eighty',
        90                  => 'ninety',
        100                 => 'hundred',
        1000                => 'thousand',
        1000000             => 'million',
        1000000000          => 'billion',
        1000000000000       => 'trillion',
        1000000000000000    => 'quadrillion',
        1000000000000000000 => 'quintillion'
    );
    
    if (!is_numeric($number)) {
        return false;
    }
    
    if (($number >= 0 && (int) $number < 0) || (int) $number < 0 - PHP_INT_MAX) {
        // overflow
        trigger_error(
            'convert_number_to_words only accepts numbers between -' . PHP_INT_MAX . ' and ' . PHP_INT_MAX,
            E_USER_WARNING
        );
        return false;
    }

    if ($number < 0) {
        return $negative . convert_number_to_words(abs($number));
    }
    
    $string = $fraction = null;
    
    if (strpos($number, '.') !== false) {
        list($number, $fraction) = explode('.', $number);
    }
    
    switch (true) {
        case $number < 21:
            $string = $dictionary[$number];
            break;
        case $number < 100:
            $tens   = ((int) ($number / 10)) * 10;
            $units  = $number % 10;
            $string = $dictionary[$tens];
            if ($units) {
                $string .= $hyphen . $dictionary[$units];
            }
            break;
        case $number < 1000:
            $hundreds  = $number / 100;
            $remainder = $number % 100;
            $string = $dictionary[$hundreds] . ' ' . $dictionary[100];
            if ($remainder) {
                $string .= $conjunction . convert_number_to_words($remainder);
            }
            break;
        default:
            $baseUnit = pow(1000, floor(log($number, 1000)));
            $numBaseUnits = (int) ($number / $baseUnit);
            $remainder = $number % $baseUnit;
            $string = convert_number_to_words($numBaseUnits) . ' ' . $dictionary[$baseUnit];
            if ($remainder) {
                $string .= $remainder < 100 ? $conjunction : $separator;
                $string .= convert_number_to_words($remainder);
            }
            break;
    }
    
    if (null !== $fraction && is_numeric($fraction)) {
        $string .= $decimal;
        $words = array();
        foreach (str_split((string) $fraction) as $number) {
            $words[] = $dictionary[$number];
        }
        $string .= implode(' ', $words);
    }
    
    return $string;
}
?>

Beberapa fungsi php yang berhubungan dengan url adalah sebagai berikut :

<?php
   echo "Mendapatkan path dari file yang aktif" . "<br>";
   echo $PHP_SELF . "<br><br>";

   $url=parse_url("http://localhost/ford/edit_employee.php?kode_employee=5");

   echo "Mendapatkan url scheme" . "<br>";
   echo $url[scheme] . "<br><br>";

   echo "Mendapatkan url host" . "<br>";
   echo $url[host] . "<br><br>";

   echo "Mendapatkan url path" . "<br>";
   echo $url[path] . "<br><br>";

   echo "Mendapatkan url query" . "<br>";
   echo $url[query] . "<br><br>";

   echo "Mendapatkan nama dari file yang aktif" . "<br>";
   echo basename($PHP_SELF) . "<br><br>";

   echo "Mendapatkan referer" . "<br>";
   echo $HTT

Output yang dihasilkan adalah sbb :

Mendapatkan path dari file yang aktif
/latihan/alamat_url_1.php

Mendapatkan url scheme
http

Mendapatkan url host
localhost

Mendapatkan url path
/ford/edit_employee.php

Mendapatkan url query
kode_employee=5

Mendapatkan nama dari file yang aktif
alamat_url_1.php

Mendapatkan referer

str_replace : menghapus semua karakter spasi

syntax :
str_replace("string_expression1", "string_expression2", "string_expression3")

Contoh :

<?php
   $text = "Jakarta Adalah Ibukota Indonesia";
   $hasil = str_replace(" ","", $text);

   $rawstring = "Your replacement is a pleasure to have!";
   $malestr = str_replace("replacement", "son", $rawstring);

   echo "Sebelum = " . $text . "<br>";
   echo "Sesudah = " . $hasil . "<br><br>";

   echo "Sebelum : Son = " . $rawstring . "<br>";
   echo "Sesudah : Son = " . $malestr . "<br>";
?>

Output :

Sebelum = Jakarta Adalah Ibukota Indonesia
Sesudah = JakartaAdalahIbukotaIndonesia

Sebelum : Son = Your replacement is a pleasure to have!
Sesudah : Son = Your son is a pleasure to have!

strcasecmp : membandingkan 2 string yang tidak case sensitive

syntax :
strcasecmp (string $str1, string $str2)

akan menghasilkan < 0 jika str1 < str2
                                     > 0 jika str1 > str2
                                     = 0 jika data sama

Contoh :

<?php
$kata1 = "Jakarta";
$kata2 = "jaKarta";

if (strcasecmp($kata1,$kata2) == 0)
{
    echo "Kata antara " . $kata1 . " dan " . $kata2 . " sama ...";
}
else
{
    echo "Kata tidak sama ...";
}
?>

 

Output yang dihasilkan adalah sbb :

Kata antara Jakarta dan jaKarta sama ...

<script type="text/javascript">

function dontEnter(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
}
document.onkeypress = dontEnter;

</script>

Pada MySQL, fungsi datediff biasanya digunakan untuk mencari selisih tanggal (dalam satuan hari) dengan menggunakan SQL, sintaksnya adalah sebagai berikut :

SELECT datediff('tgl1', 'tgl2');
 
tgl1 dan tgl2 adalah tanggal-tanggal yang akan dicari selisihnya. Untuk format tanggal adalah th-bln-tgl.
Apabila tgl1 < tgl2, maka akan diperoleh selisih hari bernilai negatif. Sedangkan apabila tgl1 > tgl2, maka akan diperoleh selisih 
hari yang bernilai positif.
 
Contoh :
SELECT datediff('2008-01-11','2008-01-01');
 
Dari perintah di atas akan diperoleh hasil  10 (artinya 10 hari).
Untuk mencari selisih dari 2 waktu, sintaks SQL nya adalah :
SELECT timediff('time1', 'time2');
Format time1 dan time2 dapat berupa waktu dalam jam (jam:menit:detik) atau tanggal saja (th-bln-tgl) atau bahkan gabungan jam dan tanggal (th-bln-tgl jam:menit:detik).
Perintah SQL ini akan menghasilkan output dalam format jam (jam:menit:detik).
 
Contoh :
SELECT timediff('14:00', '15:01');
 
Perintah ini akan menghasilkan 1:01:00 (1 jam, 1 menit, 0 detik).
 
 
Sumber :
http://www.firazstarlight.info/tips-dan-trik-php/71-penggunaan-fungsi-datediff-pada-mysql.html

Pada MSSQL perintahnya adalah sbb :

SELECT * FROM TABLE_NAME WITH (nolock)

sedangkan pada MYSQL perintahnya adalah sbb :

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
 
 
Sumber :
http://stackoverflow.com/questions/917640/any-way-to-select-without-causing-locking-in-mysql
 

SELECT * FROM `your_table` LIMIT 0, 10
 
Akan menampilkan 10 record pertama dari database.
 
SELECT * FROM `your_table` LIMIT 5, 5
 
Akan menampilkan 5 record dari database dimulai dari record ke 5, yaitu record ke 6, 7, 8, 9, dan 10.
 
 
Sumber :
http://php.about.com/od/mysqlcommands/g/Limit_sql.htm 

Kita dapat meng-copy struktur table dan seluruh record ke sebuah tabel baru. Perintah CREATE TABLE akan membuat sebuah table dengan struktur yang sama dengan tabel yang lama dan akan menambah seluruh record yang ada.

CREATE TABLE student2
SELECT * FROM studeng


Jika kita ingin membuat sebuah tabel baru dan hanya ingin meng-copy struktur nya :


create table t1 like student

Untuk menghapus tabel yang telah ada :

DROP TABLE IF EXISTS 'studeng5';



Sumber :
http://www.plus2net.com/sql_tutorial/sql_copy_table.php

PHP class ini sangat membantu jika kita ingin berinteraksi dengan Gammu atau Mygnokii2 1.06.00 ( GNU All Mobile Management Utilities).
menggunakan PHP 5.1.4. Pemakai dapat mengirimkan SMS, Download SMS dari Mobile Device (Handphone), Membaca SMS Inbox.
Status: Release
Lisensi: free - opensource
Sistem Operasi: All
Environment: -
Autor: Stieven R. Kalengkian
Bahasa: -
Situs: http://www.phpclasses.org/browse/package/3865.html
Download: http://php-id.org/site/Downloads-req-getit-lid-44.txt


File :
1. class.gammu_nix_win32_v2.php (Main Class)
2. example_gammu_text.php (Contoh Penggunaan)


Untuk instalasi
1. Unzip files ke www or public_html folder anda.
2. Lihat file contoh bagaimana cara penggunaannya


Konfigurasi Gammu dan 'HOW TO'nya
Silahkan merujuk ke Dokumentasi Gammu: http://www.gammu.org/


Download Gammu :
Linux : http://dl.cihar.com/gammu/releases/gammu-1.10.0.tar.gz
Windows : http://dl.cihar.com/gammu/releases/windows/Gammu-1.10.0-Windows.zip


Source Download Link:
http://php-id.org/site/Downloads-req-getit-lid-44.txt

 

Sumber :
http://opensource-indonesia.com/kioss.php/line149-phpgammuKirimSMSdenganPHPviagammu.txt

<?php
//$my_report = "c:\\RekapPHarian.rpt";
$my_report = 'C:\Program Files\xampp\htdocs\lat\report\LapArsip13.rpt';
$my_pdf = 'C:\Program Files\xampp\htdocs\lat\report\LapArsip13.pdf';
//$my_report = "C:\\report\LapArsip12.rpt";
//$my_pdf = "C:\\report\LapArsip12.pdf";
$ObjectFactory= New COM("CrystalReports11.ObjectFactory.1");
$crapp =$ObjectFactory->CreateObject("CrystalDesignRunTime.Application");
$creport = $crapp->OpenReport($my_report, 1);
//$creport->FormulaSyntax = 0;
$creport->RecordSelectionFormula= "{vimb.NmKel} = 'Belakang Balok'";
//$creport->sqlquery="select * from vimb";
$creport->ReadRecords(); //hangs here
//------ Pass formula fields --------
$creport->FormulaFields->Item(1)->Text = ("'My Report Title'");
//$creport->FormulaFields->Item(2)->Text = ("'My d Title'");
//$creport->ParameterFields(1)->AddCurrentValue ("FirstParameter");
//$creport->ParameterFields(2)->AddCurrentValue (2000);
$creport->ExportOptions->DiskFileName=$my_pdf;
$creport->ExportOptions->PDFExportAllPages=true;
$creport->ExportOptions->DestinationType=1; // Export to File
$creport->ExportOptions->FormatType=31; // Type: PDF
$creport->Export(false);
print "<embed src=\"report/LapArsip13.pdf\" width=\"100%\" height=\"100%\">";
?>

Sumber :
http://www.diskusiweb.com/viewthread.php?tid=37481

$cr=new com("CrystalRuntime.Application") or die("cannot load cr com");
$rn="F:\notes5\test.rpt";
$rap=$cr->OpenReport($rn);

$cr=new com("CrystalRuntime.Application.11") or die("cannot load cr com");
$rn="F:\notes5\test.rpt";
$rap=$cr->OpenReport($rn);

------------------------------

<?php
$crapp = new COM ("CrystalRuntime.Application") or die ("Error on
load");
$creport = $crapp->OpenReport("c:/test.rpt", 1);
$creport->ExportOptions->DiskFileName="c:/test.rtf";
$creport->ExportOptions->DestinationType=1; // Export to File
$creport->ExportOptions->FormatType=4; // Type: RTF
$creport->DiscardSavedData();
$creport->Export(false);
$creport = null;
$crapp = null;
print "...done";
?>

$crapp = new COM ("CrystalRuntime.Application")
or die ("Error on load");
echo "<p>Enumerating CrystalRuntime.Application object:</p>";
$crapp->Reset();
while ($e = $crapp->Next()) {
echo "<p>$e</p>";
}

$crapp->Release()

------------------------------

<OBJECT ID="CRViewer"
CLASSID="CLSID:C4847596-972C-11D0-9567-00A0C9273C2A"
WIDTH=100% HEIGHT=95%
CODEBASE="/viewer/activeXViewer/activexviewer.cab#Version=8,0,0,371">
<PARAM NAME="EnableDrillDown" VALUE=1>
<PARAM NAME="EnableExportButton" VALUE=1>
<PARAM NAME="DisplayGroupTree" VALUE=1>
<PARAM NAME="EnableGroupTree" VALUE=1>
<PARAM NAME="EnableAnimationControl" VALUE=1>
<PARAM NAME="EnablePrintButton" VALUE=1>
<PARAM NAME="EnableRefreshButton" VALUE=1>
<PARAM NAME="EnableSearchControl" VALUE=1>
<PARAM NAME="EnableZoomControl" VALUE=1>
<PARAM NAME="EnableSearchExpertButton" VALUE=0>
<PARAM NAME="EnableSelectExpertButton" VALUE=0>
</OBJECT>

Script PHP kali ini merupakan lanjutan dari rulisan sebelumnya yang membahas masalah pembuatan script Captcha dengan PHP. Pada tulisan sebelumnya kita sudah membahas script inti dari Captcha yang bertugas membuat gambar captcha-nya. Nah sekarang kita akan lihat bagaimana mengimplementasikannya pada sebuah form.
Pada dasarnya, kamu bisa aja menempelkan script ini di manapun. Namun dalam contoh kali ini, kita akan membuat sebuah form sederhana untuk mencoba script PHP captcha kita.
<?php
session_start();
if(isset($_POST['submit'])) {
    if(isset($_POST['captcha_code']) && isset($_SESSION['captcha_code'])) {
        if(md5($_POST['captcha_code']) == $_SESSION['captcha_code']) {
            echo 'Result: CAPTCHA code correct.<br />';
        }else{
            echo 'Result: CAPTCHA code incorrect.<br />';
        }
    }else{
        if(!isset($_POST['captcha_code'])) {
            echo 'Result: No security code was entered.<br />';
        }
        if(!isset($_SESSION['captcha_code'])) {
            echo 'Result: No CAPTCHA was viewed.<br />';
        }
    }
}
?>
<form method="POST">
<img src="captcha.php" />
<br />
Enter the above text EXACTALY as it appears. Note: It is case sensitive<br />
<input type="text" name="captcha_code" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

Sumber :
http://prothelon.com/mambo/membuat-captcha-dengan-php-bag-2.html