0

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("Employee") 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("Employee") 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 does not work, may you know where is the problem? Thank you

1
  • Remember that this API is deprecated and insecure (like me) Commented Jul 10, 2015 at 7:13

1 Answer 1

1

You could use Shuffle to randomize the array you get from mysql_fetch_array.

It would look something like this:

$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

$array = array();

while($row = mysql_fetch_assoc($employees)){
    $array[] = $row
}

$i = 0;

// Assign a letter to each employee in the correct order
foreach($array as $Key => $row){
    $array[$Key]["letter"] = substr($letters, $i, 1);
    $i++;
    if($i > 25){
        $i = 0;
    }
}

// Shuffle the array
shuffle($array);

// Print each entry with correctly assigned letter and name.
foreach($array as $row) {
    echo "<DIV>" . $row["letter"] . " = " . $row['EmployeeName'] . " </div>";
}
Sign up to request clarification or add additional context in comments.

12 Comments

sorry but i got messages like this Warning: shuffle() expects parameter 1 to be array, boolean given in C:\xampp\htdocs\random3.php on line 14 and the EmployeeName don't appear
Try the updated version, I did some mistakes. Sorry!
i have tried this one too but the result is like this A = 1 B = 1 C = M D = M E = 1 F = 1 i dont know where the EmployeeName go and why they become M and 1 (LOL)
basically my problem is i want to random both the alphabeth and EmployeeName, with the same value but with a different sequence like my explanation above. Thank you for your help
oh have you edited again? i have tried the new version and it is working now but the EmployeeName changed to Alphabet too like this : D = D F = F E = E A = A C = C B = B T__T
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.