01/10/2018, 14:16

Làm thế nào để lựa chọn database insert trong php

Mình có một trang html có thẻ option với một vài lựa chọn ví dụ:

    <select id="select" onchange="">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
    </select>

Làm thể nào để mình chọn option 1 thì nó sẽ insert data vào database1, chọn option 2 thì nó sẽ insert data vào database2. Nhờ các bạn cho mình một giải pháp.

Vô Thin viết 16:29 ngày 01/10/2018

Form của bạn như trên, bạn dùng submit như thế nào, theo mình thấy là phải có name=“tên-gì-đó” cho thẻ select để có thể gửi dữ liệu được.

Ví dụ nhé:

<select id="select" name="lua_chon" onchange="">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
 </select>

Khi post thì bên trang PHP sẽ nhận được:

<?php

$which_choose = intval($_POST['lua_chon']);

$chuoi_sql = "INSERT INTO "
$my_database = '';

switch ($which_choose) {
    case 1:
        $my_database = 'database1';
        break;
    case 2:
        $my_database = 'database2';
        break;
    default:
       $my_database = 'default_database';
}

$chuoi_sql .= $my_database;

$chuoi_sql .= "nối thêm cái gì đó tùy vào câu INSERT cụ thể";

?>

Code trên thô sơ vậy, nếu bạn xài Ajax để post thì theo ý mình nói để tự xử vấn đề vì mình cũng không rành Ajax.

voss viết 16:22 ngày 01/10/2018

Cảm ơn bạn, mình dùng một thẻ <button type="submit" name =lua_chon"> để gửi dữ liệu. Mình muốn là mình chọn option 1 thì nó sẽ thay đổi insert đến database1, option 2 thì nó sẽ insert to database2. Mình sẽ thử theo cách của bạn :). Cảm ơn.

viết 16:31 ngày 01/10/2018

Không rành php lắm nhưng bạn thử dùng mảng xem được không

$database_name = array(
    'data1' => database1,
    'data2' => database2,
    'data3' => database3
    );

$database = $database_name($_POST('lua_chon'));
```
voss viết 16:26 ngày 01/10/2018

Hi @superthin Tôi đã thử cách của bạn, nó đã hoạt động, nhưng có một vấn đề, khi tôi chọn option 1, data được insert cả vào 2 database, khi tôi chọn option 2 data được insert vào mình database 2. Bạn có thể kiểm tra lại giúp tôi được không. Tôi thấy có cả thông báo “Notice: Undefined index: lua_chon in C:\xampp\htdocs\Test_change_url_iframe\testchangeurl.php on line 24” tôi không hiểu vì sao nó xuất hiện.
Đây là mã của tôi. Xin hảy xem lại giúp tôi.

<!DOCTYPE html>
<html>

  <head>
    <title>Change data insert</title>
 <?php

$username = "root";
$password = "";
$sever    = "localhost";
$dbname   = "testsht";

$connect = new mysqli($sever, $username, $password, $dbname);
if ($connect->connect_error) {
    die("Không kết nối :" . $conn->connect_error);
    exit();
}

$date ="";
$MAB = "";
$MBA = "";
$PAB = "";
$PBA = "";
$which_choose = intval($_POST['lua_chon']);
switch ($which_choose) {
		case 1:	{
			if (isset($_POST['submit'])){
			if(isset($_POST["date"])) { $date = $_POST['date'];}
			if(isset($_POST["MAB"])) { $MAB = $_POST['MAB']; }
			if(isset($_POST["MBA"])) { $MBA = $_POST['MBA']; }
			if(isset($_POST["PAB"])) { $PAB = $_POST['PAB']; }
			if(isset($_POST["PBA"])) { $PBA = $_POST['PBA']; }

		$sql = "INSERT INTO `dbsht` (`date`, `MAB`, `MBA`, `PAB`, `PBA`) VALUES ('$date', '$MAB', '$MBA', '$PAB', '$PBA')";	
		if ($connect->query($sql) === TRUE) {
			$_SESSION["ADD_SUCCESS"] = 1;

			header('Location: '.$_SERVER['REQUEST_URI']);
		} else {
			echo "Error: " . $sql . "<br>" . $connect->error;
		}}}
		case 2:	{
			if (isset($_POST['submit'])){
			if(isset($_POST["date"])) { $date = $_POST['date'];}
			if(isset($_POST["MAB"])) { $MAB = $_POST['MAB']; }
			if(isset($_POST["MBA"])) { $MBA = $_POST['MBA']; }
			if(isset($_POST["PAB"])) { $PAB = $_POST['PAB']; }
			if(isset($_POST["PBA"])) { $PBA = $_POST['PBA']; }
			
		$sql = "INSERT INTO `dbsht2` (`date`, `MAB`, `MBA`, `PAB`, `PBA`) VALUES ('$date', '$MAB', '$MBA', '$PAB', '$PBA')";	
		if ($connect->query($sql) === TRUE) {
			$_SESSION["ADD_SUCCESS"] = 1;

			header('Location: '.$_SERVER['REQUEST_URI']);
		} else {
			echo "Error: " . $sql . "<br>" . $connect->error;
			}}
	} 
}
?>
    
  </head>

  <body>
<form method="post"> 
   <select id="select" name="lua_chon" onchange=""><br>
      <option value="1">1</option><br>
      <option value="2">2</option><br>
      <option value="3">3</option><br>
      <option value="4">4</option><br>
 </select>
 <input type="number" name="MAB" value="" id="MainAB" step=0.01><br>
 <input type="number" name="MBA" value="" id="MainBA" step=0.01><br>
 <input type="number" name="PAB" value="" id="PrtAB" step=0.01><br>
 <input type="number" name="PBA" value="" id="PrtBA" step=0.01><br>
 <button type="submit" name ="submit" value="submit">submit</button>
 </body>
</form>
</html>
Vô Thin viết 16:30 ngày 01/10/2018

Bạn vứt mấy cái break; đi đâu rồi? Nhớ dùng nó để ngắt lệnh khi rẽ nhánh case, nếu không nó xảy ra hiện tượng như bạn nói.

Hơn nữa, trong mỗi lần case, thấy các lệnh của bạn giống nhau, do đó, nên gom nó lại trong một function rồi gọi, chứ viết kiểu kia trông có vẻ thô sơ quá, không giúp cho việc viết mã ngắn gọn, dễ hiểu cho lắm.

voss viết 16:31 ngày 01/10/2018

@superthin Cảm ơn bạn, nó hoạt động được rồi. Cho mình hỏi chút sao nó vẫn xuất hiện cảnh báo “Undefined index: lua_chon” nhỉ. Mình không hiểu rõ lắm. Mình đã rút gọn code

Vô Thin viết 16:24 ngày 01/10/2018

Nguyên nhân là do file của bạn có vấn đề trong bố trí các thẻ HTML. Bạn đóng file bằng thẻ body trước khi bạn đóng form, nên tuần tự theo kiểu mở ngoặc, đóng ngoặc trong toán học mới đúng, chứ trộn lẫn là trình duyệt hiểu sai.

Khi submit, kết quả của name=“lua_chon” không được gửi qua post nên không bắt được, mà nó vẫn ra kết quả như bạn mong đợi khiến mình cũng thấy lạ (lười đọc code bạn nên hông rõ )
Bạn rõ rồi chứ? Nếu vẫn chưa rõ và đang trong quá tình học, bạn nên tách file có form riêng ra 1 file, và file nhận kết quả submit là 1 file khác, lúc đó bạn có thể echo, print ra để xem kết quả nhận được thế nào. Nhớ là khi tách file thì file chứa form nhớ thêm action=“tên-file-nhận-kết-quả-từ-post.php” vào thẻ form nhé.

voss viết 16:28 ngày 01/10/2018

Nguyên nhân là do file của bạn có vấn đề trong bố trí các thẻ HTML. Bạn đóng file bằng thẻ body trước khi bạn đóng form, nên tuần tự theo kiểu mở ngoặc, đóng ngoặc trong toán học mới đúng, chứ trộn lẫn là trình duyệt hiểu sai.

Khi submit, kết quả của name=“lua_chon” không được gửi qua post nên không bắt được, mà nó vẫn ra kết quả như bạn mong đợi khiến mình cũng thấy lạ (lười đọc code bạn nên hông rõ )
Bạn rõ rồi chứ? Nếu vẫn chưa rõ và đang trong quá tình học, bạn nên tách file có form riêng ra 1 file, và file nhận kết quả submit là 1 file khác, lúc đó bạn có thể echo, print ra để xem kết quả nhận được thế nào. Nhớ là khi tách file thì file chứa form nhớ thêm action=“tên-file-nhận-kết-quả-từ-post.php” vào thẻ form nhé.

Cảm ơn bạn

Bài liên quan
0