Combiner tables php [Résolu]

Messages postés
9
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
16 mars 2017
- - Dernière réponse : adika0123
Messages postés
9
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
16 mars 2017
- 16 mars 2017 à 01:18
Bonjour,
j ai des tabes avec le format des noms
d1s1-d1s2-d2s1-d2s2
avec le meme nombre des valeurs pour l ensemble des tables
comment je peux faire pour combiner les tables afin d obtenir ces resultats

d1s1 avec d2s1
d1s1 avec d2s2
d1s2 avec d2s1
d1s2 avec d2s2

ex
d1s1(1,2,3,4)
d1s2(6,7,8,9)
d2s1(10,11,12,13)
d2s2(14,15,16,17)

resultats
d1s1 avec d2s1
1-10
2-11
3-12
4-13

d1s1 avec d2s2
1-14
2-15
3-16
4-17

d1s2 avec d2s1
6-10
7-11
8-12
9-13

d1s2 avec d2s2

6-14
7-15
8-16
9-17

les tabes sont statiques ou sont recupe depuis une base de donnees,

Merci d avance
Afficher la suite 

1 réponse

Messages postés
26537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 octobre 2019
316
0
Merci
Bonjour,

Quand tu dis "table" ... je suppose qu'en réalité tu veux parler d' ARRAY .....

Donc la réponse à ta question c'est .... avec des boucles ...

 <?php
//affichage des erreurs php si il y en a
error_reporting(E_ALL);
ini_set('display-errors','on');

/**
* Petite fonction de debug
*/
function debug($var,$title=""){
 echo '<br><b>'.$title.'</b><pre>';
 print_r($var);
 echo '</pre><br>';
}


$arr1 = array();
$arr1['d1s1'] = array(1,2,3,4);
$arr1['d1s2'] = array(6,7,8,9);

$arr2 = array();
$arr2['d2s1'] = array(10,11,12,13);
$arr2['d2s2'] = array(14,15,16,17);

$result = array();
foreach($arr1 as $k1=>$v1){
  foreach($arr2 as $k2=>$v2){
    foreach($v1 as $i=>$num1){
      $result[$k1.'-'.$k2][] = $num1 .'-'. $v2[$i];
    }
     
  }
}

debug($result);

?>


ce qui donne :

Array
(
[d1s1-d2s1] => Array
(
[0] => 1-10
[1] => 2-11
[2] => 3-12
[3] => 4-13
)

[d1s1-d2s2] => Array
(
[0] => 1-14
[1] => 2-15
[2] => 3-16
[3] => 4-17
)

[d1s2-d2s1] => Array
(
[0] => 6-10
[1] => 7-11
[2] => 8-12
[3] => 9-13
)

[d1s2-d2s2] => Array
(
[0] => 6-14
[1] => 7-15
[2] => 8-16
[3] => 9-17
)

)



adika0123
Messages postés
9
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
16 mars 2017
-
bonjour ,
merci pour votre réponse et pour cette solution
je teste avec mon code et je vous tiens informe
merci encore
adika0123
Messages postés
9
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
16 mars 2017
-
est ce qu il ya une possibilite de mettre chaque array sur html pour etre lisibl ainsi pour que je puisse ajouter d autres colonnes a chaque table pour faire qlq operation (+,-,*,/)

ex
d1s2-d2s2

6 | 14 | 20
7 | 15 | 21
8 | 16 | 24
9 | 17 | 26

merci
jordane45
Messages postés
26537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 octobre 2019
316 > adika0123
Messages postés
9
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
16 mars 2017
-
Oui ... tout est possible.... suffit de le rajouter dans le code.
jordane45
Messages postés
26537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 octobre 2019
316 > jordane45
Messages postés
26537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 octobre 2019
-

$arr1 = array();
$arr1['d1s1'] = array(1,2,3,4);
$arr1['d1s2'] = array(6,7,8,9);

$arr2 = array();
$arr2['d2s1'] = array(10,11,12,13);
$arr2['d2s2'] = array(14,15,16,17);

$result = array();
foreach($arr1 as $k1=>$v1){
  foreach($arr2 as $k2=>$v2){
    foreach($v1 as $i=>$num1){
      $num2 = $v2[$i];
      $result[$k1.'-'.$k2][] = array($num1 .'-'. $num2 , ($num1+$num2) , ($num1-$num2),($num1*$num2),($num1/$num2) );
    }
     
  }
}

// Affichage en html :
foreach($result as $KEY=>$R){
 echo "<span><h2>".$KEY."</h2></span>";
 echo "<table style='border:1px solid black; border-collapse: collapse;'>";
   echo "<tr><th>combinaison</th><th>+</th><th>-</th><th>*</th><th>/</th></tr>";
   foreach($R as $k=>$val ){
    echo "<tr>";
    foreach($val as $col){
     echo "<td style='border:1px solid black; min-width:50px;' align='center'>$col</td>";
    }
    echo "</tr>"; 
  }
 
 echo "</table>";
}
adika0123
Messages postés
9
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
16 mars 2017
> jordane45
Messages postés
26537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 octobre 2019
-
merci beaucoup pour la solution
Commenter la réponse de jordane45