[RESOLU] Fusionner deux array ?!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Fusionner deux array ?!

Re: Fusionner deux array ?!

par Ryle » 18 août 2014, 17:04

Si tu optes pour la solution SQL, il te suffit simplement de parcourir les résultats de ta requête avec une boucle while() afin d'afficher une ligne <tr> par enregistrement et les valeurs de "categorie" et de "quantite" dans les cellules <td> de ta ligne.

Si tu veux utiliser tes deux tableaux d'origine, au lieu de deux boucles distinctes, il te faut faire une seule et même boucle qui affichera une nouvelle ligne et ira piocher la première valeur dans le premier tableau, puis la première valeur dans le deuxième tableau (puis affichera une nouvelle ligne et ira chercher la seconde valeur dans le premier tableau, puis la seconde valeur dans le deuxième tableau, etc.)

Re: Fusionner deux array ?!

par Thomasfkc » 18 août 2014, 16:50

Merci à vous pour vos réponses, mais je fais comment ensuite pour faire mon tableau à deux colonnes ?

EDIT : C'est bon, j'ai réussi :
	
<?
$categories = array();
$quantites = array();
$result=mysql_query("SELECT categorie,COUNT(*) FROM matable GROUP BY categorie");
while($rows=mysql_fetch_array($result))
	{
	echo '<tr align="center">';
	echo "<td>".$rows['categorie']."</td>";
	echo "<td>".$rows['COUNT(*)']."</td>";
	echo '</tr>';
	}
?>

Re: Fusionner deux array ?!

par toytoy » 18 août 2014, 16:45

Pour fusionner deux tableaux tu peux faire de cette manière.
(Exemple: tu récupères les catégories de ta bdd, puis le client rajoute des quantité dans un tableau "quantité" ??? je sais pas si c'est ce que tu veux en fait)
(pré-req: les quantités sont listés dans l'ordre des vatégorie !)
$categorie = array();   // avec des valeurs dedans
$quantite = array();    // avec des valeurs dedans
$fusion = array(); // tableau vide

foreach ($categorie as $key => $value) {
   $fusion[$value] = $quantite[$key];
}
tu obtiens ainsi une tableau associatif avec en clé la catégorie, qui te ressort la quantité. Sinon il vaut mieux le faire directement via mysql, c'est plus propre et plus correcte comme l'as écrit Yann18 !

Re: Fusionner deux array ?!

par yann18 » 18 août 2014, 16:22

bonjour,

en groupant chaque catégorie avec group by, tu peux alors compter le nombre de catégories identiques:
 $result=mysql_query("SELECT categorie , count(*) as quantite FROM matable group by categorie"); // 

Re: Fusionner deux array ?!

par Thomasfkc » 18 août 2014, 16:10

Pour que vous comprenniez mieux la structure de mes array, voilà comment je les ais construits :
<?
// on initialise les variables
$categories = array();
$quantites = array();

$result=mysql_query("SELECT categorie FROM matable"); // on récupère toutes les catégories

while($rows=mysql_fetch_array($result))
	{
	if (!in_array($rows['categorie'], $categories)) // si c'est la première fois qu'on croise cette catégorie ...
		{ 
		$categories[] = $rows['categorie']; // ... on enregistre le nom de la catégorie dans un tableau
		$quantites[] = 1; // ... on enregistre la quantite dans un tableau
							
		} else { // sinon
							
		$position = array_search($rows['categorie'], $categories); // on trouve où est rangé la catégorie
		$quantites[$position] = $quantites[$position] + 1; // on augmante sa quantité de 1
		}
	}
?>

Fusionner deux array ?!

par Thomasfkc » 18 août 2014, 16:06

Bonjour à tous.
J'essaie d’obtenir un tableau à deux colonnes avec dans chaque colonne les valeurs d'un array, pour afficher toutes les categories qui existent dans ma table sql et leur fréquence d'apparition.
<?
$categories = array('Categorie A', 'Categorie B')
$quantite = array(2, 1)
echo '<tr align="center">';

foreach ($categories as $categorie) :					
	echo "<td>".$categorie."</td>";						
endforeach;
					
foreach ($quantites as $quantite) :
	echo "<td>".$quantite."</td>";						
endforeach;

echo '</tr>';
?>
Le probleme c'est que le résultat ressemble à ça :
Categorie A | Categorie B | 2 | 1
Alors que je cherche à obtenir :
Categorie A | 2
Categorie B | 1
Merci d'avance pour votre aide