Skip to main content

PHP เขียนโปรแกรม สุ่มรายชื่อผู้โชคดี

คงเป็นเรื่องน่าปวดหัวไม่น้อยหากเราต้องการสุ่มรายชื่อผู้โชดดี เช่น ผู้ที่จะได้รับรางวัล หรือ ของแถม ต่าง ๆ   จาก รายชื่อ คนจำนวนมาก เป็น 100 เป็น 1,000  หรือ เป็น 10,000  หากเราไม่มี เครื่องมือ หรือ โปรแกรมมาช่วยในส่วนนี้

วันนี้ เราขอแนะนำ วิธีการเขียนโปรแกรม ด้วย ภาษา PHP ในการสุ่มรายชื่อผู้ โชคดี จำนวน 10 ท่าน จาก รายชื่อทั้งหมด 100 ท่าน เราจะทำอย่างไร ไปดูกันต่อเลยครับ

ก่อนอื่น ต้องมาทำความรู้จักกับตัวช่วยของเราก่อน  นั้นก็คือ function array_rand()

คือ ฟังชั่น สำหรับสุ่มค่าตัวแปรใน array ซึ่งสามารถ ระบุ จำนวนที่ต้องการสุ่มได้

ตัวอย่าง

<?php
$a=array("red","green","blue","yellow","brown");
$random_keys=array_rand($a,3);
echo $a[$random_keys[0]]."<br>";
echo $a[$random_keys[1]]."<br>";
echo $a[$random_keys[2]];
?>

ตัวอย่างการทำงาน

Image 2

การทำงานของ ฟังชั่นนี้ จะทำการสุ่ม ค่าจาก ตัวแปร $a โดยสามารถระบุ จำนวนที่ต้องการสุ่มได้ ในต้วอย่างคือ 3 จำนวน

ที่มา http://www.w3schools.com/php/func_array_rand.asp

 

มาดูการประยุกต์ใช้งาน กับ โจทย์ของเราเลย

คือ แสดง รายชือผู้โชคดีจำนวน 10 ท่าน จากฐานข้อมูล รายชื่อ ลูกค้า จำนวน 100 ท่าน

<?php
$servername = "localhost";
$username = "root";
$password = "";
$db = "random";

// Create connection
$conn = new mysqli($servername, $username, $password,$db);

mysqli_set_charset($conn,"utf8");

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM customer";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
	
    while($row = $result->fetch_assoc()) {
		
		//รับ ค่า id มาใส่ไว้ในตัวแปร random ซึ่งเป็นตัวแปรประเภท array
		$random[] = $row["id"];
		
		//กำหนดตัวแปร $data ให้เป็น  Associative Array โดยกำหนด key เท่ากับ ค่า id
		$data[$row["id"]] =  array(
				'id' => $row['id'],
				'first_name' => $row['first_name'],
				'last_name' => $row['last_name'],
				'phone' => $row['phone'],
				'email' => $row['email'],
		);	
    }
	
} else {
	
    echo "0 results";
}

//จำนวนที่ต้องการ สุ่ม
$number = 10;

//ใช้ function array_rand สุ่ม ค่า จาก ตัวแปร $random โดย มีจำนวนเท่ากับตัวแปร $number
$random_keys= array_rand($random,$number);

echo "<table>";
	
	//วนลูป เพื่อ แสดง รายชื่อผู้โชคดี
	for($i = 0; $i< $number; $i++){
		
		//รับค่าที่ สุ่มได้ มาใส่ไว้ในตัวแปร $id
		$id = $random[$random_keys[$i]];
		
		//แสดงข้อมูล จากตัวแปร $data ที่มี Key เท่ากับ $id
		echo"<tr>";
			echo "<td>".$data[$id]['id']."</td>";
			echo "<td>".$data[$id]['first_name']."</td>";
			echo "<td>".$data[$id]['last_name']."</td>";
			echo "<td>".$data[$id]['phone']."</td>";
			echo "<td>".$data[$id]['email']."</td>";
		echo"</tr>";
	}

echo"</table>";
?>

ผลการทำงาน

จะได้ รายชื่อ ที่ สุ่มได้จำนวน 10 รายชือ

Image 3

 

Download