ขอแนวทางเกี่ยวกับการจำกัดจำนวน ใน 1 วันครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ขอแนวทางเกี่ยวกับการจำกัดจำนวน ใน 1 วันครับ

ขอแนวทางเกี่ยวกับการจำกัดจำนวน ใน 1 วันครับ

เข้าใจว่าต้องใช้ javascript ร่วมด้วย ปัญหาของผมคือ ต้องการให้ใน 1 วัน สามารถซื้อตั๋วได้เพียงแค่ 10 ใบ โดยรับค่าจาก input  โดยการทำรายการใน 1 ครั้ง ซื้อตั๋วได้ไม่เกิน 2 ใบ เมื่อครบ10 ระบบจะผิกการซื้อ โดย disabled ทุกอย่างใน ฟอร์ม
ขั้นต้นที่คิดไว้ ประมาณว่า .ให้ i = 0   นำว่าอินพุต เก้บ ใน i แล้วรีเทิรนค่าไปเรื่อยๆ จนครบ10 ให้ปิดการซื้อ แต่ไม่รู้จะให้ฟังชั้นใดร่วมกับวันปัจจุบัน ให้มันทำงานเป็น loop เดิมๆ ในทุกๆวัน

ปล. .datepicker ใช้ได้ไหมครับ

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



Chayathorn Putthong 06-09-2015 03:02:09

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ที่จริงน่าจะใช้งาน database กำหนดไปเลย ว่าแต่ละวันสต้อกรายการไว้ 10 พอจองตั๋วก็ลดจำนวน
หรือไม่ก็คิวรี่จำนวนทั้งหมดลบ จำนวนที่จอง  ถ้าของจองเต็แล้วก็ไป disabled ใน ฟอร์ม
สวนว่าเลือกไม่เกิน 2 เราก็อาจจะฟิกค่าที่เลือกให้สามารถจองแต่ละครั้งเป็น select กำหนดเป็น 1 กับ 2
เลือกได้ไม่เกิน 2 แทนการใช้ textbox ก็ได้

แนวทางเป็นไปได้หลายวิธี ขึ้นกับรูปแบบการนำไปใช้ตามความเป็นจริง 


ninenik 06-09-2015
 ความคิดเห็นที่ 2

ขอบคุณมากครับ
ตามที่เข้าใจเป็นแบบนี้หรือเปล่าครับ

แนวทางที่ 1 ทำเป็นระบบสต้อก คล้ายๆการระบบซื้อสินค้าใช่ไหมครับที่ มีในคลัง 10 ใบต่อวัน เมื่อมีทำรายการก็หักลงไปเรื่อยๆ แต่หากวันถัดไปเราต้องแอดตั๋วเข้า ระบบ 10 ใบ ในทุกๆวันหรือไม่ สามารถทำ เป็นฟังชั้น loop ให้ทำการ insert เองได้ใช่ไหมครับ

แนวทางที่ 2 คือ นำคิวรี่ที่เก็บจำนวนตั๋วจาก select มา และสร้างคิวรี่เพิ่มในระบบจองนั้น เพิ่มอีกสองคิวรี่คือ คิวรี่ที่เก็บจำนวนตั๋วที่ทำรายการ 

+ขึ้นไปเรื่อยๆเมื่อมีการทำรายการ โดยการนำผลบอกจากรายการที่แล้วมารวมด้วย และอีกคิวรี่คือจำกัดจำนวนตั๋วคือ 10  ไว้ทำการเปรียบเทียบค่า

แนวทางที่ 3 ทำการคิวรี ข้อมูลเฉพาะวันนั้นขึ้นมาตรวจสอบ ว่าจำนวนครบที่กำหนดหรือไม่ ถ้าครบไม่มีการ insert

อยากทราบว่าวิธีไหนจะยุ่งยากน้อยกว่ากันกัน

 

สอบถามเพิ่มเติม ในกรณีนี้ ควรใช้ฟังชั้นส์เกี่ยวกับวันประเภทใดมาจัดการ

ขอบคุณครับ



Chayathorn Putthong 07-09-2015 00:49
 ความคิดเห็นที่ 3
ตัดสต้อกวันต่อวันน่าจะง่ายกว่า อาจเพิ่มฟิลด์วันที่เก็บ date เข้าไป ตอนจอง ก็เช็คว่า วันที่ในระบบเป็นวันเดียวกับปัจจุบันหรือไม่
ถ้าไม่ก็อัพเดทวันที่ และก็อัพเดทรายการจำนวนเป็น 10 อะไรแนวนี้

ส่วนถามว่าฟังก์ชั่นประเภทวัน อันนี้คืออะไร ถ้าฟังก์ชั่นวันที่ก็ date() ธรรมดา


ninenik 07-09-2015
 ความคิดเห็นที่ 4
ผมมีแนวคิดใหม่แบบนี้ครับ ทำการคิวรี ข้อมูลเฉพาะวันนั้นขึ้นมาตรวจสอบ ว่าจำนวนครบที่กำหนดหรือไม่ ถ้าครบไม่มีการ insert
ซึ้งผมได้ทำการคิวรี่มาเบื้องต้น จากโคต้ ของผมจะมี round ทั้งหมดสามรอบ คือ 9:00 11:00 13:00 ยกตัวอย่างรอบ 9:00 กำหนดให้ตั๋วไม่เกิน10 

SELECT
book_ticket.round,
Sum(book_ticket.t_adult),
Sum(book_ticket.t_child),
book_ticket.date_book
FROM
book_ticket
WHERE
date(date_booking) = curdate() AND
book_ticket.round = ('9:00')
GROUP BY
book_ticket.date_booking
HAVING
Sum(book_ticket.t_adult)+Sum(book_ticket.t_child) = 10
ซึ่งจะเอาคิวรี่ตัวนี้เข้าเงือนไขยังครับว่าถ้าคิววรี่ตรวจสอบว่าครบ 10 แล้วไม่มีการทำ insert ซึ่งแต่ละใน รอบๆก็ต่างกันไป
พอจะมีแนวทางไหมครับ

ส่วนนี่คือโคต้ในหน้าจองตั๋วครับ

<?php require_once('Connections/koh_samaesan2.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO book_ticket (date_book,date_booking, f_name, l_name, telephone, email, t_adult, t_child, round, amount,status_book) VALUES (now(), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['date_booking'], "text"),
					   GetSQLValueString($_POST['f_name'], "text"),
                       GetSQLValueString($_POST['l_name'], "text"),
                       GetSQLValueString($_POST['telephone'], "text"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['t_adult'], "text"),
                       GetSQLValueString($_POST['t_child'], "text"),
                       GetSQLValueString($_POST['round'], "text"),
					   GetSQLValueString($_POST['amount'], "text"),
					   GetSQLValueString($_POST['status_book'], "text"));
                       
					  

  mysql_select_db($database_koh_samaesan2, $koh_samaesan2);
  $Result1 = mysql_query($insertSQL, $koh_samaesan2) or die(mysql_error());

  $insertGoTo = "terms&conditions.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
 

?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ระบบจองตั๋ว</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="bootstrap/css/subdropdown.css" rel="stylesheet" type="text/css">


<!-- Optional theme -->
<link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="jquery-ui-1.7.2.custom/css/smoothness/jquery-ui-1.7.2.custom.css">
<script type="text/javascript" src="jquery-ui-1.7.2.custom/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery-ui-1.7.2.custom/js/jquery-ui-1.7.2.custom.min.js"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">


<script type="text/javascript">
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value "'");
  if (restore) selObj.selectedIndex=0;
}
</script>
<?php 
	require('/include/Connectdb.php');
	mysql_query("set names 'utf8'");
	$objDB = mysql_select_db("koh_samaesan2") or die("ไม่สามารถใช้งานฐานข้อมูลได้"); 
?>


</head>
<body>
<script type="text/javascript">
$(function(){
	// แทรกโค้ต jquery
	$("#date_booking").datepicker({ minDate: 0 , maxDate: 0});
});
</script>
<style type="text/css">
.ui-datepicker{
	width:150px;
	font-family:tahoma;
	font-size:11px;
	text-align:center;
}
</style>


<script type="text/javascript">

function startCalc(){ 
interval = setInterval("calc()",1); 
} 
	function calc(){ 
	t_adult = document.form1.t_adult.value; 
	t_child = document.form1.t_child.value; 
	document.form1.amount.value =  (t_adult * 300)+ (t_child * 220);
} 
function stopCalc(){ 
	clearInterval(interval); 
}

function IsNumeric(sText,obj)
{
	var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   		if(IsNumber==false){
			alert("ใส่ได้เฉพาะตัวเลขเท่านั้น.");
			obj.value=sText.substr(0,sText.length-1);
		}
   } 
</SCRIPT>	
 <div class="bgcolor"> 
    <div class="container" align="left" >
    	<div class="panel panel-default">
  					<div class="panel-body ">
                    	 <form name="formsearch" method="post" action="">
							<table width="100%" border="0">
  								<tr>
    								<td width="67%" align="right" valign="middle">&nbsp;</td>
       							  <td width="11%" align="center" valign="middle"><label for="type_search"></label></td>
       							  	<td width="14%" align="left" valign="middle">&nbsp;</td>
   								  	<td width="8%" align="center" valign="middle">&nbsp;</td>
      							</tr>
						   </table>
	
					  </form>
                      		<div>
                            <table width="100%" border="0">
  			      						<tr>
  			        						<td width="100%" align="center" valign="middle"><img src="Image/booking.png" width="200" height="79"></td>	       
		          						</tr>
		        					</table>
                                &nbsp;
                              <form name="form1" method="POST" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data">
                               	  <div class="widthDiv">
                                		<fieldset class="well the-fieldset">
                                  			<legend class="the-legend"><strong>รายละเอียดลูกค้า</strong></legend>
                                            	 <table width="100%" border="0" align="center">
               					     				<tr>
               					       					<td width="2%">&nbsp;</td>
               					       					<td width="13%" align="right">&nbsp;</td>
               					      	 				<td width="13%" align="left" valign="middle">&nbsp;</td>
               					      	 				<td width="25%">&nbsp;</td>
               					       					<td width="13%" align="right">&nbsp;</td>
               					       					<td width="13%">&nbsp;</td>
               					      	 				<td width="20%">&nbsp;</td>
               					       				<td width="1%">&nbsp;</td>
           					        				</tr>
               					     				<tr>
               					       					<td height="33">&nbsp;</td>
               					       					<td align="right" valign="middle">ชื่อ :</td>
               					       					<td align="left" valign="middle"><span id="sprytextfield1">
           					       					    <input class="form-control" name="f_name" type="text"  id="f_name" size="20" 
                                                        maxlength="20" value="">
           					       					    <span class="textfieldRequiredMsg">*กรุณากรอกชื่อ.</span></span> </td>
               					       					<td align="left" valign="middle">&nbsp;</td>
               					       					<td align="right" valign="middle">นามสกุล :</td>
               					       					<td align="left" valign="middle"><span id="sprytextfield2">
               					       					  <input class="form-control" name="l_name" type="text" id="l_name" size="20" 
                                                          maxlength="20" value="">
           					       					    <span class="textfieldRequiredMsg">*กรุณากรอกนามสกุล.</span></span></td>
               					       					<td align="left" valign="middle">&nbsp;</td>
               					       					<td>&nbsp;</td>
   					        	 				   </tr>
               					     				<tr>
               					       					<td height="38">&nbsp;</td>
               					      	 				<td align="right" valign="middle">เบอร์ติดต่อ :</td>
               					     	 				<td align="left" valign="middle"><span id="sprytextfield3">
       					     	 				        <input class="form-control" name="telephone" type="text" id="telephone" size="10" 
                                                        maxlength="10" value=""
                                                        onKeyUp="IsNumeric(this.value,this)">
       					     	 				        <span class="textfieldRequiredMsg">*กรุณากรอกเบอร์ติดต่อ.</span></span></td>
               					     	 				<td align="left" valign="middle">&nbsp;</td>
               					       					<td align="right" valign="middle">อีเมล์ :</td>
               					       					<td align="left" valign="middle">
               					       					  <span id="sprytextfield6">
       					       					        <input class="form-control" name="email" type="text" id="email" size="25" maxlength="50" value="-">
                                                        <span class="textfieldRequiredMsg">*กรุณากรอกอีเมล์.</span></span>
   					       					          </td>
               					       					<td align="left" valign="middle">&nbsp;</td>
                                                        
               					       					<td>&nbsp;</td>
           					         				</tr> 
           					       			</table>
                                		</fieldset>
                              <fieldset class="well the-fieldset">
                                  			<legend class="the-legend"><strong>รายละเอียดการซื้อตั๋ว</strong></legend>
                               	<table width="100%" border="0" cellspacing="0" cellpadding="0">
   				      								<tr>
   				        								<td width="2%" align="right" valign="middle">&nbsp;</td>
   				        								<td width="18%" align="right" valign="middle">ตั๋วผู้ใหญ่ : </td>
   				        								<td align="left" valign="middle"><span id="sprytextfield4">
                                                        <select class="form-control" name="t_adult" type=text id="t_adult" 
                                                          onFocus="startCalc();" onBlur="stopCalc();" onKeyUp="IsNumeric(this.value,this)">
                                        							<option value="0">0</option>
  																	<option value="1">1</option>
                                                          </select>
                                                            <span class="textfieldRequiredMsg">*กรุณากรอกจำนวน.</span></span>
			        								    </td>
   				        								<td align="right" valign="middle">เลือกรอบเรือ :</td>
   				        								<td width="11%" align="left" valign="middle">
                                                        <select class="form-control" name="round" size="1" id="round">
   				        								  <option value="9:00"  >9:00</option>
   				        								  <option value="11:00" >11:00</option>
   				        								  <option value="12:00" >13:00</option>
			        								    </select></td>
   				        								<td colspan="3" align="left" valign="middle">&nbsp;</td>
			        								</tr>
   				      								<tr>
   				        								<td align="right" valign="middle">&nbsp;</td>
   				        								<td align="right" valign="middle">ตั๋วเด็ก : </td>
   				        								<td width="19%" align="left" valign="middle"><span id="sprytextfield5">
                                                         <select class="form-control" name="t_child" type=text id="t_child" 
                                                          onFocus="startCalc();" onBlur="stopCalc();" onKeyUp="IsNumeric(this.value,this)">
                                        							<option value="0">0</option>
  																	<option value="1">1</option>
                                                         </select>
                                                            <span class="textfieldRequiredMsg">*กรุณากรอกจำนวน.</span></span>
                                                      </td>
   				        								<td width="17%" align="right" valign="middle">จำนวนเงิน :</td>
   				        								<td colspan="4" align="left" valign="middle"><label for="Series"></label> 
                                                        	<div class="form-group">
     															<div class="input-group">
      																<div class="input-group-addon">฿</div>
      																<input name="amount" type=text class="form-control" id="amount" placeholder=
                                                                    	"คำนวณเงิน" readonly>
      																<div class="input-group-addon">.00</div>
      															</div>
  															</div>
  
			        						       	  </td>
			        								</tr>
   				      								<tr>
   				        								<td colspan="2" align="right" valign="middle">เลือกวันที่จอง :</td>
   				        								<td align="left" valign="middle">
                                                        <span id="sprytextfield7">
                                                        <input class="form-control" type="text" name="date_booking" id="date_booking" >
                                                        <span class="textfieldRequiredMsg">*กรุณาเลือกวันที่จอง.</span></span></td>
   				        								<td align="left" valign="middle">&nbsp;</td>
   				        								<td align="left" valign="middle">&nbsp;</td>
   				        								<td align="left" valign="middle">&nbsp;</td>
   				        								<td width="32%" align="left" valign="middle">
                                                        <input name="status_book" type="hidden" 
                                                        id="status_book" value="ระหว่างรอการยืนยัน"></td>
   				        								<td width="2%">&nbsp;</td>
			          								</tr>
			        							</table>
                                        </fieldset>
                                        

                                    
                                    <table width="100%" border="0">
                                          <tr>
                                            <td width="38%">&nbsp;</td>
                                            <td width="11%" align="center" valign="middle">
                                            <input type="submit" name="btn_Ok" id="btn_Ok" value="บันทึก"></td>
                                            <td width="11%" align="center" valign="middle"> <input type="reset" name="btn_Cancle" id="btn_Cancle" value="ยกเลิก"></td>
                                            <td width="40%">&nbsp;</td>
                                      </tr>
                                    </table>
                                    </div>
                               	  <input type="hidden" name="MM_insert" value="form1">
                              </form>
                                    
                                    &nbsp;
                                  </div>
    		    				</div>
                      
              </div>  
		</div>
  </div>
</div>
</div>

<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4");
var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5");
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6");
var sprytextfield7 = new Spry.Widget.ValidationTextField("sprytextfield7");
</script>
</body>
</html>


Chayathorn Putthong 08-09-2015 23:29
 ความคิดเห็นที่ 5
แก้ไขตรง 
Sum(book_ticket.t_adult)+Sum(book_ticket.t_child)  <= 10

คือถ้าผมรวมออกมา <= 10 ให้การ insert ข้อมูลได้ แต่ได้เช็ดแล้ว จะ insert ข้อมูลไม่ได้

รบกวนชี้แนะด้วยครับงมมาหลายวันแล้วครับ



Chayathorn Putthong 09-09-2015 03:24
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ