Sabtu, 03 Desember 2011

Contoh-contoh PHP

Contoh Form PHP Input

<html>

<head>

<title>Biodata Pelanggan</title>

</head>

<body >

<table width=50% bordercolor=red cellpadding=0 cellspacing=0 align=center
border=1 bgcolor=white>

<tr>

<center><b><h2>Silahkan Masukan Data Anda</h2></b></center>

<hr>

<form method="post" action="form_order2.php">

<pre>

Nama Pelanggan : <input type=text name="pelanggan" size=10>

Nama Barang : <input type=Checkbox name="brg1" value=Hardisk >Hardisk
(Rp.500.000,-)

<input type=Checkbox name="brg2" value=CDROM >CDROM (Rp.300.000,-)

<input type=Checkbox name="brg3" value=Mouse >Mouse (Rp.30.000,-)

<input type=Checkbox name="brg4" value=Printer >Printer (Rp.400.000,-)

Jumlah Beli : <input type="text" name="jumbel" size=2>

Diskon : <input type="radio" name="disc1" value="Tidak" unchecked>Tidak

<input type="radio" name="disc2" value="10%" unchecked>10%

<input type="radio" name="disc3" value="20%" unchecked>20%

<hr><localhost/ady/Clock.exe>

<center><input type=submit value=Cetak> <input type=reset value=Batal></center>

</pre>

</table>

</body>

</html>



CONTOH SCRIPT SOAL PILIHAN GANDA PADA PHP

Pertama, kita desain dulu databasenya, buka phpmyadmin atau MySQL Front atau apapun yang biasa dipakai untuk manajemen database MySQL. Tabel pertama adalah table soal, yang akan menyimpan soal-soal.

1 CREATE TABLE `soal` (
2 `id` int(99) NOT NULL AUTO_INCREMENT,
3 `soal` text NOT NULL,
4 PRIMARY KEY (`id`)
5 );

ID adalah primary key dari tiap record, sedangkan field “soal” akan menyimpan text-text soal. Tabel “soal” sudah jadi, sekarang kita buat tabel jawaban.


1 CREATE TABLE `jawaban` (
2 `id` int(99) NOT NULL AUTO_INCREMENT,
3 `soal` int(99) NOT NULL,
4 `jawaban` text NOT NULL,
5 `benar` tinyint(1) NOT NULL,
6 PRIMARY KEY (`id`)
7 );

Field “id”, adalah primary key dari tiap record. Field “soal” adalah foreign key yang menunjuk pada tabel soal. Misalkan pada sebuah record di tabel jawaban, terdapat nilai “3” pada field “soal”, maka itu berarti jawaban tersebut milik soal yang ber-id “3” pada tabel soal. Field “jawaban” adalah field yang menyimpan teks jawaban. Field “benar” adalah field yang menentukan jawaban tersebut benar atau tidak (karena peraturannya adalah pilihan berganda), mungkin saja ada banyak jawaban untuk satu soal, tapi hanya satu yang benar. Kita akan set 0 untuk tiap jawaban yang salah, dan 1 untuk jawaban yang benar.
Oke, tabel udah jadi, sekarang kita masuk ke script, perlu diingat struktur file disini dibuat sesederhana mungkin, tapi jangan diikuti untuk website sebenarnya yak .



Ini script untuk menampilkan soal dan jawabannya, jangan khawatir tiap baris sudah diberi komentar penjelas kok . Klo di jelasin disini lagi justru berbelit-belit , simpan dengan nama soal_view.php :


01 <?

02 $db=mysql_connect("localhost","root","");

03 if($db)

04 {

05 if(mysql_select_db("tutorial_1"))

06 {

07 // Database selected

08 }

09 else

10 {
11 echo "Can�t select database!";

12 exit;

13 }

14 }

15 else

16 {

17 echo "Can�t Connect to MySQL Server!";

18 exit;

19 }

20 ?>

21 <form method="post" action="soal_process.php">

22 <?

23 // Inisialisasi variabel

24 $soal=array(); // Array yang digunakan untuk menyimpan "id" soal

25 $soal_max=3; // Jumlah soal yang akan ditampilkan

26 $nomor=1; // nomor urutan soal

27 // Kumpulkan nilai-nilai "id" yang ada pada tabel "soal", simpan ke array "soal"

28 $query=mysql_query("SELECT * FROM soal");

29 while($row=mysql_fetch_array($query))

30 {

31 $soal[]=$row[id];

32 }

33 // Yup, array "soal" sudah terisi, tinggal diacak dan di buang hingga isinya tinggal $soal_max

34 // fungsi array_rand, tidak mengacak isi dari array, melainkan hanya nomor urut dari array

35 // karena itu kita gunakan variabel $soal_urut, untuk menyimpan urutan soal yang sudah diacak

36 // MIS : sebelum diacak :

37 // isi array (0=>"1",1=>"2",2=>"3",3=>"4",4=>"5") angka di sebelah kiri adalah nomor urut array

38 // dan yang disebelah kanan adalah isi dari array tersebut

39 // fungsi array_rand, hanya mengacak urutannya, bukan nilainya.

40 $soal_urut=array_rand($soal,$soal_max);

41 while($s=each($soal_urut))

42 {

43 // ambil nomor soal

44 $soal_nomor=$s["value"]; // ambil nomor urut array

45 $soal_nomor=$soal[$soal_nomor]; // ambil array dengan nomor urut $soal_nomor

46 // tampilkan soal

47 $query=mysql_query("SELECT * FROM soal WHERE id=".$soal_nomor);

48 $row=mysql_fetch_array($query);

49 echo "<b>$nomor. ".$row[soal]." ?</b>";

50

51 // tampilkan pilihan ganda, dalam bentuk radio button

52 // value pada radio button kita set sesuai "id" dari jawaban tersebut

53 // jadi, nanti pada saat di proses, cukup kita cek apakah jawaban dengan "id"

54 // tersebut nilai "benar"nya 0 atau 1.

55 $query=mysql_query("SELECT * FROM jawaban WHERE soal=".$soal_nomor);

56 while($row=mysql_fetch_array($query))

57 {

58 $id=$row[id];

59 $jawab=$row[jawaban];

60 $benar=$row[benar];

61

62 // kita beri nama radio buttonnya jawab_$soal_nomor, kalau "id" soal yang sekarang

63 // adalah 10, maka radio buttonnya jadi jawab_10, dst.

64 echo "<input type=\\"radio\\" name=\\"jawab_$soal_nomor\\" value=\\"$id\\">$jawab";

65 }

66 // Oh iya, disini juga kita buat string yang isinya array soal yang sudah diacak tadi

67 // tujuannya, untuk kita masukan ke hidden field, dan ikut di transfer bersama

68 // form, kemudian nanti di pecah lagi menjadi array pada soal_process.php

69 // string ini berguna untuk menyimpan urutan soal mana saja yang ditampilkan sekarang

70 $soal_nomor_send.=$soal_nomor . ",";

71

72 // Ini nomor urut soal, untuk tampilan saja

73 $nomor++;

74 }

75 // Karena string dari array soal yang kita kumpulkan tadi sudah selesai, namun

76 // karakter terakhirnya masih ada "koma" (mis : "5,3,2,1,"), jadi kita ilangin komanya dulu

77 $soal_nomor_send=substr($soal_nomor_send,0,strlen($soal_nomor_send)-1);

78

79 // yup, sekarang string dari array soal sudah jadi, tinggal di masukan ke hidden field

80 echo "<input type=\\"hidden\\" name=\\"soal_nomor\\" value=\\"$soal_nomor_send\\">";

81 ?>

82 <input type="submit" value="Jawab">

83 </form>

Dan ini, adalah file untuk memproses jawaban, simpan dengan nama file soal_process.php :


01 <?

02 $db=mysql_connect("localhost","root","");

03 if($db)

04 {

05 if(mysql_select_db("tutorial_1"))

06 {

07 // Database selected

08 }

09 else

10 {

11 echo "Can�t select database!";

12 exit;

13 }

14 }

15 else

16 {

17 echo "Can�t Connect to MySQL Server!";

18 exit;

19 }

20 ?>

21

22 &lt;?

23 // Inisialisasi variabel

24 $user_jawab=array(); // Array yang digunakan untuk menyimpan jawaban user dari form tadi

25 $soal_urut=array(); // Array yang digunakan untuk menyimpan urutan soal dari form tadi (hidden field)

26 $nomor=1; // nomor urutan soal

27

28 $soal_urut=$_POST["soal_nomor"]; // Ambil hidden field dari form tadi

29 $soal_urut=explode(",",$soal_urut); // pecah menjadi array, pecah berdasarkan tanda ","

30

31 // Tampilkan soal-soal yang tadi

32 while($s=each($soal_urut))

33 {

34 $soal_nomor=$s["value"]; // ambil "id" soal

35

36 // tampilkan soal

37 $query=mysql_query("SELECT * FROM soal WHERE id=".$soal_nomor);

38 $row=mysql_fetch_array($query);

39 echo "<b>$nomor. ".$row[soal]." ?</b>";

40

41 // tampilkan pilihan ganda

42 $query=mysql_query("SELECT * FROM jawaban WHERE soal=".$soal_nomor);

43 while($row=mysql_fetch_array($query))

44 {

45

46 $id=$row[id];

47 $jawab=$row[jawaban];

48 $benar=$row[benar];

49

50 // kita ambil "id" jawaban yang di submit user dari form tadi

51 $user_jawab=$_POST["jawab_$soal_nomor"];

52

53 // apakah "id" jawaban yang sedang ada di query ini sama dengan "id"/value pada radio button yang disubmit user?

54 if($user_jawab==$id){

55 if($benar==0){ // apakah salah jawaban si user?

56 $jawab_status="<span style=�color:red;�>&lt;&lt; Jawaban Anda� Salah!</span>";

57 }else{ // atau benar?

58 $jawab_status="<span style=�color:blue;�>&lt;&lt; Jawaban Anda� Benar!</span>";

59 }

60 }

61 else // kalau "id"nya tidak sama

62 {

63 $jawab_status="";

64 }

65

66 // tampilkan radio buttonnya

67 echo "<input type=\\"radio\\" name=\\"jawab_$soal_nomor\\" value=\\"$id\\">$jawab $jawab_status";

68 }

69 $nomor++; // nomor urut soal, hanya tampilan saja

70 }

71 ?>

KUMPULAN-KUMPULAN SCRIPT BERGUNA

membuat signature untuk gambar dengan GD LIB dan PHP
Code: [Select]
<?php/*
Signaturing/Watermarkin Your Images
By Rizuki a.k.a ShinnAsuka (http://www.rizkhey.net/)
*/
/*WATERMARKING CODE - ADDING SYMBOL  ON Big Picture FOR CREDIT*/
$watermark  imagecreatefrompng("files/mysignature.png");//masukan alamat absolut dari gambar yang akan dijadikan signature
//Kemudian 2 line script di bawah akan mengambil ukuran  dari image yang akan dijadikan signature
$watermark_width imagesx($watermark);$watermark_height imagesy($watermark);
$image imagecreatefromjpeg("files/mainimage.jpg");//masukan  gambar utama yang akan ditempeli signature
//ambil ukurannya dengan fungsi "getimagesize"
$size getimagesize("$thumnamepath");
//tentukan koordinat letak signature pada gambar utama
//Pada script di bawah ini, signature akan berada d tengah-tengah gambar utama
$dest_x = ($size[0]/2) - ($watermark_width/2) - 5;$dest_y = ($size[1]/2) - ($watermark_height/2) - 5;
//Gunakan scipt di bawah ini apabila ingin menaruhnya di bagian pojok kanan bawah
/*
$dest_x = $size[0] - $watermark_width - 5; //5 pixel untuk jarak padding dari pojok kanan
$dest_y = $size[1] - $watermark_height - 5; // 5 pixel untuk padding dari batas bawah image utama
*/

//Set Transparansi disini, nilai minimum 0(invisible) dan maksimum 100(Visible solid/no transparancy)
$transparancy 10;
imagecopymerge($image$watermark$dest_x$dest_y00$watermark_width$watermark_height$transparancy);
imagejpg($image//disable line ini apabila tidak ingin menampilkan hasilnya
imagedestroy($watermark);imagedestroy($image);
//Aktifkan line di bawah kalau ingin menyimpan hasilnya(berguna pada case upload dll)
//imagejpeg($image,$thumnamepath,80);
/*WATERMARKING CODE - ADDING SYMBOL  ON Big Picture FOR CREDIT END*/
?>

Pastikan kalau pakai PNG, gunakan PNG 8 (gunakan fireworks kalau gampangnya di bagian eksport ada optionnya), semenjak sejak GD 2.0 fungsionalitas GIF dihilangkan karena lisensi.

Apabila menggunakan type lain(contohnya Jpeg), ganti line

Code: [Select]
$watermark  = imagecreatefrompng("files/mysignature.png");dengan 
Code: [Select]
$watermark  = imagecreatefromjpeg("files/mysignature.jpg");
Result example:

Microsoft Internet Explorer Detection

Walau sangat umum, tapi bukan berarti sangat berguna, IE mungkin merupakan salah satu browser yang membuat beberapa orang desainer web harus menambah jam kerja karena beberapa alasan tertentu. Apalagi IE6 masih banyak digunakan sehingga desainer harus berhadapan dengan kompitabelitas dengan CSS2 dan transparancy PNG file.

gw sendiri pernah mengalaminya, tetapi gw mencoba untuk membuat script agar sang pengunjung tau beberapa bagian website mungkin akan tidak muncul dengan benar. So here is the script

Code: [Select]
/*
IE checker script
By Rizuki a.k.a ShinnAsuka (http://www.rizkhey.net/)
*/
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)
{
$s = $_SERVER['HTTP_USER_AGENT'];
preg_match('# ([0-9]+)#i', $s, $matches);
if ($matches[0]!="MSIE 7.0")
{
preg_match('# ([0-9]+)#i', $s, $matches1);

if ($matches1[0]<7) // Masukan versi minimal yang diinginkan
{
echo "<table width=\"400\" border=\"0\" align=\"center\" cellpadding=\"5\" cellspacing=\"0\">
<tr>
    <td><div align=\"center\"><strong>ATTENTION</strong></div></td>
</tr>
<tr>
    <td>You are using Internet Explorer ver. $matches1[0].<br /><br />This site can be viewed perfectly only with Internet Explorer ver. 7.0 or other supported browser(ex:Mozilla Firefox or Opera).</td>
</tr>
</table>";
     
}

}
}


perhatikan pada line ini
Code: [Select]
if ($matches1[0]<7) // Masukan versi minimal yang diinginkangantilah Angka 7 dengan versi minimal IE yang diinginkan. Karena menurut gw IE 7 ga gitu parah dibanting IE6(CSS2 udah cukup jalan dan PNG sudah ga gitu masalah), sehingga gw beri disitu minimal versi adalah IE 7.

Tetapi apabila pengen bener2 ngusir pengunjung pengguna IE, inilah caranya(Bukan ide yang baik juga bro/sis...pertimbangkanlah 90% masyarakat diluar ga ngerti Firefox, etc.. )
Code: [Select]
/*
IE checker script
By Rizuki a.k.a ShinnAsuka (http://www.rizkhey.net/)
*/
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)
{
echo "Anda Menggunakan Internet Explorer Browser, Harap Ganti Browser Anda untuk menampilkan Website ini";
die();
}

Perintah 
Code: [Select]
die();Dimaksudkan agar line berikutnya sudah tidak terbaca lagi(berguna apabila menginginkan pengguna IE tidak melihat sedikitpun kontent yang ada setelah script ini)...

Enjoy  ::bersiul::

Simple PHP Visitor Counter with PHP and GD LIB

Little Tricky, tapi inilah yang terjadi. Gw masih inget dulu pakai model-model begini hasilnya setiap refresh maka akan menimbulkan penambahan counter sebanyak satu buah. Ini sih bukan counter namanya 

So gw buat dengan menggunakan session. Plus gw pakai database untuk menyimpan jumlah counternya, sory gw ga pake file untuk menyimpannya karena agak riskan pada beberapa server yang tidak mengijinkan CHMOD 666 (walau lebih sedikit daripada yang 777). Well Codenya ga terlalu rese amat sie… hanya butuh beberapa fungsi GDLib.

Tambahkan satu file True Type Font di dalam folder yang sama dengan bg.php atau butuh edit dikid. Font file bisa did apatkan di directory windows. cari yang .ttf 

database connection (optional mo pake ini atau punhya sendiri). Beri nama “config.php”:
Code: [Select]
<?php
session_start(); /*
User Counter  script
Autthor : Rizuki a.k.a ShinnAsuka
Website : http://www.rizkhey.net
*/
/*
Include setting koneksi Database  Anda atau Anda dapat menggunakan koneksi database Anda sendiri
*/
include "config.php"; /*
Checking Apakah Visitor sudah pernah mengunjungi halaman tsb atau belum sehingga  penambahan counter yang tak perlu dapat dicegah.
Apabila sudah pernah mengunjungi halaman tsb maka pada baris   "if (!isset($_SESSION['uservisit']))" akan menghasilkan FALSE
Apabila belum, maka akan masuk ke perintah selanjutnya untuk memberi identifier agar sesekali di load lagi counter tidak akan bertambah.
*/
if (!isset($_SESSION['uservisit'])) { $_SESSION['uservisit'] "ok"; //Masukan identifier $query mysql_query("SELECT value FROM setting WHERE name='usercount'")or die(mysql_error()); $result mysql_fetch_array($query); $result[0] $result[0] + ; //Tambahkan jumlah pengunjung 1 orang mysql_query("UPDATE setting SET value='$result[0]' WHERE name='usercount'")or die(mysql_error()); }
  
//Persiapkan image
  
$im imagecreate(17030);
  
/*
imagecolorallocate($im, a,b, c)

a = nilai RED 1-255 (integer)
b = nilai GREEN 1-255 (integer)
c = nilai BLUE 1-255(integer)

Atau gunakan program pengolah grafis seperti  Macromedia(Adobe) Fireworks atau Adobe Photoshop di color palet untuk melihatnya
*/
  
$white imagecolorallocate($im000); //background image
  
$black imagecolorallocate($im255510); //Font color

  //read from database for current user count
  
$query mysql_query("SELECT value FROM setting WHERE name='usercount'")or die(mysql_error());
  
$result mysql_fetch_array($query);
  
/*
Jumlah panjang character adalah 11 character. Sehingga apabila  hanya jumlahnya 1 digit maka akan menghasilkan gambar "00000000001"
Jikalau 2 Digit maka menjadi "000000000xx" dst.
*/
  
$numvisitor "$result[0]";
  
$pjg  strlen($numvisitor);
  
$sumnul 10 $pjg;
  
$snul "0";
  while (
$sumnul>0)
  {
$snul .= "0"; $sumnul--;
  }

  
$numvisitor "$snul$numvisitor";


  
// masukan hasil modifikasi ke dalam gambar yuang sudah dibuat
  
imagettftext($im1602023$black"tahoma.ttf","$numvisitor");
  
imagejpeg($im);
  
imagedestroy($im);?>

Database Drop:
Code: [Select]
CREATE TABLE `setting` (
  `id` int(5) NOT NULL,
  `name` varchar(20) collate latin1_general_ci NOT NULL,
  `value` varchar(20) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;



INSERT INTO `setting` (`id`, `name`, `value`) VALUES
(0, 'usercount', '0');

Masukan semua file tersebut pada satu folder, contohnya folder “counter”. Untuk menggunakannya cukup gunakan tag HTML untuk insert image seperti biasa:
Code: [Select]
<img src="http://www.rizkhey.net/counter/bg.php" border="0" alt="" />
Dengan penambahan variable global “session” maka apabila sudah sekali terhitung tidak akan terhitung lagi, kecuali browser ditutup atau dari PHP mengeksekusi function “session_destroy()” yang dapat menghancurkan semua session yang ada. Well tapi masih lebih mendingan ketimbang setiap refresh akan bertambah counternya…

Make Copy File from URL(images)

Well dalam PHP yang gw suka adalah amnipulasi images(it's fun afterall, And altough I'm hardware lover, but still Coding is something else too  ::toeng::). Kali ini gw akan kasih sebuah code untuk mengcopy image dari URL. Seperti halnya "imageshack.us" menggunakan url untuk mengupload images. 

Celakanya cara menguploadnya tidak bisa disamakan dengan upload dari komputer kita yang sangat simple dengan menggunakan syntax:
Code: [Select]
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
lebih rumit memang, karena ini juga terbatas pada aturan hosting masing-masing. Contoh hosting yang gw pakai sekarang tidak bisa menggunakan copying file via syntax copy. Speerti contoh berikut:

Code: [Select]

/*
$url => URL image yang akan dicopy
$newfilenamedir => ALamat tujuan file akan disimpan
*/

if (!copy($url,$newfilenamedir))
{
echo "<meta http-equiv=\"refresh\" content=\"0;URL=home.php?mess=Error Copying File\">";
die();
}

Memang ada benarnya kalo fungsi tsb di disable. Why? Coba bayangkan kalau ada yang mencopy file config kalian? dangerous deh... password database dan juga usernamenya ketauan, bisa ludeszh isi DB  ::swt::

Sooo setelah melalui proses bertapa satu malam Thx to om Google, I Found the answer  ::megangdagu::

Code: [Select]
<?php
/*
Copying images from URL to your Server
Author : Rizuki a.k.a ShinnAsuka
Website : http://www.rizkhey.net
*/
/*
KETERANGAN:
$url => berisi URL tempat image yang akan di copy
$result[0] => berisi filename yang akan digunakan untuk file hasil copyan(gunakan variable lain karena ini code gw comot dari aplikasi gw
$uploadir => tempat dimana upload file akan ditaruh(absolute path)
*/

/*================ READING Extension using something easy T.T =====================*/



preg_match("/\\.(jpg|JPG|GIF|PNG|gif|png|gif?)$/",$url,$matches);preg_match("/(jpg|JPG|GIF|PNG|gif|png|gif?)$/",$matches[0],$matches);

$file=$matches[0];
$filetype "image/$file";

if (
$filetype=="image/jpg" || $filetype=="image/JPG")
{
$filetype "image/jpeg";
}
/*======================= END OF READING ===============================*/
  if ($filetype=="image/jpeg") { $filename "$result[0].jpg"; } else if ($filetype=="image/pjpeg") { $filename "$result[0].jpg"; } else if ($filetype=="image/gif") { $filename "$result[0].gif"; } else if ($filetype=="image/x-png") { $filename "$result[0].png"; } else if ($filetype=="image/png") { $filename "$result[0].png"; } else { echo "file type $filetype not Registered or Allowed"; die(); }
// First Stage Finished... Lanjut..........
$newfilename $filename; $newfilenamedir "$uploaddir$filename";
$tmpname "$uploaddir/temp.tmp";

//The main event...... $ch curl_init($url); $fp fopen("$tmpname"'w'); curl_setopt($chCURLOPT_FILE$fp); curl_setopt($chCURLOPT_HEADER0); curl_setopt($chCURLOPT_FOLLOWLOCATION1); curl_exec($ch); curl_close($ch); fclose($fp); copy ($tmpname,$newfilenamedir);
?>


cara diatas menggunakan "CURL" menthod. Pada beberapa server mungkin di dukung mungkin juga tidak. Kalau ngetest di localhost(using XAMPP) fungsi ini ga akan di dukung. jadi gambling aja coba2 dulu di hosting di internet  ::toeng::

enjoy....

BUAT MENGETAHUI ALAMAT URL SEKARANG

function currentPageURL()
{
   $pageURL = 'http';
   if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
      $pageURL .= "://";
   if ($_SERVER["SERVER_PORT"] != "80")
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
   else
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
      
   return $pageURL;
}

Oiya thread ini bagus banget, jadi kalo bisa isinya bener2 kumpulan script2 aja yah. Jgn sampe ada komentar2 seperti "bagus kk thanks, ditunggu updatenya".

Tidak ada komentar:

Posting Komentar