Ik ben aan het stoeien met een werknemer van de dag script.
Deze kiest iedere dag een andere naam.
origineel staan de namen in het script zelf, ik wil graag dat deze uit een sql tabel gehaald worden.
Het weergeven van informatie uit een tabel is me duidelijk, maar samenvoegen met dit script lukt me tot nu toe nog niet.
Is er iemand die kan helpen?
Hartelijk dank!
<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
function RandomQuoteByInterval($TimeBase, $QuotesArray){
// Make sure it is a integer
$TimeBase = intval($TimeBase);
// How many items are in the array?
$ItemCount = count($QuotesArray);
// By using the modulus operator we get a pseudo
// random index position that is between zero and the
// maximal value (ItemCount)
$RandomIndexPos = ($TimeBase % $ItemCount);
// Now return the random array element
return $QuotesArray[$RandomIndexPos];
}
/*
** --> See the example section below for a
** detailed instruction.
*/
// Use the day of the year to get a daily changing
// quote changing (z = 0 till 365)
$DayOfTheYear = date('z');
// You could also use:
// --> date('m'); // Quote changes every month
// --> date('z'); // Quote changes every day
// --> date('h'); // Quote changes every hour
// --> date('i'); // Quote changes every minute
echo '<p style="text-align:center"><font size="8" color="#FFFFFF"> De topper van de dag is:';
print "</p>";
print "<b>";
echo '<p style="text-align:center">';
// Example array with some random quotes
$RandomQuotes = array(
'naam 1',
'naam 2',
'Naam 3',
'Naam 4',
'Naam 5'
);
print RandomQuoteByInterval($DayOfTheYear, $RandomQuotes);
?>
Met deze query haal je een willekeurige persoon uit de database.
select
`fakenames`.`givenname`,
`fakenames`.`surname`
from `fakenames`
where rand() < (select 5 / count(0) * 10 from `fakenames`)
order by rand() limit 1;
Bedankt voor je reactie!
Het is wel de bedoeling dat deze persoon de hele dag zichtbaar is, ook al wordt de pagina meerdere keren per dag geladen.
Adoptive Solution op 25/01/2024 08:48:29
Met deze query haal je een willekeurige persoon uit de database.
select
`fakenames`.`givenname`,
`fakenames`.`surname`
from `fakenames`
where rand() < (select 5 / count(0) * 10 from `fakenames`)
order by rand() limit 1;
RAND() kan ook een parameter mee krijgen. Bij steeds dezelfde parameter komt steeds dezelfde "random" waarde eruit.
Dus je zou iets kunenn doen als
SELECT name
FROM tabel
ORDER BY RAND(CURRENT_DATE)
LIMIT 1
Ik heb alleen niet getest of current_date dan - mag bevatten.
En aangezien die process random is: je kunt dus in uitzonderlijke situaties ook 5 dagen op rij dezelfde medewerker treffen en iemand anders een heel jaar niet.
Daarom zou je eigenlijk een lijst moeten bijhouden wie al aan de beurt is geweest, om het eerlijk te houden.
?Onbekende gebruiker
25-01-2024 11:43
Houd er rekening mee dat de RAND() functie mogelijk niet voor elke rij opnieuw wordt geevalueerd in MySQL.
Om MySQL te forceren de uitkomst elke keer opnieuw uit te rekenen voor elke rij, kan je er een variabele waarde aan toevoegen, bijvoorbeeld het id uit een rij.
SELECT *, DATE_FORMAT(NOW(), '%Y%m%d%H%i')
FROM xyz
ORDER BY RAND(DATE_FORMAT(NOW(), '%Y%m%d%H%i'))
Met een datum in het formaat Y-m-d H:i ging het mis, maar zonder de - en : tekens krijg ik elke minuut een andere volgorde van de records.
Dat zou dus ook met alleen de datum goed moeten gaan.
Overigens werkt het wel als ik alleen maar NOW() gebruik en de timestamp niet verder opmaak. Dan krijg ik steeds een andere volgorde behalve als het in dezelfde seconde valt.
Maar ik zou wel ergens noteren dat Pietje op 25 janurari medewerker van de dag was en dat je die dus niet binnen X tijd nog een keer selecteert.
Bedankt voor de reacties!
Op zich werkt m'n systeempje zoals ik het wil hebben, ongeacht of mensen toevallig meerdere dagen achter elkaar worden weergeven..
Mijn bedoeling is om in plaats van de namen zoals ze nu in het script staan, deze uit een sql tabel te halen.