พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
Javascript development / รบกวนดูcode ให้ทีครับ
tapoo
tapoo
Fri 23 Jun 2006 08:26:59

รบกวนช่วยดูcodeให้ผมทีครับ

คือ โค้ดนี้ผมได้มาจากท่านAdministrator คือเป็นโค้ด ป้องกันคำหยาบ  ผมจะเอามา

เพิ่มโค้ด เพื่อแก้ไข

test.php  -------------------------------------

<script language="javascript">
function checkRude(obj){
 var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>);
    for(i=0; i<rudeWord.length; i++){
       if(obj.value.indexOf(rudeWord[i]) != -1){
    alert("มีคำไม่เหมาะสม \n"+rudeWord[i]);
    obj.text1.value='';  ----------เพิ่ม  2  บรรทัดนี้นะครับ
    obj.text2.focus();
          break;
       }
    }
}
</script>

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

rude_word.txt -----------------------------------

คำหยาบ
คำผิด2

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

ปัญหาคือโค้ดที่เพิ่มเข้าไป ต้องการให้พอเจอ คำผิดแล้วให้text boxที่เจอเป็นค่าว่างแล้วเซ็ตโฟกัน  เพื่อพิมใหม่นะครับ

รบกวนช่วยดูให้ผมทีครับ

ขอบคุณมากครับ

Administrator
Fri 23 Jun 2006 11:05:23
<script language="javascript">
function checkRude(obj){
 var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>Wink;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value.indexOf(rudeWord[i]) != -1){
            alert("มีคำไม่เหมาะสม \n"+rudeWord[i]);
            obj.value='';  ----------เพิ่ม  2  บรรทัดนี้นะครับ
            obj.focus();
            break;
       }
    }
}
</script>

<form>
<input type="text" name="text1" onkeyup="checkRude(this)" />
<input type="text" name="text2" onkeyup="checkRude(this)" />
</form>

โค๊ดนี้ตัวแปร obj ที่่ส่งเข้าไปจะเป็น object ของ textbox ครับ
รุต
รุต
Mon 26 Jun 2006 07:56:39

รบกวนขอสอบถามเพิ่มครับ  คือผมได้ทำform  add  ข้อมูลลงrude_word.txt  ทีนี้มันติดปัญหาตรงที่  มันมะยอมadd  เพิ่มลงไปแต่มันดันไป  เปลี่ยนข้อมูลที่มีอยู่เดิม  รบกวนดูให้ทีครับ

ต้องการให้มันadd  ข้อมูล  เพิ่มลงไป  และให้มัน  <br>ข้อมูลแต่ละครั้งที่addนะครับ

test.php------------------------------------------------------------------------

<?
$fp = fopen("rude_word.txt","w");
$write = fwrite($fp,"$text1<br>\n");

if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }

fclose($fp);
?>

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

โค้ดด้านล่างนี้  จะส่งค่าให้ กับtest.php  ทีนี้มันติดตรงที่  ถ้าเป็นค่าว่าง จะให้มัน alert ข้อความ  บอกว่าเป็นค่าว่าง  และให้มันเซ็ตโฟกัสเพื่อให้พิมข้อความก่อนส่ง  มันติดปัญหาตรงที่   มันalert  บอกว่าค่าว่างแต่พอกดปุ่มมันส่งค่าว่างไปtest.phpเลยนะครับ  รบกวนช่วยดูให้ทีครับ

testWrite.php-------------------------------------------------------

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
 function ChackBox(text){
  if (text.text1.value==''){
   alert("ข้อความว่าง");
   text.text1.focus();
   return;
  }
   text.submit();
 }

</script>
<body>
   <form name="root" method="post" action="test.php">
     <label>text1
     <input name="text1" type="text" id="text1">
     </label>
     <br>
     <br>
     <label></label>
   <br>
     <label>
     <input type="submit" name="Submit" value="Submit" onClick="ChackBox(root);">
     </label>
   </form>
</body>
</html>

ขอบคุณมากครับ

Administrator
Mon 26 Jun 2006 11:13:02

<?
$fp = fopen("rude_word.txt","w");
$write = fwrite($fp,"$text1<br>\n");

if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }

fclose($fp);
?>



คุณเปิดใน mode w ซึ่งเป็นการเขียนที่จุดเริ่มต้นของไฟล์ครับ อาจจะใส่เป็น w+, a+ ก็ได้ครับ



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
 function ChackBox(text){
  if (text.text1.value==''){
   alert("ข้อความว่าง");
   text.text1.focus();
   return false;
  }
   text.submit();
 }

</script>
<body>
   <form name="root" method="post" action="test.php">
     <label>text1
     <input name="text1" type="text" id="text1">
     </label>
     <br>
     <br>
     <label></label>
   <br>
     <label>
     <input type="submit" name="Submit" value="Submit" onClick="ChackBox(this.form);">
     </label>
   </form>
</body>
</html>

ใน javascript คุณทำการตรวจสอบโดยการอ้าง text.text1.value หมายถึง text เป็น object ที่มี object  ชื่อ text1 อยู่ภายใน ซึ่งหมายถึง object form ดังนั้นคุณต้องทำการส่ง object form ให้กับ ฟังก์ชั่นครับ ในการส่งค่าถ้าคุณส่งจาก object submit button ก็ต้องส่้ง object form โดยอ้างจาก form properties ซึ่งเป็นคุณสมบัติภายใน object input ทุกตัวครับโดยอ้างจาก this.form

ส่วนที่ทำไมเมื่อ alert แล้ว form ยังมีการ submit อีกเนื่องจากคุณ return เป็น void ซึ่งจะทำให้เกิดการ submit อยู่ดีครับ object ที่ต้องการไม่ให้เกิด fire action นั้นต้อง return เป็น false ครับ อีกอย่างที่ text.text1.focus(); ไม่สามารถทำการ focus() ได้เนื่องจากไม่สามารถหา object ดังกล่าวได้ครับ จากเหตุด้านบน
รุต
รุต
Wed 28 Jun 2006 08:43:09

รบกวนอีกนิดครับ  คือผมได้ไปลองทำแล้วadd ได้เรียบร้อยแล้วครับขอบคุณมากครับ    ทีนี้คือ  ผมอยากจะเช็คค่าที่ทำการadd ลงไปนะครับ
ว่าถ้าเกิดมีข้อมูลที่ซ้ำกันให้alertแจ้งแตือนว่ามีข้อมูลอยู่แล้วนะ 
รบกวนช่วยแก้เพิ่มให้ทีครับ  จะขอไปดูเพื่อศึกษาใช้กับงานอื่นๆต่อไปนะครับ
test.php--------------------------------------------------------------------------
<?
$fp = fopen("mydata.txt","a");
#$text=("สวัสดีครับเจ้านาย8 \n");
if (!$_POST['text1'] == '') {
 $write = fwrite($fp, $_POST['text1'] . "\r\n");
}
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }

fclose($fp);
?>
-------------------------------------------------------------------------------------------------------
testWrite.php----------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
 function ChackBox(text){
  if (text.text1.value==''){
   alert("ข้อความว่าง");
   text.text1.focus();
   return;
  }
   text.submit();
 }

</script>
<body>
   <form name="root" method="post" action="test.php">
     <label>text1
     <input name="text1" type="text" id="text1">
     </label>
     <br>
     <br>
     <label></label>
   <br>
     <label>
     <input type="button" name="Submit" value="Submit" onClick="ChackBox(root);">
     </label>
   </form>
</body>
</html>
ขอบคุณมากครับ

Administrator
Wed 28 Jun 2006 11:33:00
คุณอาจจะทำการอ่านไฟล์ทั้งหมดมาก่อนครับเช่น

$isExist = false;
$lines = file("mydata.txt");
while(list($str) = each($lines)){
    if($str == $_POST['text1']){
       $isExist = true;
       break;
    }
}

if(!$isExist){
    $fp = fopen("mydata.txt","a");
    #$text=("สวัสดีครับเจ้านาย8 \n");
    if ($_POST['text1'] != '') {
        $write = fwrite($fp, $_POST['text1'] . "\r\n");
    }
    if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
    else { echo "สร้างไฟล์เรียบร้อย"; } fclose($fp);
}else{
    echo "<script language=\"javascript\" type=\"text/javascript\">alert(\"มีข้อความ ".$_POST['text1']." อยู่ในฐานข้อมูลแล้ว\");</script>";
}
ประมาณนี้ครับ
รุต
รุต
Wed 28 Jun 2006 17:37:38

โทษนะครับผมได้ลองเอาโค้ดด้านบนไปลองใส่ดูแล้ว มันเช็คคำที่ผมพิมลงtextBoxนะครับ  มันไม่ได้ไปเช็คในmydata.txtนะครับ รบกวนช่วยดูให้ผมทีครับ คือ  ผมอยากให้ใส่codeเช็คที่ testWrite.php ก่อนส่งค่าไปtest.phpนะครับ  ให้มันขึ้นalert บอก ถ้ามีคำซ้ำและให้ลบคำที่ซ้ำออกจากtextBox และให้เซ็ตโฟกัส   และถ้าคำไม่ซ้ำให้มันส่งต่อไปที่ test.php  เพื่อบันทึก

รบกวนด้วยนะครับ
ขอบคุณมากครับ

Administrator
Wed 28 Jun 2006 18:24:21
เข้าใจละครับ คุณสามารถใช้ฟังก์ชั่นที่ใช้เช็คในตอนกรอกของผู้ใช้งานได้เลยครับ ในเมื่อความต้องการเหมือนกัน แต่เปลี่ยนจาก indexOf() เป็น == ครับ

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
function checkRude(obj){
 var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>Wink;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value == rudeWord[i]){
            alert("มีคำนี้อยู่ในฐานข้อมูลอยู่แล้ว");
            obj.text1.value='';
            obj.text2.focus();
            break;
       }
    }
}
</script>
<body>
   <form name="root" method="post" action="test.php">
     <label>text1
     <input name="text1" type="text" id="text1">
     </label>
     <br>
     <br>
     <label></label>
   <br>
     <label>
     <input type="button" name="Submit" value="Submit" onClick="heckRude(this.form.text1);">
     </label>
   </form>
</body>
</html>
รุต
รุต
Fri 30 Jun 2006 08:23:12

รบกวนสอบถามครับ  ผมได้ลองเอาcodeด้านบนไปลองทำดูแล้ว  พอกดรันแล้วเริ่มaddข้อมูล  codeไม่ทำงานนะครับ
รบกวนแก้ให้ผมทีครับ  คือที่ฟอร์มtestWrite.php ให้เป็นฟอร์มเช็คค่าว่างกับเช็คข้อความที่จะคีซ้ำลงฐานข้อมูล   โดยที่ถ้าไม่คีอะไรเลยให้ขึ้นalertบอกว่า
ข้อความว่าง และให้เซ็ตโฟกัสให้คีใหม่    แต่ถ้าคี ข้อมูลที่ซ้ำกับฐานข้อมูล   ก็ให้alert บอกว่ามีข้อมูลซ้ำในฐานข้อมูล  และให้เซ็ตโฟกัสเพื่อคีใหม่
แต่ถ้ามะมีข้อมูลซ้ำก็ให้ส่งค่าไปที่  test.php เพื่อบันทึกข้อมูล ลงใน rude_word.txt


ผมได้แนบlink ตัวอย่างโปรแกรมมาให้  รบกวนช่วยดูให้ผมทีครับ    http://www.root999.th.gs/web-r/oot999/testForm.rar   
ขอบคุณมากครับ

Administrator
Fri 30 Jun 2006 10:25:27
เอาตามนี้เลยครับไฟล์เดียวอยู่

<?
if(isset($_POST["text1"]) && strlen(trim($_POST["text1"]))){
    $fp = fopen("rude_word.txt","a+");
    $write = fwrite($fp,$_POST["text1"]."\r\n");
    if (!$write) { echo "ไม่สามารถเพิ่มคำลงฐานข้อมูลได้"; }
    else { echo "เพิ่มคำเรียบร้อย"; }
    fclose($fp);
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
function checkRude(obj){
    <? $list = @file("rude_word.txt"); ?>
    var rudeWord = new Array(<? for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>Wink;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value==rudeWord[i]){
        alert("มีคำไม่เหมาะสม \""+rudeWord[i] + "\" อยู่ในฐานข้อมูลอยู่แล้ว");
        obj.value='';
        obj.focus();
        return false;
       }
    }
    return true;
}
</script>
<body>
   <form name="root" method="post" action="test.php">
     <label>text1
     <input name="text1" type="text" id="text1">
     </label>
     <label>
     <input type="submit" value="Submit" onClick="return checkRude(this.form.text1);">
     </label>
   </form>
</body>
</html>

ที่ทำไมถึงเพิ่มไม่ได้นั้นเนื่องจากคุณใช้ปุ่มเป็นชนิด button ทำให้เมื่อกดแล้วไม่เกิดเหตุการณ์ submit() ครับ และผมได้ทดสอบแล้วใช้งานได้ปกติครับ
รุต
รุต
Fri 30 Jun 2006 11:00:07

ขอบคุณมากครับ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login