Sélection dans une base de donnée
Résolu
David987
Messages postés
145
Statut
Membre
-
David987 Messages postés 145 Statut Membre -
David987 Messages postés 145 Statut Membre -
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 windows - Guide
- Gigaset a170h problème base ✓ - Forum telephonie fixe
- Base de données android - Télécharger - Bases de données
- Formules mathématiques de base - Télécharger - Études & Formations
- Gigaset pas de base - Forum telephonie fixe
6 réponses
yg_be
Messages postés
23437
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 588
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
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');
