Aide en php

Fermé
Zie882 - 18 juil. 2019 à 03:18
 Zie882 - 18 juil. 2019 à 15:11
Bonjour,
Bonjour, svp je fais actuellement une application de parrainage d'étudiant première année - deuxième année dans laquelle j'ai attribut des id aléatoire de parrain à chaque filleul et je n'arrive pas à faire de sort que tout les parrains de deuxième année ait au moins un filleul en première année. Quelqu'un peut il m'aider svp ?


Configuration: Android / Chrome 75.0.3770.101
A voir également:

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
18 juil. 2019 à 06:43
Bonjour

Tu places la liste des id de parain dans un array
Idem avec la liste des premières années
Ensuite, tu boucle sur l'array des parains et pour chacun, tu tires au hasard un id de première (que tu enleves ensuite de son array)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
18 juil. 2019 à 06:46
Et si il reste des filleuls non attribués, tu les prends et tu fais l'inverse... un boucle sur eux et tu tires au sort parmis l'array des parains
0
Svp, puis je avoir un exemple de code de cette partie ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Zie882
18 juil. 2019 à 11:59
Bonjour,
Techniquement... je pourrais.... mais ce n'est pas tellement l'esprit de ce forum. (nous ne ferons pas le travail à ta place).
Donc, Commence par nous montrer ce que tu as essayé et explique nous à quel endroit tu bloques.
Là, on verra pour t'aider à corriger ton code.
0
En fait, mon code passe parfaitement mais pas comme je le veux. Tout c'est seulement que ce n'est pas tout les parrains qui ont pas de filleul
OK donc je vous montre mon code
0
<?php if (isset($_POST['inscrire_p'])) { //verification si les données parrains saisies if (!empty($_POST['nom_p']) AND !empty($_POST['prenom_p']) AND ! empty($_POST['classe_p']) AND !empty($_POST['genre_p']) AND !empty($_POST['numero_p'])) { $nom_p = htmlspecialchars($_POST['nom_p']); $prenom_p = htmlspecialchars($_POST['prenom_p']); $classe_p = htmlspecialchars($_POST['classe_p']); $genre_p = htmlspecialchars($_POST['genre_p']); $numero_p = $_POST['numero_p']; $date = date("d-m-Y H:i:s"); $insertion = $db->prepare(" INSERT INTO parrain(id_p, nom_p, prenom_p, classe_p, genre_p, numero_p, creation_le) VALUES('', ?, ?, ?, ?, ?, ?)"); $insertion->execute(array($nom_p, $prenom_p, $classe_p, $genre_p, $numero_p, $date)); $flashalertep = '<div class="alert alert-success"> Inscription terminée, félicitation parrain '.$nom_p.' '.$prenom_p.' </div>'; }else{ $flashalertep = '<div class="alert alert-danger"> Erreur de remplissage des champs !!! Tous les champs sont obligatoires </div>'; } } if (isset($_POST['inscrire_f'])) { //verification si les données du filleuls saisies if (!empty($_POST['nom_f']) AND !empty($_POST['prenom_f']) AND ! empty($_POST['classe_f']) AND !empty($_POST['genre_f']) AND !empty($_POST['numero_f'])) { $nom_f = htmlspecialchars($_POST['nom_f']); $prenom_f = htmlspecialchars($_POST['prenom_f']); $classe_f = htmlspecialchars($_POST['classe_f']); $genre_f = htmlspecialchars($_POST['genre_f']); $numero_f = $_POST['numero_f']; // si oui insertion des données
$key = rand(1, 1000); $requete = $db->prepare(" SELECT * FROM parrain WHERE id_p = ? "); $requete->execute(array($key)); $verifier = 1; while ($verifier == 1) { if ($resultats = $requete->fetch() ) { $verifier = 0; }else{ $key = rand(1, 1000); $requete = $db->prepare(" SELECT * FROM parrain WHERE id_p = ? "); $requete->execute(array($key)); } } $insertion = $db->prepare(" INSERT INTO filleul(id_f, nom_f, prenom_f, classe_f, numero_f, genre_f, cle) VALUES('', ?, ?, ?, ?, ?, ?)"); $insertion->execute(array($nom_f, $prenom_f, $classe_f, $numero_f, $genre_f, $key)); $flashalertef = '<div class="alert alert-success"> Inscription terminée, félicitation filleul '.$nom_f.' '.$prenom_f.' </div>'; }else{ $flashalertef = '<div class="alert alert-danger"> Erreur de remplissage des champs !!! Tous les champs sont obligatoires </div>'; } } ?>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
18 juil. 2019 à 14:57
On s'est mal compris...
Quand je parlais de voir ton code... c'était "APRES" avoir pris en compte la "logique" que je t'avais donné....

Donc, pour que tu comprennes la "logique", tu peux essayer ceci :

<?php
$array_parains = array(1,2,3,5,9,10);

$array_filleuls = array(1,6,65,33,124,564,7789,213,545,88);

$result = array();

//pour chaque parain on associe un filleul
foreach($array_parains as  $P){
  //on prend un filleul au hasard
  if(!empty($array_filleuls)){
    $rnd_key = array_rand($array_filleuls,1);
    $rand_filleul = $array_filleuls[$rnd_key];
    $result[]=array('id_parain'=>$P,'id_filleul'=>$rand_filleul);
    unset($array_filleuls[$rnd_key]);
  }
} 

echo "<pre>";
print_r($result);
echo "</pre>";

echo "<br> Mais il reste des filleuls...";
echo "<pre>";
print_r($array_filleuls);
echo "</pre>";


//maintenant.. si il reste des filleuls à assigner...
if(!empty($array_filleuls)){
  foreach($array_filleuls as $F){
    $rnd_key = array_rand($array_parains,1);
    $result[]=array('id_parain'=>$array_parains[$rnd_key],'id_filleul'=>$F);
  }
}

echo "<hr><br>Le résultat final ";
echo "<pre>";
print_r($result);
echo "</pre>";


A toi de le retranscrire avec les requêtes en Base de données ...

PS: Vu que tu fais du PDO, je t'invite vivement à lire et à appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Et au passage.. ceci également :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code


0
Aok je crois que je comprends maintenant ce dont tu parlais. Donc j'utiliserai votre logique et voit ce que ça donne ensuite
0