[tanya] cara bikin form submit


Status
Not open for further replies.

perdhanahost

Hosting Guru
mas, saya dah coba masukin manual alamat http://localhost/formulir/view.php?sal=Mr.&name=Joko&age=25&stat=married di address bar, tapi kok muncul error ini ya?

cuma kalau saya ganti $_POST di view.php sama $_GET itu baru normal. tapi kan katanya $_GET itu ga aman, trus gimana mas?

Kirimnya pakai tipe POST. Di form HTMLnya harus dirubah tipenya (method="post"). Nanti di view.php semua $_GET ganti dengan $_POST.

oh ya, di option salutation itu kan awalnya ada icon gambar gender gitu mas, tapi kok ga bisa ngikut ya gambarnya itu? caranya gimana mas biar gambarnnya ada di depan nilai salutation waktu di preview?

Ya harus manual mas. Misalnya nih gambar tadi lokasinya di

Code:
/home/fadli/public_html/images/male.png
/home/fadli/public_html/images/female.png

Waktu nampilkan di view.php harus dikeluarkan manual:

Code:
<?php

if($_GET['sal'] == "Mr.")
  $gender_image_path = "/home/fadli/public_html/images/male.png";
else
  $gender_image_path = "/home/fadli/public_html/images/female.png";

echo 'Beliau berjenis kelamin <img src="'. $gender_image_path .'" />';

?>

Semoga membantu.
 

Fadli

Poster 2.0
sip2.. makasih banyak ya semua... sudah berhasil sekarang :D

oya, satu lagi nih, waktu itu saya pernah liat di website mana gitu waktu saya klik tombol submit, dia keluar kotak resultnya ga pake reload browser kalo ga salah itu pake jquery. jadi sebelum di eksekusi kotak result ga nampak di halaman itu, tapi begitu di klik submit keluar deh tapi ga pake reload. saya coba cari2 soal jquery tapi blm nemu juga, kayaknya keyword yang saya coba2 cari ga tepat :D

ada yang tau ga kalo kayak begitu pakenya apa ya namanya?
 

perdhanahost

Hosting Guru

Fadli

Poster 2.0
luar biasa! saya benar2 banyak belajar dari sini :)

tapi masih lanjut ya mas :D

saya pake script ini untuk ambil data-data dari suatu folder, biar tidak memasukkannya secara manual ke dalam tabel:
Code:
<table cellpadding="0" cellspacing="0" border="0">
	<?php 
	$dirpath = './images';
	if($dir = opendir($dirpath))
	{
		while(false !== ($file = readdir($dir)))
		{
			if($file != '.' AND $file != '..')
		{
				if( ! is_dir("$dirpath/$file"))
				{
					echo '<tr>
							<td><img src="'.$dirpath.'/'.$file.'" /></td>
						</tr>';
				}
			}
		}
		closedir($dir);
	}
	?>
</table>

cuma masalahnya, kode itu mengambil nama file beserta ekstensinya (mr1.jpg) sementara saya hanya perlu nama filenya saja (mr1 tanpa .jpg). jadi, apa yang harus saya tambahkan dari script diatas mas? makasih banyak sekali lagi!
 

perdhanahost

Hosting Guru
Gampang mas. Pakai function php pathinfo(). Kalo bisa pastikan versi php-nya lebih tinggi dari 5.2.0.

Yang bercetak tebal dan berwarna merah adalah perubahan script yang saya buat.

Code:
<table cellpadding="0" cellspacing="0" border="0">
<?php 
  $dirpath = './images';
  if($dir = opendir($dirpath))
  {
    while(false !== ($file = readdir($dir)))
    {
      if($file != '.' AND $file != '..')
      {
        if( ! is_dir("$dirpath/$file"))
        {
          [B][COLOR="Red"]$fileloc = $dirpath .'/'. $file;[/COLOR][/B]
          [B][COLOR="Red"]$fileinfo = pathinfo($fileloc);[/COLOR][/B]
          echo '<tr>
                  <td><img src="'. [B][COLOR="Red"]$fileinfo['filename'][/COLOR][/B] .'" /></td>
                </tr>';
        }
      }
    }
    closedir($dir);
  }
?>
</table>

Untuk keterangan lebih detail tentang fungsi pathinfo(), silakan merujuk ke halaman
http://php.net/manual/en/function.pathinfo.php

Semoga membantu. :)
 

Fadli

Poster 2.0
kok ga muncul ya mas? saya buat jadinya seperti ini apa ada yang salah?
Code:
		<table cellpadding="0" cellspacing="0" border="0">
		<?php 
		  $dirpath = './images';
		  if($dir = opendir($dirpath))
		  {
			while(false !== ($file = readdir($dir)))
			{
			  if($file != '.' AND $file != '..')
			  {
				if( ! is_dir("$dirpath/$file"))
				{
				  $fileloc = $dirpath .'/'. $file;
				  $fileinfo = pathinfo($fileloc);
				  echo '<tr>
						  <td><img src="'. $fileinfo['filename'] .'.jpg" /></td>
						</tr>';
				}
			  }
			}
			closedir($dir);
		  }
		?>
		</table>

atau jangan-jangan php saya ga mencukupi seperti yang disyaratkan 5.2.0 itu ya? saya pake AppServ di localhost.

terus saya juga mau tambah radio button, sehingga nantinya jadi seperti ini:
Code:
							echo '<tr>
									<td><img src="'.$dirpath.'/'.$file.'.jpg" /></td>
									<td width="10px"><input type="radio" name="images" value="'.$file.'" /></td>
								</tr>';
nah, tujuan saya mau ambil nama filenya aja, supaya nama file itu juga bisa saya masukkan sebagai nilai di dalam value :D tapi masalah selanjutnya, saya ga bisa masukkan radio button yang pertama dengan checked="checked" karena kalau saya masukkan di dalam input tersebut, maka semua gambar akan punya checked="checked" :(

mohon pencerahannya lagi mas... trims
 

perdhanahost

Hosting Guru
kok ga muncul ya mas? saya buat jadinya seperti ini apa ada yang salah?

atau jangan-jangan php saya ga mencukupi seperti yang disyaratkan 5.2.0 itu ya? saya pake AppServ di localhost.

Yap. Pastikan dulu versinya. Kalau memang belum 5.2.0 atau yang lebih tinggi, tinggal diupgrade saja. :)

Kalau malas upgrade, berarti harus rajin coding. Nama file itu bisa didapatkan dengan secara manual mengolah path.
 

Fadli

Poster 2.0
kalaupun saya upgrade, apa nanti ga percuma mas? misalnya ketika saya pindahkan ke tempat lain, berarti di tempat baru itu nanti saya pun harus upgrade lagi?

dari milis saya dapat solusi pakai file = basename($file, '.jpg');

Code:
<table cellpadding="0" cellspacing="0" border="0">
	<?php 
	$dirpath = './images';
	if($dir = opendir($dirpath))
	{
		while(false !== ($file = readdir($dir)))
		{
			if($file != '.' AND $file != '..')
			{
				if( ! is_dir("$dirpath/$file"))
				{
					file = basename($file, '.jpg');
					echo '<tr>
							<td><img src="'.$dirpath.'/'.$file.'.jpg" /></td>
							<td width="10px"><input type="radio" name="images" value="'.$file.'" [COLOR="red"][B]checked="checked"[/B][/COLOR] /></td>
						</tr>';
				}
			}
		}
				
		closedir($dir);
	}
	?>
</table>

cuma kekurangannya, gambar yang ditampilkan menjadi tidak berurut secara alphabetic kalau diberi nomer di depannya. dan juga ada beberapa gambar yang tidak mau saya tampilkan bagaimana scriptnya ya? sebut saja struktur gambarnya seperti ini:
1mr.jpg
1mr-1.jpg
2mr.jpg
2mr-1.jpg
3mr.jpg
3mr-1.jpg
1mrs.jpg
1mrs-1.jpg
2mrs.jpg
2mrs-1.jpg
3mrs.jpg
4mrs-1.jpg
...dst...

nah, saya mau supaya gambar yang memiliki akhiran -1 itu tidak ditampilkan dalam table. juga yang masih jadi kekurangan dalam script diatas adalah kalau gambarnya sampai puluhan, maka dia akan mengurutkannya seperti ini:
1mr.jpg
10mr.jpg
11mr.jpg
..dst..
2mr.jpg
21mr.jpg
..dst..
3mr.jpg

bagaimana caranya supaya urutannya menjadi:
1mr.jpg
2mr.jpg
3mr.jpg
..dst..
10mr.jpg
11mr.jpg

terakhir pada bagian "checked" yang saya beri tanda merah itu kalau saya kasih disitu kan otomatis semua radio button akan bernilai "checked" nah, bagaimana caranya supaya hanya gambar pertama saja yang punya di "checked"?
 

perdhanahost

Hosting Guru
kalaupun saya upgrade, apa nanti ga percuma mas? misalnya ketika saya pindahkan ke tempat lain, berarti di tempat baru itu nanti saya pun harus upgrade lagi?

Tempat baru ini maksudnya apa mas? Apakah yang dimaksud adalah jika dipindah dari komputer mas Fadli ke server hosting alias di upload? Kalo iya, server2 hosting sekarang seharusnya sudah menggunakan versi PHP lebih tinggi dari 5.2.0. Karena versi ini dirilis November 2006. Hampir tidak mungkin masih ada yang menggunakan versi lebih rendah dari versi ini. :)


dari milis saya dapat solusi pakai file = basename($file, '.jpg');


Betul. Bisa dengan basename(). Dengan syarat, mas sudah tahu apa extension yang akan dihilangkan. Kalau yang mau dihilangkan adalah .jpg saja, maka mas Fadli aman menggunakan fungsi ini. Tapi, gimana kalau dalam directory itu ada banyak file yang berbeda-beda extensionnya? Dan bagaimana kalau extensionnya berbeda panjangnya? Misalnya ada yang ber-extension .jpg dan .jpeg?


cuma kekurangannya, gambar yang ditampilkan menjadi tidak berurut secara alphabetic kalau diberi nomer di depannya. dan juga ada beberapa gambar yang tidak mau saya tampilkan bagaimana scriptnya ya? sebut saja struktur gambarnya seperti ini:
1mr.jpg
1mr-1.jpg
2mr.jpg
2mr-1.jpg
3mr.jpg
3mr-1.jpg
1mrs.jpg
1mrs-1.jpg
2mrs.jpg
2mrs-1.jpg
3mrs.jpg
4mrs-1.jpg
...dst...

Gampang mas. Yang perlu mas lakukan adalah menampung sementara file-file yang tertangkap dalam directory tersebut ke dalam array. Lalu array itu diurutkan terlebih dahulu sebelum kemudian di print out. Yang berwarna hijau di script berikut ini, adalah modifikasi yang saya buat di script mas Fadli.

Code:
<table cellpadding="0" cellspacing="0" border="0">
<?php 

$dirpath = './images';
if($dir = opendir($dirpath))
{
  [B][COLOR="Green"]$arr_sort = array();[/COLOR][/B]
  while(false !== ($file = readdir($dir)))
  {
    if($file != '.' AND $file != '..')
    {
      if( ! is_dir("$dirpath/$file"))
      {
        file = basename($file, '.jpg');
        array_push($arr_sort, $file);

      }
    }
  }
  [B][COLOR="Green"]sort($arr_sort, SORT_NUMERIC);[/COLOR][/B]
  [B][COLOR="Green"]
  for ($i=0; $i<sizeof($arr_sort); $i++) {
    echo '<tr>
            <td><img src="'.$dirpath.'/'.$file.'.jpg" /></td>
            <td width="10px"><input type="radio" name="images" value="'.$file.'" [COLOR="red"][B]checked="checked"[/B][/COLOR] /></td>
          </tr>';
  }
  [/COLOR][/B]

  closedir($dir);
}
?>
</table>


nah, saya mau supaya gambar yang memiliki akhiran -1 itu tidak ditampilkan dalam table. juga yang masih jadi kekurangan dalam script diatas adalah kalau gambarnya sampai puluhan, maka dia akan mengurutkannya seperti ini:
1mr.jpg
10mr.jpg
11mr.jpg
..dst..
2mr.jpg
21mr.jpg
..dst..
3mr.jpg

bagaimana caranya supaya urutannya menjadi:
1mr.jpg
2mr.jpg
3mr.jpg
..dst..
10mr.jpg
11mr.jpg

Ini juga simple. Tinggal di hilangkan saja yang ada karakter "-1". Saya tambahkan script dengan warna biru untuk menyelesaikan tugas tersebut.

Code:
<table cellpadding="0" cellspacing="0" border="0">
<?php 

$dirpath = './images';
if($dir = opendir($dirpath))
{
  [B][COLOR="Green"]$arr_sort = array();[/COLOR][/B]
  while(false !== ($file = readdir($dir)))
  {
    if($file != '.' AND $file != '..' AND [B][COLOR="Blue"]stripos($file, "-1") === false[/COLOR][/B])
    {
      if( ! is_dir("$dirpath/$file"))
      {
        file = basename($file, '.jpg');
        array_push($arr_sort, $file);

      }
    }
  }
  [B][COLOR="Green"]sort($arr_sort, SORT_NUMERIC);[/COLOR][/B]
  [B][COLOR="Green"]
  for ($i=0; $i<sizeof($arr_sort); $i++) {
    echo '<tr>
            <td><img src="'.$dirpath.'/'.$file.'.jpg" /></td>
            <td width="10px"><input type="radio" name="images" value="'.$file.'" [COLOR="red"][B]checked="checked"[/B][/COLOR] /></td>
          </tr>';
  }
  [/COLOR][/B]

  closedir($dir);
}
?>
</table>


terakhir pada bagian "checked" yang saya beri tanda merah itu kalau saya kasih disitu kan otomatis semua radio button akan bernilai "checked" nah, bagaimana caranya supaya hanya gambar pertama saja yang punya di "checked"?


Saya tambahkan script berwarna merah untuk menyelesaikan tugas tersebut.


Code:
<table cellpadding="0" cellspacing="0" border="0">
<?php 

$dirpath = './images';
if($dir = opendir($dirpath))
{
  [B][COLOR="Green"]$arr_sort = array();[/COLOR][/B]
  while(false !== ($file = readdir($dir)))
  {
    if($file != '.' AND $file != '..' AND [B][COLOR="Blue"]stripos($file, "-1") === false[/COLOR][/B])
    {
      if( ! is_dir("$dirpath/$file"))
      {
        file = basename($file, '.jpg');
        array_push($arr_sort, $file);

      }
    }
  }
  [B][COLOR="Green"]sort($arr_sort, SORT_NUMERIC);[/COLOR][/B]
  [B][COLOR="Green"]
  [COLOR="Red"]$checked = "";[/COLOR]
  for ($i=0; $i<sizeof($arr_sort); $i++) {
    [COLOR="Red"]if($i<1) $checked = 'checked="checked"'; else $checked = '';[/COLOR]
    echo '<tr>
            <td><img src="'.$dirpath.'/'.$file.'.jpg" /></td>
            <td width="10px"><input type="radio" name="images" value="'.$file.'" [COLOR="Red"]'. $checked .'[/COLOR] /></td>
          </tr>';
  }
  [/COLOR][/B]

  closedir($dir);
}
?>
</table>

Semoga membantu. :)
 
Status
Not open for further replies.

Top