Sélection dans une base de donnée
Résolu
David987
Messages postés
120
Date d'inscription
Statut
Membre
Dernière intervention
-
David987 Messages postés 120 Date d'inscription Statut Membre Dernière intervention -
David987 Messages postés 120 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerai votre aide afin de m'aider à réaliser une sélection dans ma bdd en fonction de certains paramètres.
Je vais nommer 5 Objets : A, B, C, D et E.
- Je souhaiterai que ces 5 Objets soit entrés en bdd (je sais faire, aucun souci).
- Je souhaiterai qu'une fonction php sélectionne, disons, 30 Objets en tous en prenant en compte ce quota : 50% de A, 20% de B, 15% de C, 10% de D et 5% de E.
- Insérer le résultat de sélection des 30 Objets dans une autre table (je sais faire avec une boucle while).
pouvez-vous m'aiguiller sur la marche à suivre s'ils vous plait ?
Merci par avance.
J'aimerai votre aide afin de m'aider à réaliser une sélection dans ma bdd en fonction de certains paramètres.
Je vais nommer 5 Objets : A, B, C, D et E.
- Je souhaiterai que ces 5 Objets soit entrés en bdd (je sais faire, aucun souci).
- Je souhaiterai qu'une fonction php sélectionne, disons, 30 Objets en tous en prenant en compte ce quota : 50% de A, 20% de B, 15% de C, 10% de D et 5% de E.
- Insérer le résultat de sélection des 30 Objets dans une autre table (je sais faire avec une boucle while).
pouvez-vous m'aiguiller sur la marche à suivre s'ils vous plait ?
Merci par avance.
A voir également:
- Sélection dans une base de donnée
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Exemple base de données access à télécharger gratuit - Forum Access
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
- Formules excel de base - Guide
6 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
as-tu essayé la solution décrite ici: https://forums.commentcamarche.net/forum/affich-35722340-taux-en-php
as-tu essayé la solution décrite ici: https://forums.commentcamarche.net/forum/affich-35722340-taux-en-php
Oui mais ce n'est pas bon.
et j'ai perdu mon fichier.
En faite je souhaite que le tirage se fasse en fonction du taux de chaque objet.
et j'ai perdu mon fichier.
En faite je souhaite que le tirage se fasse en fonction du taux de chaque objet.
J'ai ça pour le moment :
Comment adapter ce code pour sélectionner en fonction du taux que je souhaite ?
//Enregistrement de 30 pokemon dans une table pour affichage au joueur $nbr_poke = 0 ; while( $nbr_poke < 30) { $poke_affich_joueur = $bdd->query("SELECT * FROM selec_poke ORDER BY RAND()LIMIT 30"); $poke_entrer = $poke_affich_joueur->fetch(); $randChromatique = rand(1,50); $niveau = rand(13,17); $sexe = rand(1,2); if ($sexe == 1) { $sexe2 = 'Male'; }elseif ($sexe == 2) { $sexe2 = 'Femelle'; } else { $sexe = 'Inconnu'; } if($randChromatique == 1) { $Chromatique = "chromatique"; } else { $Chromatique = ""; } $insert_poke_capture = $bdd->exec("INSERT INTO herbe (`no_poke`, `nom`, `lvl`, `sexe`, `chroma`) VALUES('".$poke_entrer['no_poke']."', '".$poke_entrer['nom']."', '".$niveau."', '".$sexe2."', '".$Chromatique."')"); $nbr_poke++; } header('location:test_affiche.php');
Comment adapter ce code pour sélectionner en fonction du taux que je souhaite ?
Alors voila, en suivant tes conseils je suis parvenu à faire ça :
Cela fonctionne parfaitement avec ce que je cherche par contre j'aimerais savoir si vous pouviez m'aiguillez sur le fait de simplifier ce code ?
Merci par avance.
//Enregistrement de 30 pokemon dans une table pour affichage au joueur $nbr_poke = 0 ; while( $nbr_poke < 30) { $taux_poke = rand(1,100); if ($taux_poke <= 50) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "1"'); $poke_entrer = $poke_affich_joueur->fetch(); $randChromatique = rand(1,15); $niveau = rand(12,18); $sexe = rand(1,2); if ($sexe == 1) { $sexe2 = 'Male'; }elseif ($sexe == 2) { $sexe2 = 'Femelle'; } else { $sexe = 'Inconnu'; } if($randChromatique == 1) { $Chromatique = "chromatique"; } else { $Chromatique = ""; } } elseif (($taux_poke >= 51) && ($taux_poke <=70)) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "2"'); $poke_entrer = $poke_affich_joueur->fetch(); $randChromatique = rand(1,15); $niveau = rand(9,14); $sexe = rand(1,2); if ($sexe == 1) { $sexe2 = 'Male'; }elseif ($sexe == 2) { $sexe2 = 'Femelle'; } else { $sexe = 'Inconnu'; } if($randChromatique == 1) { $Chromatique = "chromatique"; } else { $Chromatique = ""; } } elseif (($taux_poke >= 71) && ($taux_poke <=85)) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "3"'); $poke_entrer = $poke_affich_joueur->fetch(); $randChromatique = rand(1,15); $niveau = rand(5,11); $sexe = rand(1,2); if ($sexe == 1) { $sexe2 = 'Male'; }elseif ($sexe == 2) { $sexe2 = 'Femelle'; } else { $sexe = 'Inconnu'; } if($randChromatique == 1) { $Chromatique = "chromatique"; } else { $Chromatique = ""; } } elseif (($taux_poke >= 86) && ($taux_poke <=95)) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "4"'); $poke_entrer = $poke_affich_joueur->fetch(); $randChromatique = rand(1,15); $niveau = rand(3,8); $sexe = rand(1,2); if ($sexe == 1) { $sexe2 = 'Male'; }elseif ($sexe == 2) { $sexe2 = 'Femelle'; } else { $sexe = 'Inconnu'; } if($randChromatique == 1) { $Chromatique = "chromatique"; } else { $Chromatique = ""; } } else { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "5"'); $poke_entrer = $poke_affich_joueur->fetch(); $randChromatique = rand(1,15); $niveau = rand(1,5); $sexe = rand(1,2); if ($sexe == 1) { $sexe2 = 'Male'; }elseif ($sexe == 2) { $sexe2 = 'Femelle'; } else { $sexe = 'Inconnu'; } if($randChromatique == 1) { $Chromatique = "chromatique"; } else { $Chromatique = ""; } } $insert_poke_capture = $bdd->exec("INSERT INTO herbe (`no_poke`, `nom`, `lvl`, `sexe`, `chroma`) VALUES('".$poke_entrer['no_poke']."', '".$poke_entrer['nom']."', '".$niveau."', '".$sexe2."', '".$Chromatique."')"); $nbr_poke++; } header('location:test_affiche.php');
Cela fonctionne parfaitement avec ce que je cherche par contre j'aimerais savoir si vous pouviez m'aiguillez sur le fait de simplifier ce code ?
Merci par avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ah oui je comprend je vais faire ça.
Tu vois autre chose pour améliorer et réduire le code ?
Voici ce que j'ai fais pour le moment :
Tu vois autre chose pour améliorer et réduire le code ?
Voici ce que j'ai fais pour le moment :
$select_time_actu = $bdd->query("SELECT * FROM temps_actu WHERE time")->fetch(); $time_derniere_actu = $select_time_actu['time']; if(time() - $time_derniere_actu < 10) {} else { //Enregistrement de 30 pokemon dans une table pour affichage au joueur + update du temps de l'actu $update_time_actu = $bdd-> exec("UPDATE temps_actu SET time = '".time()."'"); $vider_table = $bdd->exec("TRUNCATE herbe"); $map = "Nazaris"; $nbr_poke = 0 ; while( $nbr_poke < 30) { $taux_poke = rand(1,100); $sexe = rand(1,2); if ($sexe == 1) { $sexe2 = 'Male'; }elseif ($sexe == 2) { $sexe2 = 'Femelle'; } else { $sexe = 'Inconnu'; } if($randChromatique == 1) { $Chromatique = "chromatique"; } else { $Chromatique = ""; } $randChromatique = $chance_chroma; if ($taux_poke <= 50) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "1" && map="'.$map.'"'); $poke_entrer = $poke_affich_joueur->fetch(); $niveau = rand(12,18); } elseif (($taux_poke >= 51) && ($taux_poke <=70)) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "2" AND map="'.$map.'"'); $poke_entrer = $poke_affich_joueur->fetch(); $niveau = rand(9,14); } elseif (($taux_poke >= 71) && ($taux_poke <=85)) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "3" AND map="'.$map.'"'); $poke_entrer = $poke_affich_joueur->fetch(); $niveau = rand(5,11); } elseif (($taux_poke >= 86) && ($taux_poke <=95)) { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "4" AND map="'.$map.'"'); $poke_entrer = $poke_affich_joueur->fetch(); $niveau = rand(3,8); } else { $poke_affich_joueur = $bdd->query('SELECT * FROM selec_poke WHERE taux = "5" AND map="'.$map.'"'); $poke_entrer = $poke_affich_joueur->fetch(); $niveau = rand(1,5); } $insert_poke_capture = $bdd->exec("INSERT INTO herbe (`no_poke`, `nom`, `lvl`, `sexe`, `chroma`, `map`) VALUES('".$poke_entrer['no_poke']."', '".$poke_entrer['nom']."', '".$niveau."', '".$sexe2."', '".$Chromatique."', '".$map."')"); $insert_poke_capture_archive = $bdd->exec("INSERT INTO archive_herbe (`no_poke`, `nom`, `lvl`, `sexe`, `chroma`, `map`) VALUES('".$poke_entrer['no_poke']."', '".$poke_entrer['nom']."', '".$niveau."', '".$sexe2."', '".$Chromatique."', '".$map."')"); $nbr_poke++; } } header('location:test_affiche.php');