问题
Hello i have tables like this :
Employee
EmployeeID EmployeeName
1234 Nayeon
1235 Jihyo
1236 Jungyeon
1237 Dahyun
1238 Sana
1239 Mina
1240 Tzuyu
1241 Chaeyeong
1241 Chaeyeong
1242 Momo
i used this source code :
<?php
mysql_connect("localhost", "root", "1234") or die(mysql_error());
mysql_select_db("databasetransport") or die(mysql_error());
$employees = mysql_query("SELECT * FROM Employee ORDER BY EmployeeID")
or die(mysql_error());
$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$position = 0;
$position2 = 0;
$toomany = '';
while($row = mysql_fetch_array( $employees )) {
echo "<DIV>" . $toomany.substr($letters, $position, 1) . " = " . $row['EmployeeName'] . " </div>";
$position ++;
if($position > 25) {
$position = 0;
$position2 ++;
if($position2 > 25) { echo "We need to rethink this idea."; break; }
$toomany = substr($letters, $position2, 1);
}
}
?>
to display these data :
A = Nayeon
B = Jihyo
C = Jungyeon
D = Dahyun
E = Sana
F = Mina
G = Tzuyu
F = Chaeyeong
H = Chaeyeong
I = Momo
The problem is i want to random that data like this (from the result before):
C = Jungyeon
A = Nayeon
H = Chaeyeong
B = Jihyo
I = Momo
F = Mina
G = Tzuyu
E = Sana
F = Chaeyeong
D = Dahyun
so i add codes like this :
<?php
mysql_connect("localhost", "root", "1234") or die(mysql_error());
mysql_select_db("databasetransport") or die(mysql_error());
$employees = mysql_query("SELECT * FROM Employee ORDER BY EmployeeID")
or die(mysql_error());
$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$position = 0;
$position2 = 0;
$toomany = '';
while($row = mysql_fetch_array( $employees )) {
echo "<DIV>" . $toomany.substr($letters, $position, 1) . " = " . $row['EmployeeID'] . " </div>";
$position ++;
if($position > 25) {
$position = 0;
$position2 ++;
if($position2 > 25) { echo "We need to rethink this idea."; break; }
$toomany = substr($letters, $position2, 1);
}
}
function generateRandomString($length = 10) {
$characters = $positions;
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
echo generateRandomString();
?>
but nothing happened (LOL) may you know where is the problem? Thank you
回答1:
Just build your array and then use this
http://php.net/manual/en/function.shuffle.php
cheers.
$a = array(
'A = Nayeon',
'B = Jihyo',
'C = Jungyeon',
'D = Dahyun',
'E = Sana',
'F = Mina',
'G = Tzuyu',
'F = Chaeyeong',
'H = Chaeyeong',
'I = Momo',
);
shuffle( $a );
var_export( $a );
Outputs:
array (
0 => 'I = Momo',
1 => 'E = Sana',
2 => 'F = Chaeyeong',
3 => 'F = Mina',
4 => 'B = Jihyo',
5 => 'A = Nayeon',
6 => 'C = Jungyeon',
7 => 'G = Tzuyu',
8 => 'D = Dahyun',
9 => 'H = Chaeyeong',
)
- As a side here, shuffle does not maintain the array keys, and it modifies the array meaning that the actual return of shuffle is a Boolean ( true | false ) value.
- It does however keep the names with the letter assigned ( if that is desirable )
- Is simple and fast
- Is readable
- Insures you don't pull the same row out twice.
回答2:
I think you can do all this in SQL:
select (@c := CHAR(ASCII(@c) + 1)) as c, EmployeeName
from pegawai cross join
(select @c := 'A') params
order by rand();
This assigns the characters in random order. If you want them in EmployeeId
order:
select p.*
from (select (@c := CHAR(ASCII(@c) + 1)) as c, EmployeeName
from pegawai cross join
(select @c := 'A') params
order by EmployeeId
) p
order by rand();
回答3:
You could change your query to:
$employees = mysql_query("SELECT * FROM pegawai ORDER BY RAND()")
And then:
$letters = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ'); //Use is as array
shuffle($letters); //Mix the array
$position = 0;
$position2 = 0;
$toomany = '';
while($row = mysql_fetch_array( $employees )) {
echo "<DIV>" . $toomany[$position] . " = " . $row['EmployeeID'] . " </div>";
$position ++;
if($position > 25) {
$position = 0;
$position2 ++;
if($position2 > 25) { echo "We need to rethink this idea."; break; }
$toomany = substr($letters, $position2, 1);
}
}
来源:https://stackoverflow.com/questions/31282438/how-to-display-random-data-on-mysql-using-php