|
|
|
แนะนำหน่อย : ตรวจสอบค่าว่างของ input type="file" ในการอัพโหลดแบบหลาย array |
|
|
|
|
|
|
|
Code (PHP)
<?php
$form_total = 20; // จำนวนฟอร์มที่ต้องการครับ
?>
<script type="text/javascript">
function ck_frm(obj){
var id = obj.id.substring(3,5);
var ck = document.getElementById('ckk'+id);
var frm = document.getElementById('frm_txt'+id);
if(ck.checked == true){
frm.style.display = "";
}else{
frm.style.display = "none";
}
}
function chkFile(){
var input = document.getElementsByTagName('input');
var checked = 0;
for(i=0;i<input.length;i++){
if(input[i].type == 'checkbox' && input[i].name.substring(0,3) == 'ckk' && input[i].checked){
checked = 1;
continue;
}
if(input[i].type == 'file' && input[i].name == 'filUpload[]' && checked == 1 && input[i].value == ''){
var id = input[i].parentNode.id.replace('frm_txt','');
checked = 0;
alert('กรุณาเลือกไฟล์ที่ต้องการในแบบฟอร์ม' + id + ' ด้วยครับ');
return;
}
}
document.getElementById("form1").submit();
}
</script>
<form id="form1" name="form1" method="post" action="senddata.php" enctype="multipart/form-data">
<?php for($i=1;$i<=$form_total;$i++): $j = substr('0'.$i,-2);?>
<input type="checkbox" name="ckk<?=$j?>" id="ckk<?=$j?>" value="ckk<?=$j?>" onClick="ck_frm(this);" />
<span class="style39">แบบฟอร์ม<?=$j?><br>
</span>
<div id="frm_txt<?=$j?>" style="display:none;">
<input type="file" name="filUpload[]">
</div>
<?php endfor?>
<div align="center">
<input name="submit" type="button" onclick="chkFile()" class="style54" value="ส่งค่า" >
</div>
</form>
จิงๆถ้าใช้ JQuery จะง่ายกว่าครับ แต่ผมอยากให้ดูวิธีใช้คำสั่ง javascript พื้นฐานก่อนครับ
|
|
|
|
|
Date :
2010-05-28 16:41:02 |
By :
kerb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณคร้าบ....
พอดีกลับบ้านเลยเพิ่งมาเปิดอ่าน
แล้วก็มาลองเล่น Code ดูครับ....
แต่มันยังติดปัญหา อีกนิดครับ....
ผมทดสอบ Browse ไฟล์ แบบฟอร์ม 01 แล้ว พอกดปุ่มส่งค่า
โปรแกรมก็ฟ้องว่า 'กรุณาเลือกไฟล์แบบฟอร์ม 02 ด้วยครับ'
ซึ่งข้อความที่ฟ้องมานี้ ผมยังไม่ทำทำการ checkbox แบบฟอร์ม 02 เลยครับ
รบกวนช่วยแนะนำอีกนิดนะครับ
|
|
|
|
|
Date :
2010-05-31 13:30:00 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP) โทษทีครับ ผมพลาดเอง ตรง line ที่ 25 จะ เห็น checked = 0; ซึ่งผมเอาไว้ clear ค่า ว่าได้ผ่านการเช็ค input นี้แล้ว จิงๆ มันต้องอยู่นอก if ดังโค้ดข้างล่างคับ
<?php
$form_total = 20; // จำนวนฟอร์มที่ต้องการครับ
?>
<script type="text/javascript">
function ck_frm(obj){
var id = obj.id.substring(3,5);
var ck = document.getElementById('ckk'+id);
var frm = document.getElementById('frm_txt'+id);
if(ck.checked == true){
frm.style.display = "";
}else{
frm.style.display = "none";
}
}
function chkFile(){
var input = document.getElementsByTagName('input');
var checked = 0;
for(i=0;i<input.length;i++){
if(input[i].type == 'checkbox' && input[i].name.substring(0,3) == 'ckk' && input[i].checked){
checked = 1;
continue;
}
if(input[i].type == 'file' && input[i].name == 'filUpload[]' && checked == 1 && input[i].value == ''){
var id = input[i].parentNode.id.replace('frm_txt','');
alert('กรุณาเลือกไฟล์ที่ต้องการในแบบฟอร์ม' + id + ' ด้วยครับ');
return;
}
checked = 0;
}
document.getElementById("form1").submit();
}
</script>
<form id="form1" name="form1" method="post" action="senddata.php" enctype="multipart/form-data">
<?php for($i=1;$i<=$form_total;$i++): $j = substr('0'.$i,-2);?>
<input type="checkbox" name="ckk<?=$j?>" id="ckk<?=$j?>" value="ckk<?=$j?>" onClick="ck_frm(this);" />
<span class="style39">แบบฟอร์ม<?=$j?><br>
</span>
<div id="frm_txt<?=$j?>" style="display:none;">
<input type="file" name="filUpload[]">
</div>
<?php endfor?>
<div align="center">
<input name="submit" type="button" onclick="chkFile()" class="style54" value="ส่งค่า" >
</div>
</form>
|
|
|
|
|
Date :
2010-06-01 01:16:35 |
By :
kerb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขั้นเทพตัวจริง เรื่องตรวจไฟล์ยอดเยี่ยม
แต่รบกวนอีกรอบเถอะ พอกด Submit button
ค่ามันไม่ยอมส่ง ไปที่หน้าต่อไป senddata.php
ซึ่งโค้ด มันก็แต่ติดต่อ ฐานข้อมูลธรรมดา รบกนอีกรอบเถอะครับ
<?PHP
include "connect.php";
mysql_connect($host,$user,$pw) or die("µÔ´µèÍ Host äÁèä´é");
mysql_select_db($dbname) or die("µÔ´µèÍ°Ò¹¢éÍÁÙÅäÁèä´é");
mysql_query("SET character_set_results=tis620");
mysql_query("SET character_set_client='tis620'");
mysql_query("SET character_set_connection='tis620'");
mysql_query("collation_connection = tis620_thai_ci");
mysql_query("collation_database = tis620_thai_ci");
mysql_query("collation_server = tis620_thai_ci");
for($i=0;$i<count($_FILES["filUpload"]["name"]);$i++)
{if($_FILES["filUpload"]["name"][$i] != "")
echo "1-".$_FILES["filUpload"]["name"][$i];
echo "<BR>";
$new_name=$idns."-".$_FILES["filUpload"]["name"][$i];
$path= "myfile/".$new_name;
{
echo "µÃǨÊͺ 24 ¤ÃÑé§ 24 Ãͺ".$_FILES["filUpload"]["name"][$i];
echo "<BR>";
if(copy($_FILES['filUpload']['tmp_name'][$i], $path))
{
$DateNow=Date("d_m_Y_H_i");
$tmp_file =$_FILES['filUpload']['tmp_name'][$i];
$fileme =$_FILES['filUpload']['name'][$i];
mysql_query("SET character_set_results=tis620");
mysql_query("SET character_set_client='tis620'");
mysql_query("SET character_set_connection='tis620'");
mysql_query("collation_connection = tis620_thai_ci");
mysql_query("collation_database = tis620_thai_ci");
mysql_query("collation_server = tis620_thai_ci");
//*** Insert Record ***//
$strSQL = "INSERT INTO pdffile ";
$strSQL .="(idns ,name ,plan,filename,dateupload ) VALUES ('$idns','$name','$plan','$new_name','$DateNow')";
$objQuery = mysql_query($strSQL);
}}}
?>
ขอบคุณมาก ๆ ครับ.....
|
|
|
|
|
Date :
2010-06-01 09:14:08 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็นเพราะตรงที่ highlight คับ ห้ามใช้ชื่อ submit ให้เอาออก หรือเปลี่ยนชื่อคับ มันมีผลตอนเรียก ฟังก์ชั่น submit() ครับ
<input name="submit" type="button" onclick="chkFile()" class="style54" value="ส่งค่า" >
|
|
|
|
|
Date :
2010-06-01 10:38:16 |
By :
kerb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้ว ๆ ๆ ๆ ๆ ๆ เย้ ๆ ๆ ๆ ๆ ๆ
ขอบคุณอย่างแรง.....
ได้ความรู้เพิ่มขึ้นมากมายเลยครับ
|
|
|
|
|
Date :
2010-06-01 10:41:21 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|