สอบถามเรื่องการ Insert ข้อมูลลงในฐานข้อมูล ถ้าซ้ำ ไม่ให้เพิ่ม ถ้าไม่ซ้ำให้เพิ่มตามเงื่อนไขครับ
select ข้อมูลมาตรวจสอบก่อนสิครับ
แล้วก็ใช้ If...else จัดการปกติ มีก็ข้ามไป ไม่มีก็แอดลง
Date :
2013-10-01 21:45:21
By :
monotakari
เข้าใจว่าถ้ากรอกเลขชุด IP เข้า 192.168.1.1 คือให้มีการตรวจซ้ำ อื่นๆไม่ต้องตรวจไช่ไหมครับ
มาดูกันเลข IP มีเอกลักษณ์อะไรบ้างที่เราพอจะจับได้ สังเกตได้ว่ามันจะมี . (จุด) อยุ่ 3 ตัว ก็ใช้ฟังชั่นการนับตัวอักษร(ศึกษาต่อเอง) ว่ามีจุดกี่ตัว
ถ้าจุด 3 ตัว เข้าประโยคตรวจสอบว่าซ้ำไหม ถ้าซ้ำ ไม่ทำงานต่อ / ถ้าไม่ซ้ำ ไปทำงานต่อ
ถ้าจุด ไม่เท่ากับ 3 ตัว ไม่ต้องตรวจซ้ำ ไปทำงานต่อ
**ปล1.วิธีนี้ประุยุกต์มาจากการตรวจสอบรูปแบบ Email ว่ามี @ กับ . อยู่หรือไม่
**ปล2 วิธีนี้อาจจะไม่ไช่วิธีที่ดีที่สุด เพราะถ้าคนกรอกตั้งใจกรอกอักขระมั่วๆแต่มี 3 จุดมา ก็อาจจะเข้าลูปตรวจสอบได้เช่นกัน. . . แต่วิธีนี้ก็อาจจะช่วยแก้ปัญหาและคัดกรอกได้อีกทางหนึ่ง
Date :
2013-10-02 00:01:30
By :
meannerss
เอาคร่าวๆนะครับ ค่อยๆพิจารณา
1. ผู้ใช้กรอกค่าหรืออักขระใดๆเข้ามา
2. ใช้ฟังชั่น นับว่าจุด . ในอักขระที่กรอกมามีกี่ตัว (ฟังชั่นอะไรสักอย่างผมก็จำไม่ค่อยได้)
3. ถ้ามีจุด = 3 ตัว ให้>>> SELECT เข้าไปตรวจกับฐานข้อมูลว่ามีไหม
3.1 ถ้ามีแสดงข้อความบ่งบอกว่า "มีแล้ว" และหยุดการทำงาน
3.2 ถ้าไม่มีไปข้อ 5
4. ถ้าจุด != 3 ตัว ให้ไปทำข้อ 5
5. CODE INSERT INTO
Date :
2013-10-02 00:30:09
By :
meannerss
รบกวนพี่ๆทีครับ ตอนนี้ยังไม่ได้เลยหน่ะครับ งงจริงๆครับพี่
ประวัติการแก้ไข 2013-10-02 11:41:09
Date :
2013-10-02 11:40:29
By :
lekjaengs
Code (PHP)
<?php
//Connect to database via MYSQLI
$hostname = "localhost";
$user = "root";
$password = "11223344";
$dbname = "destination";
$tblname = "sourcedestination";
$db = new mysqli($hostname, $user, $password, $dbname);
if($db->connect_error) die('Connect Error: ' . $mysqli->connect_error);
//vadilating data
$is_valid = FALSE;
if(!filter_var($_GET['ipaddress_a'], FILTER_VALIDATE_IP)) $is_valid = TRUE;
else{
$sql = sprintf("SELECT ipaddress_a FROM %s WHERE `ipaddress_a`='%s'",$tblname, $db->real_escape_string($_GET['ipaddress_a']));
if($mysqli->affected_rows === 0) $is_valid = TRUE;
}
//insert data
if($is_valid){
$sql = sprintf("INSERT INTO %s (ipaddress_a) values ('%s')",$tblname, $db->real_escape_string($_GET['ipaddress_a']));
if($db->query($sql)) echo "เพิ่มข้อมูลลงฐานข้อมูลเรียบร้อยแล้ว";
else echo "Error with query: ",$db->error;
}
else echo $_GET['ipaddress_a'], " ซ้ำ!";
$db->close();
?>
https://www.thaicreate.com/community/php-mysql-to-mysqil.html
http://www.electrictoolbox.com/php-validate-ip-address-filter-var/
Date :
2013-10-02 14:50:57
By :
itpcc
ตอบความคิดเห็นที่ : 7 เขียนโดย : itpcc เมื่อวันที่ 2013-10-02 14:50:57
รายละเอียดของการตอบ ::
ผมได้ทำการลองนำมาใช้ ประยุกต์เเล้ว ยังเหมือนเดิมหน่ะครับ ไม่เเจ้งว่าซ้ำครับ บันทึกไปดื้อๆเลยครับพี่ โค้ดที่ผมลองคือ ผมต้องแก้ไขตรงไหนดีครับ มันไม่เข้าเงื่อนไขหน่ะครับ
Code (PHP)
<?php
//กำหนดตัวแปรเพื่อนำไปใช้งาน
$hostname = "localhost"; //ชื่อโฮสต์
$user = "root"; //ชื่อผู้ใช้
$password = "11223344"; //รหัสผ่าน
$dbname = "destination"; //ชื่อฐานข้อมูล
$tblname = "sourcedestination"; //ชื่อตาราง
$db = new mysqli($hostname, $user, $password, $dbname);
// เริ่มติดต่อฐานข้อมูล
mysql_connect($hostname, $user, $password) or die("ติดต่อฐานข้อมูลไม่ได้");
// เลือกฐานข้อมูล
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");
// คำสั่ง SQL และสั่งให้ทำงาน
//vadilating data
$is_valid = FALSE;
if(!filter_var($_GET['ipaddress_a'], FILTER_VALIDATE_IP)) $is_valid = TRUE;
else{
$sql = sprintf("SELECT ipaddress_a FROM sourcedestination WHERE 'ipaddress_a'='sourcedestination'",$tblname, $db->real_escape_string($_GET['ipaddress_a']));
if($mysqli->affected_rows === 0) $is_valid = TRUE;
}
//insert data
if($is_valid){
$sql = sprintf("INSERT INTO $tblname (room_a, row_a, rack_a, brand_a, brands_a, storage_a, port_a, ports_a, sourcelocation_a, sourceport_a, interface_a, protocol_a, product_a, devicename_a, ipaddress_a, destinationport_a, destinationlocation_a, remark_a, room_b, row_b, rack_b, brand_b, brands_b, storage_b, port_b, ports_b, sourcelocation_b, sourceport_b, interface_b, protocol_b, product_b, devicename_b, ipaddress_b, destinationport_b, destinationlocation_b, remark_b) values ('sourcedestination','$room_a', '$row_a', '$rack_a', '$brand_a' ,
'$brands_a' , '$storage_a', '$port_a' , '$ports_a' , '$sourcelocation_a', '$sourceport_a', '$interface_a', '$protocol_a', '$product_a', '$devicename_a', '$ipaddress_a', '$destinationport_a', '$destinationlocation_a', '$remark_a' , '$room_b', '$row_b', '$rack_b', '$brand_b', '$brands_b', '$storage_b', '$port_b', '$ports_b', '$sourcelocation_b', '$sourceport_b', '$interface_b', '$protocol_b', '$product_b', '$devicename_b', '$ipaddress_b', '$destinationport_b', '$destinationlocation_b', '$remark_b')",$tblname, $db->real_escape_string($_GET['ipaddress_a']));
if($db->query($sql)) echo "เพิ่มข้อมูลลงฐานข้อมูลเรียบร้อยแล้ว";
else echo "Error with query: ",$db->error;
}
else echo $_GET['ipaddress_a'], " ซ้ำ!";
$db->close();
?>
<br><a href="administrator.php">กลับไปยังหน้าแรก</a>
Date :
2013-10-02 18:40:47
By :
lekjaengs
ตอนนี้ เช็คได้เเล้วนะครับ แต่ว่าผมลองเอาไปประยุกต์ดู มันเช็คเฉพาะค่าใคร ค่ามัน อยากให้เช็คทั้ง ipaddress_a และ ipaddress_b หน่ะครับ ผมต้องเพิ่มหรือแก้ไขตรงไหนบ้างครับที่จะให้ตรวจสอบค่าซ้ำทั้ง ipaddress_a และ ipaddress_b ครับ ขอบคุณมากๆครับ
Code (PHP)
<?php
$ipaddress_a = $_POST['ipaddress_a'];
$ipaddress_b = $_POST['ipaddress_b'];
// ถ้ามีการกรอก IP
if ($ipaddress_a != '0.0.0.0' || $ipaddress_a != '?.?.?.?' || $ipaddress_b != '0.0.0.0' || $ipaddress_b != '?.?.?.?') {
// ถ้าเป็น IP
if (filter_var($ipaddress_a, FILTER_VALIDATE_IP) || filter_var($ipaddress_b, FILTER_VALIDATE_IP)) {
// ตรวจว่ามีแถวที่มีค่า IP นั้นๆ อยู่หรือไม่
if (!mysql_fetch_row(mysql_query("SELECT * FROM sourcedestination WHERE ipaddress_a = '$ipaddress_a' LIMIT 1")) || !mysql_fetch_row(mysql_query("SELECT * FROM sourcedestination WHERE ipaddress_b = '$ipaddress_b' LIMIT 1"))) {
// ถ้าไม่ซ้ำก็ INSERT
mysql_query("insert into sourcedestination (room_a, row_a, rack_a, brand_a, brands_a, storage_a, port_a, ports_a, sourcelocation_a, sourceport_a, interface_a, protocol_a, product_a, devicename_a, ipaddress_a, destinationport_a, destinationlocation_a, remark_a, room_b, row_b, rack_b, brand_b, brands_b, storage_b, port_b, ports_b, sourcelocation_b, sourceport_b, interface_b, protocol_b, product_b, devicename_b, ipaddress_b, destinationport_b, destinationlocation_b, remark_b) values ('$room_a', '$row_a', '$rack_a', '$brand_a' ,
'$brands_a' , '$storage_a', '$port_a' , '$ports_a' , '$sourcelocation_a', '$sourceport_a', '$interface_a', '$protocol_a', '$product_a', '$devicename_a', '$ipaddress_a', '$destinationport_a', '$destinationlocation_a', '$remark_a', '$room_b', '$row_b', '$rack_b', '$brand_b' ,
'$brands_b' , '$storage_b', '$port_b' , '$ports_b' , '$sourcelocation_b', '$sourceport_b', '$interface_b', '$protocol_b', '$product_b', '$devicename_b', '$ipaddress_b', '$destinationport_b', '$destinationlocation_b', '$remark_b')");
// ปิดการติดต่อฐานข้อมูล
mysql_close();
echo "เพิ่มข้อมูลลงฐานข้อมูลเรียบร้อยแล้ว";
} else {
echo "หมายเลข IP ซ้ำ";
}
} else {
// ถ้าไม่ซ้ำก็ INSERT
echo "เพิ่มข้อมูลลงฐานข้อมูลเรียบร้อยแล้ว";
mysql_query("insert into sourcedestination (room_a, row_a, rack_a, brand_a, brands_a, storage_a, port_a, ports_a, sourcelocation_a, sourceport_a, interface_a, protocol_a, product_a, devicename_a, ipaddress_a, destinationport_a, destinationlocation_a, remark_a, room_b, row_b, rack_b, brand_b, brands_b, storage_b, port_b, ports_b, sourcelocation_b, sourceport_b, interface_b, protocol_b, product_b, devicename_b, ipaddress_b, destinationport_b, destinationlocation_b, remark_b) values ('$room_a', '$row_a', '$rack_a', '$brand_a' ,
'$brands_a' , '$storage_a', '$port_a' , '$ports_a' , '$sourcelocation_a', '$sourceport_a', '$interface_a', '$protocol_a', '$product_a', '$devicename_a', '$ipaddress_a', '$destinationport_a', '$destinationlocation_a', '$remark_a', '$room_b', '$row_b', '$rack_b', '$brand_b' ,
'$brands_b' , '$storage_b', '$port_b' , '$ports_b' , '$sourcelocation_b', '$sourceport_b', '$interface_b', '$protocol_b', '$product_b', '$devicename_b', '$ipaddress_b', '$destinationport_b', '$destinationlocation_b', '$remark_b')");
}
}else{
// ตามเงื่อนไขที่ 1 ถ้ามันเป็น 0.0.0.0 ก็ให้ save ไปด้วย
echo "เพิ่มข้อมูลลงฐานข้อมูลเรียบร้อยแล้ว";
mysql_query("insert into sourcedestination (room_a, row_a, rack_a, brand_a, brands_a, storage_a, port_a, ports_a, sourcelocation_a, sourceport_a, interface_a, protocol_a, product_a, devicename_a, ipaddress_a, destinationport_a, destinationlocation_a, remark_a, room_b, row_b, rack_b, brand_b, brands_b, storage_b, port_b, ports_b, sourcelocation_b, sourceport_b, interface_b, protocol_b, product_b, devicename_b, ipaddress_b, destinationport_b, destinationlocation_b, remark_b) values ('$room_a', '$row_a', '$rack_a', '$brand_a' ,
'$brands_a' , '$storage_a', '$port_a' , '$ports_a' , '$sourcelocation_a', '$sourceport_a', '$interface_a', '$protocol_a', '$product_a', '$devicename_a', '$ipaddress_a', '$destinationport_a', '$destinationlocation_a', '$remark_a', '$room_b', '$row_b', '$rack_b', '$brand_b' ,
'$brands_b' , '$storage_b', '$port_b' , '$ports_b' , '$sourcelocation_b', '$sourceport_b', '$interface_b', '$protocol_b', '$product_b', '$devicename_b', '$ipaddress_b', '$destinationport_b', '$destinationlocation_b', '$remark_b')");
}
?>
Date :
2013-10-05 09:36:58
By :
lekjaengs
ขอสอบถามผู้รู้หน่อยครับ เรามี รหัสอยู่ 4 ตัว เช่น 1111
แล้วมีฟอร์ลงทะเบียน
รับ ชื่อ
รับ นามสกุล
รับอายุ
รับ code 4 ตัว คือ 1111 มีในระบบ
ถ้าลูกค้าใส่เลข 1111 ถึงจะบัญทึกข้อมูลลงในฐานข้อมูลให้ ถ้าไม่ใส่ตัวเลขหรือเลขมั่วก็ไม่สามารถบันทึกได้นะครับ
พอมี code เป็นแนวทางให้ไหมครับ
Date :
2016-10-05 17:21:31
By :
เอก
ผมมีข้อมูลที่จะแสดงที่หน้า dashboard และทีนี้ผม คิวรี่ข้อมูลมาแสดงที่หน้า dashboard แล้ว เหลือแต่ทำให้เป็น realtime ครับ ช่วยหน่อยครับ
Date :
2021-01-20 16:10:55
By :
Tor
ไปศึกษา ajax realtime ดูทำเป็นตัวอย่าง แต่ error ทุกรอบเลยครับ
Date :
2021-01-20 16:11:22
By :
Tor
ปรึกษาอีกครับ
กรณีนี้ผม คิวรี่ข้อมูลเครื่อง pc ที่ยังไม่มีข้อมูลในระบบฐานข้อมูล คิวรี่ที่เป็น 2 มาได้ครับ แต่วง lan คนละ ip อยากทราบว่า ผมคิวรี่มาแบบนี้ จะกำหนด ip ไว้ที่ไหนครับ code คิวรี่ครับ
<?php
$statuspc = 0;
$sql = "SELECT statuspc, count(ip) as countstatus FROM monitorpc.tbl_detail_pc where statuspc = '2';";
$result2 = $mysqli->query($sql);
while ($row = $result2->fetch_array(MYSQLI_ASSOC)) {
$statuspc = $statuspc + $row['countstatus'];
} ?>
ที่ผมคิดแบบนี้ถูกไหมครับ ขอคำแนะนำด้วยครับ
<?php
$statuspc = 0;
$sql = "SELECT statuspc, count(ip) as countstatus FROM monitorpc.tbl_detail_pc where statuspc = '2';";
$result2 = $mysqli->query($sql);
while ($row = $result2->fetch_array(MYSQLI_ASSOC)) {
$ip = 10.183;
if(ip = 10.183){
echo $statuspc = $statuspc + $row['countstatus'];
}
} ?>
Date :
2021-01-20 16:11:50
By :
Tor
post กระทู้ยังไงหรอครับ สมัครสมาชิกแล้ว สร้าง post แล้ว กด submit ไม่ได้ครับ
Date :
2021-01-20 17:05:47
By :
Tor
Load balance : Server 02