PHP - MySQL
Résolu
hakim_fth
Messages postés
157
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
11 réponses
-
Bonjour
Tu peux t'inspirer de ceci
https://codes-sources.commentcamarche.net/source/100161-php-liste-des-combinaisons-possibles-somme
.
-
Bonsoir,
Merci beaucoup Jordane,
C'est presque la même chose sauf que je n'ai malheureusement pas pu l'adapter :(-
Et bien... Qu'as tu essayé ?
Si tu ne nous montres pas ton code... Impossible pour nous de t'aider à le corriger..
Nb: pour poster ton code sur le forum, tu devras utiliser les balises de code.
Explications à lire entièrement, disponibles ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
-
-
Voici ce que j'ai pu trouver. Dans mon cas je n'ai pas besoin de la somme, je n'ai besoin que des combinison, j'ai essayé toute la nuit mais rien :(
<html> <head><title> Combinaisons </title> <body> <?php //Exemple sur le tableau suivant : $arr = array('A', 'B','C','D'); // compte le nombre d'éléménts $n = count($arr); // Tableau de sortie contenant les combinaisons possibles $sortie = array(); // Liste des combinaisons : for($i=2;$i<=2;$i++) { lstcombinaison(",",$arr,$i); } // Calcul des sommes de chaque combinaison $tbl_liste_somme=sommeTbl($sortie); //-------------------------------------------------------------// // AFFICHAGE DU RESULTAT // //-------------------------------------------------------------// echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'> <tr><th>Ville de départ</th><th>Ville d'arrivée </th> </tr>"; for ($l=0;$l<count($tbl_liste_somme);$l++){ echo "<tr>"; Echo "<td>".$tbl_liste_somme[$l]['combinaison']."</td><td></td>"; echo "</tr>"; } echo "</table>"; //-------------------------------------------------------------// // FONCTIONS // //-------------------------------------------------------------// function lstcombinaison($debut,$tags,$profondeur) { // Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm // global $sortie; if($profondeur == 0) { array_push($sortie,$debut); return; } $n = count($tags); for($i=0;$i<$n;$i++) { lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); } } function Factorielle($number){ $retour = 1; if ($number>1) { $retour = Factorielle($number-1); } return $number*$retour; } function sommeTbl($arr){ // Calcule la somme de chaque combinaison $n = count($arr); $tbl_somme = array(); for($i=0;$i<$n;$i++) { //Combinaison $tbl_somme[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); //Somme $explode_val=explode(",",$arr[$i]); $sum = array_sum($explode_val); $tbl_somme[$i]['somme'] = $sum; } return $tbl_somme; } ?> </body> </html>-
<!Doctype html> <html> <head> <title> Combinaisons </title> <meta charset="utf-8"> </head> <body> <?php //Exemple sur le tableau suivant : $arr = array('A', 'B','C','D'); // compte le nombre d'éléménts $n = count($arr); // Tableau de sortie contenant les combinaisons possibles $sortie = array(); // Liste des combinaisons : for($i=2;$i<=2;$i++) { lstcombinaison(",",$arr,$i); } // Calcul des sommes de chaque combinaison $tbl_liste_somme=getTbl($sortie); //-------------------------------------------------------------// // AFFICHAGE DU RESULTAT // //-------------------------------------------------------------// echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'> <tr><th>Ville de départ</th><th>Ville d'arrivée </th> </tr>"; for ($l=0;$l<count($tbl_liste_somme);$l++){ $combi = explode(',',$tbl_liste_somme[$l]['combinaison']); echo "<tr>"; foreach($combi as $C){ echo "<td>".$C."</td>"; } echo "</tr>"; } echo "</table>"; //-------------------------------------------------------------// // FONCTIONS // //-------------------------------------------------------------// function lstcombinaison($debut,$tags,$profondeur) { // Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm // global $sortie; if($profondeur == 0) { array_push($sortie,$debut); return; } $n = count($tags); for($i=0;$i<$n;$i++) { lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); } } function Factorielle($number){ $retour = 1; if ($number>1) { $retour = Factorielle($number-1); } return $number*$retour; } function getTbl($arr){ // Calcule la somme de chaque combinaison $n = count($arr); $tbl_res = array(); for($i=0;$i<$n;$i++) { //Combinaison $tbl_res[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); } return $tbl_res; } ?> </body> </html>
-
-
ça marche très bien, merci Jordane
Je ne sais pas si j'aurai la possibilité de mettre le résultat (Ville de départ) et (Ville d'arrivée) dans le value d'un input text comme ce que j'ai fait sur l'exemple ci-dessous, mais je veux que chaque input text aura son propre name
<!Doctype html>
<html>
<head>
<title> Combinaisons </title>
<meta charset="utf-8">
</head>
<body>
<?php
//Exemple sur le tableau suivant :
$arr = array('A', 'B','C','D');
// compte le nombre d'éléménts
$n = count($arr);
// Tableau de sortie contenant les combinaisons possibles
$sortie = array();
// Liste des combinaisons :
for($i=2;$i<=2;$i++) {
lstcombinaison(",",$arr,$i);
}
// Calcul des sommes de chaque combinaison
$tbl_liste_somme=getTbl($sortie);
//-------------------------------------------------------------//
// AFFICHAGE DU RESULTAT //
//-------------------------------------------------------------//
echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'>
<tr><th>Ville de départ</th><th>Ville d'arrivée </th>
</tr>";
for ($l=0;$l<count($tbl_liste_somme);$l++){
$combi = explode(',',$tbl_liste_somme[$l]['combinaison']);
echo "<tr>";
foreach($combi as $C){
echo "<td><input name='depart[]' type='text' value='".$C."'/></td>";
}
echo "</tr>";
}
echo "</table>";
//-------------------------------------------------------------//
// FONCTIONS //
//-------------------------------------------------------------//
function lstcombinaison($debut,$tags,$profondeur) {
// Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm //
global $sortie;
if($profondeur == 0) {
array_push($sortie,$debut);
return;
}
$n = count($tags);
for($i=0;$i<$n;$i++) {
lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1);
}
}
function Factorielle($number){
$retour = 1;
if ($number>1) {
$retour = Factorielle($number-1);
}
return $number*$retour;
}
function getTbl($arr){
// Calcule la somme de chaque combinaison
$n = count($arr);
$tbl_res = array();
for($i=0;$i<$n;$i++) {
//Combinaison
$tbl_res[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1);
}
return $tbl_res;
}
?>
</body>
</html>-
Tu sais que tu n'as que deux données dans l'array $combi
donc au lieu de faire une boucleforeach($combi as $C){ echo "<td><input name='depart[]' type='text' value='".$C."'/></td>"; }
, tu peux traiter chaque items de l'array séparémentecho "<td><input name='depart[]' type='text' value='".$combi[0]."'/></td>"; echo "<td><input name='arrivee[]' type='text' value='".$combi[1]."'/></td>";
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Oui, c'est résolu une fois la boucle est supprimée.
Je te remercie infiniment Jordane45 pour ton aide et support habituels.
Je marque comme résolu :)
Voici le code que j'ai utilisé
<!Doctype html> <html> <head> <title> Combinaisons </title> <meta charset="utf-8"> </head> <body> <?php //Exemple sur le tableau suivant : $arr = array('A', 'B','C','D'); // compte le nombre d'éléménts $n = count($arr); // Tableau de sortie contenant les combinaisons possibles $sortie = array(); // Liste des combinaisons : for($i=2;$i<=2;$i++) { lstcombinaison(",",$arr,$i); } // Calcul des sommes de chaque combinaison $tbl_liste_somme=getTbl($sortie); //-------------------------------------------------------------// // AFFICHAGE DU RESULTAT // //-------------------------------------------------------------// echo "<table border=0 cellpading=0 cellspacing=0 collapse='collapse'> <tr><th>Ville de départ</th><th>Ville d'arrivée </th> </tr>"; for ($l=0;$l<count($tbl_liste_somme);$l++){ $combi = explode(',',$tbl_liste_somme[$l]['combinaison']); echo "<tr>"; echo "<td><input name='depart[]' type='text' value='".$combi[0]."'/></td>"; echo "<td><input name='arrivee[]' type='text' value='".$combi[1]."'/></td>"; echo "</tr>"; } echo "</table>"; //-------------------------------------------------------------// // FONCTIONS // //-------------------------------------------------------------// function lstcombinaison($debut,$tags,$profondeur) { // Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm // global $sortie; if($profondeur == 0) { array_push($sortie,$debut); return; } $n = count($tags); for($i=0;$i<$n;$i++) { lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); } } function Factorielle($number){ $retour = 1; if ($number>1) { $retour = Factorielle($number-1); } return $number*$retour; } function getTbl($arr){ // Calcule la somme de chaque combinaison $n = count($arr); $tbl_res = array(); for($i=0;$i<$n;$i++) { //Combinaison $tbl_res[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); } return $tbl_res; } ?> </body> </html> -
Bonjour,
Y-a-t il s'il vous plait la possibilité de remplir le array dynamiquement depuis une base de données SQL avec le moteur PDO ? -
Bonjour,
Y-a-t il s'il vous plait la possibilité de remplir le array('A','B','C','D') dynamiquement depuis une de données SQL avec le moteur PDO ? -
Les valeurs: A,B,C,D sont stockés sur une table nommée Ville. Je veux les récupérer depuis la table en utilisant PDO et PHP pour avoir: array('A','B','C','D')
-
Malheureusement ça n'a pas marché, voici ce que j'ai fait
Requête SQLfunction Combinaisons(){ $cnx = Connexion(); $req=$cnx->prepare ("SELECT * FROM villes"); $req->execute(); return $req->fetchAll(); }
Code PHP<?php foreach(Combinaisons() as $C) { $A = $C['ville'].","; } $arr = array($A); // compte le nombre d'éléménts $n = count($arr); . . . ?> -