je veux générer aléatoirement :
un nombre d'élève,
chaque élève est affecté à une des 3 écoles
chaque élève pratique entre 0 et 3 sports parmi 5 sports
voici les table que j'ai créé
table école : ecole_id |ecole_nom
table sport : sport_id | sport_nom
table élevé : eleve_id | ecole_id | nbrSport
table sportEleve : sportEleve_id | eleve_id | sport_id
j'arrive à générer les datas pour la table élève.
1IERE problématique
là ou cela se gâte c'est pour la sélection des sports parmi les 5 : j'ai fait le choix d'utiliser un array_rand mais si le nombre de sport n'est pas de 3 j'ai un message d'erreur car il y a des valeurs NULL.
2ieme problématique
comment faire pour générer les datas pour la table sportEleve mon problème est pour eleve_id qui ne ne pas changer si l'élève pratique plusieurs sports.
dans mon code j'ai inclu le array_rand mais pas du tout fait de ligne de code car je ne vois pas comment m'y prendre.
il y a-t-il une bonne âme pour me guider. Merci d'avance pour votre aide
page -> index.php
<?php
require('objets.php');
//condition pour les stat aléatoirement
if (isset($_GET["lancer"])) {
//nombre d'élève générer aléatoirement
$nbrEleve = rand(10,30);
//boucle création eleve (affectation ecole, nbr de sports, selection des sports)
for ($i=0; $i < $nbrEleve; $i++) {
//affectation de l'id de l'école
$school_id = rand(1,3);
//affectation du nombre de sport
$nbrSports = rand(0,3);
//tableau de selection aléatoire du nombre de sports
$input = array(1, 2, 3, 4, 5);
$rand_keys = array_rand($input, $nbrSports);
$sport1 = $input[$rand_keys[0]];
$sport2 = $input[$rand_keys[1]];
$sport3 = $input[$rand_keys[2]];
//création de l'objet eleve
$eleve_data = array(
'ecole_id' => $school_id,
'nbrSport' => $nbrSports,
);
$eleve = new Eleve($eleve_data);
//affectation dans la variable $db de la connexion PDO
$db = new PDO('mysql:host=localhost;dbname=statecole', 'root', '');
//instanciation de la classe EleveManager, nous créons un objet breve en argument
//la connexion PDO est passée en paramètre au constructeur.
$manager = new EleveManager($db);
//appel de la méthode addPupil, nous passons un objet eleve en argument.
$manager->addEleve($eleve);
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./styles.css" media="screen">
<title>php avancé 1</title>
</head>
<body>
<!--header - titre de la page-->
<header>
<h1>php avancé 1</h1>
</header>
<!--main et div bouton d'action pour les stats aléatoirement-->
<main>
<div class="stat">
<h2>Lancement des stats aléatoires</h2>
<form action="index.php" method="get">
<input type="submit" name="lancer" value="générer les stats" >
</form>
</div>
<br><br>
<!--pied de page-->
<footer>
<p>Les données sont générer aleatoirement</p>
</footer>
</body>
</html>
la page objets.php
<?php
// class eleve
class Eleve
{
private $_ecole_id;
private $_nbrSports;
public function __construct(array $eleveData)
{
$this->setEcole_id($eleveData['ecole_id']);
$this->setNbrSport($eleveData['nbrSport']);
}
// setters
public function setEcole_id($ecole_id)
{
if ((is_int($ecole_id)) AND ($ecole_id > 0) AND ($ecole_id < 4))
{
$this->_ecole_id = $ecole_id;
}
}
public function setNbrSport($nbrSports)
{
if ((is_int($nbrSports)) AND ($nbrSports >= 0) AND ($nbrSports <4))
{
$this->_nbrSports = $nbrSports;
}
}
// getters
public function getEcole_id()
{
return $this->_ecole_id;
}
public function getNbrSport()
{
return $this->_nbrSports;
}
}
// class eleveManager
class EleveManager
{
private $_db;
public function __construct($db)
{
$this->setDb($db);
}
public function setDb(PDO $dbh)
{
$this->_db = $dbh;
}
//insertion des élèves dans la base de données
public function addEleve(Eleve $eleve)
{
$sql = 'INSERT INTO eleve (ecole_id, nbrSport) VALUES (:ecole_id, :nbrSports)';
$stmnt = $this->_db->prepare($sql);
$ecole_id = $eleve->getEcole_id();
$nbrSports = $eleve->getNbrSport();
$stmnt->bindParam(':ecole_id', $ecole_id);
$stmnt->bindParam(':nbrSports', $nbrSports);
$stmnt->execute();
//gestion des erreurs
$errors = $stmnt->errorInfo();
if ($errors[0] != '00000')
{
echo 'Erreur SQL ' . $errors[2];
}
else
{
echo 'un élève a été ajouté';
}
}
}