Sélection dans une base de donnée
Résolu/Fermé
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
-
2 mai 2020 à 02:05
David987 Messages postés 120 Date d'inscription samedi 19 décembre 2015 Statut Membre Dernière intervention 16 octobre 2022 - 3 mai 2020 à 17:19
David987 Messages postés 120 Date d'inscription samedi 19 décembre 2015 Statut Membre Dernière intervention 16 octobre 2022 - 3 mai 2020 à 17:19
A voir également:
- Sélection dans une base de donnée
- Base de registre - Guide
- Formules excel de base - Guide
- Dans son restaurant, igor utilise une application pour gérer les réservations. dans le schéma (structure) de la base de données de l’application représenté ci-dessous : de quoi « telephone » est-il le nom ? de quoi « reservations » est-il le nom ? associez chaque terme avec un attribut, une donnée, un enregistrement, une table, une valeur ou une variable. - Forum Webmastering
- Formules mathématiques de base - Télécharger - Études & Formations
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
6 réponses
yg_be
Messages postés
23480
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 mars 2025
Ambassadeur
1 568
2 mai 2020 à 09:05
2 mai 2020 à 09:05
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
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
1
2 mai 2020 à 13:35
2 mai 2020 à 13:35
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.
yg_be
Messages postés
23480
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 mars 2025
1 568
2 mai 2020 à 14:02
2 mai 2020 à 14:02
moi je ferais des tirages indépendants pour chaque type d'objet: tirer 15 A, 6 B, ...
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
1
Modifié le 2 mai 2020 à 20:46
Modifié le 2 mai 2020 à 20:46
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 ?
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
1
2 mai 2020 à 20:53
2 mai 2020 à 20:53
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
1
2 mai 2020 à 21:34
2 mai 2020 à 21:34
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.
yg_be
Messages postés
23480
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 mars 2025
1 568
2 mai 2020 à 22:11
2 mai 2020 à 22:11
la première chose à faire et de sortir du if tout ce qui est identique dans les différents cas.
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
1
>
yg_be
Messages postés
23480
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 mars 2025
2 mai 2020 à 22:54
2 mai 2020 à 22:54
e suis d'accord avec toi mais par exemple le niveau ou le sexe doit être calculer à chaque tours du while par exemple tous comme la caractéristique chromatique.
yg_be
Messages postés
23480
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 mars 2025
1 568
>
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
3 mai 2020 à 09:58
3 mai 2020 à 09:58
ce qui ne nécessite pas de l'avoir dans chaque condition du if. tu peux le mettre entre la fin du if et la fin du while.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
1
Modifié le 3 mai 2020 à 16:50
Modifié le 3 mai 2020 à 16:50
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');
yg_be
Messages postés
23480
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 mars 2025
1 568
3 mai 2020 à 17:13
3 mai 2020 à 17:13
il serait plus clair d'inverser le test des lignes 3 à 5, pour éviter le else.
l'instruction fetch peut sortir du if.
l'instruction query peux aussi sortir du if, il suffit de mémoriser le taux.
l'instruction fetch peut sortir du if.
l'instruction query peux aussi sortir du if, il suffit de mémoriser le taux.
David987
Messages postés
120
Date d'inscription
samedi 19 décembre 2015
Statut
Membre
Dernière intervention
16 octobre 2022
1
3 mai 2020 à 17:19
3 mai 2020 à 17:19
D'accord, merci beaucoup pour ton aide.