j'ai relu le message de ynx.
si je comprends bien pour récupérer l'eleve_id de la table eleve pour l'enregister dans la table sporteleve il faut faire un INSERT ??
J'essai de réexplique l'exercice que je dois faire :
4 tables
ecole : ecole_id | ecole_nom
sport : sport_id | nomSport
eleve : eleve_id | ecole_id
sporteleve : sporteleve_id |eleve_id | sport_id
je génère aléatoirement un nombre d'élève qui sont affecter aléatoirement à une école.
cette partie de mon code fonction la table se complète bien.
maintenant,
il faut que je génère aléatoirement pour chaque élève un nombre de sport entre 0 et 3 et sélectionner aléatoire les sports pratiqués puis les enregistrer dans la table sporteleve.
pour cela voilà ce que je pense juste de faire:
je récupère les eleve_id de la table élève
puis je génère aléatoirement un nombre de sport (entre 0 et 3)
puis pour en fonction du nombre de sports je génère aléatoirement les sport_id en vérifiant qu'il n'y ai pas de doublons.
du tableau des sport_id je fais une boucle pour les récupérer
je crée l'objet sporeleve
voici l'integralité de mon code . et surtout merci de votre patience !! si une bonne âme veut bien commenter mon code pour que je comprenne mes erreurs j'en serai ravis !!
require('objets.php');
//condition pour les stat aléatoirement
if (isset($_GET["lancer"])) {
//nombre d'élève générer aléatoirement
$nbrEleve = rand(3,10);
//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);
//création de l'objet eleve
$eleve_data = array(
'ecole_id' => $school_id
);
$eleve = new Eleve($eleve_data);
//affectation dans la variable $db de la connexion PDO
$db = new PDO('mysql:host=localhost;dbname=statecol', '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);
}
//récupération des eleve_id
$stmt = $db->prepare('SELECT eleve_id FROM eleve');
$stmt->execute();
//variable pour stocker la valeur du paramètre eleve_id
$eleve_id;
//boucle pour itérer sur les résultats
foreach ($stmt->fetchAll() as $result) {
//affectation des valeurs des résultats dans la variable
$eleve_id = $result['eleve_id'];
//génération aléatoire du nombre de sport
$prat_sport = rand(0,3);
function selectionnerNombresSansDoublons($prat_sport) {
// Initialisation d'un tableau vide
$nombres = [];
// Boucle pour générer jusqu'a 3 nombres aléatoires
for ($ii = 0; $ii < $prat_sport; $ii++) {
// Génération des nomnbres entre 1 et 5 qui seront les sportId
$nombre = rand(1, 5);
// Vérification que le nombre n'est pas déjà dans le tableau
if (!in_array($nombre, $nombres)) {
// Ajout du nombre au tableau
$nombres[]= $nombre;
}
}
}
// Retour du tableau de nombres
return $nombres;
foreach ($nombres as $nombre){
$sportId = $nombre;
//création de l'objet sportEleve
$sportEleve_data = array(
'eleve_id' => $eleve_id,
'sport_id' => $sportId,
);
//affectation dans la variable $db de la connexion PDO
$db = new PDO('mysql:host=localhost;dbname=statecol', '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.
$manager1 = new SportEleveManager($db);
//appel de la méthode addPupil, nous passons un objet eleve en argument.
$manager1->addSportEleve($sportEleve);
}
}
}
j'ai relu le message de ynx.
si je comprends bien pour récupérer l'eleve_id de la table eleve pour l'enregister dans la table sporteleve il faut faire un INSERT ??
J'essai de réexplique l'exercice que je dois faire :
4 tables
ecole : ecole_id | ecole_nom
sport : sport_id | nomSport
eleve : eleve_id | ecole_id
sporteleve : sporteleve_id |eleve_id | sport_id
je génère aléatoirement un nombre d'élève qui sont affecter aléatoirement à une école.
cette partie de mon code fonction la table se complète bien.
maintenant,
il faut que je génère aléatoirement pour chaque élève un nombre de sport entre 0 et 3 et sélectionner aléatoire les sports pratiqués puis les enregistrer dans la table sporteleve.
pour cela voilà ce que je pense juste de faire:
je récupère les eleve_id de la table élève
puis je génère aléatoirement un nombre de sport (entre 0 et 3)
puis pour en fonction du nombre de sports je génère aléatoirement les sport_id en vérifiant qu'il n'y ai pas de doublons.
du tableau des sport_id je fais une boucle pour les récupérer
je crée l'objet sporeleve
voici l'integralité de mon code . et surtout merci de votre patience !! si une bonne âme veut bien commenter mon code pour que je comprenne mes erreurs j'en serai ravis !!
[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(3,10);
//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);
//création de l'objet eleve
$eleve_data = array(
'ecole_id' => $school_id
);
$eleve = new Eleve($eleve_data);
//affectation dans la variable $db de la connexion PDO
$db = new PDO('mysql:host=localhost;dbname=statecol', '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);
}
//récupération des eleve_id
$stmt = $db->prepare('SELECT eleve_id FROM eleve');
$stmt->execute();
//variable pour stocker la valeur du paramètre eleve_id
$eleve_id;
//boucle pour itérer sur les résultats
foreach ($stmt->fetchAll() as $result) {
//affectation des valeurs des résultats dans la variable
$eleve_id = $result['eleve_id'];
//génération aléatoire du nombre de sport
$prat_sport = rand(0,3);
function selectionnerNombresSansDoublons($prat_sport) {
// Initialisation d'un tableau vide
$nombres = [];
// Boucle pour générer jusqu'a 3 nombres aléatoires
for ($ii = 0; $ii < $prat_sport; $ii++) {
// Génération des nomnbres entre 1 et 5 qui seront les sportId
$nombre = rand(1, 5);
// Vérification que le nombre n'est pas déjà dans le tableau
if (!in_array($nombre, $nombres)) {
// Ajout du nombre au tableau
$nombres[]= $nombre;
}
}
}
// Retour du tableau de nombres
return $nombres;
foreach ($nombres as $nombre){
$sportId = $nombre;
//création de l'objet sportEleve
$sportEleve_data = array(
'eleve_id' => $eleve_id,
'sport_id' => $sportId,
);
//affectation dans la variable $db de la connexion PDO
$db = new PDO('mysql:host=localhost;dbname=statecol', '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.
$manager1 = new SportEleveManager($db);
//appel de la méthode addPupil, nous passons un objet eleve en argument.
$manager1->addSportEleve($sportEleve);
}
}
}
[/PHP]