Compter les occurances d'un array d'arrays

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 : Compter les occurances d'un array d'arrays

Re: Compter les occurances d'un array d'arrays

par RL-Flo » 28 mai 2014, 15:54

Salut

Pour ton premier problème.

$d_paniers_actif[] = $res_p3['ref_prod'];
Avec sa tu aurais le tableau dont tu as besoin.

Ensuite je me demande si tu ne pas avoir ta solution en sql directement.

Peux tu en dire plus sur ce que tu veux faire et d'où vienne les données ?
On peux sûrement t'aider dans ce sens.
Je pense a un select count(1) as nb, ref_prod from table group by ref_prod where ....


@+
Bonjour, merci pour ta réponse.
Pour le première problème, oui tu as raison, ton code est juste.
Mon problème est donc résolu, mais je garde le sujet ouvert au cas ou tu puisse m'aiguiller sur le SQL

Pour le select count, j'avais cherché dans cette direction, mais mon problème était :
Je dois faire un count sur la table detail_panier, qui est lié à la table panier par un ID.
Mais, je ne dois compter que sur les detail_panier qui sont lié à la table ID ou le critère panier_actif est a 2 !

(je suis préssé , dites moi si je suis aps clair du tout, j'éditerai ce post cesoir)

Re: Compter les occurances d'un array d'arrays

par sirakawa » 28 mai 2014, 13:54

Une suggestion de c=valeur générale:
Quand une variabke ne fait poas ce qu'on croit, il faut la faire afficher:
while ($res_p3=mysql_fetch_row($query_p3)){
print "<br>";var_dump($res_p3);
               $d_paniers_actif[] = $res_p3;
           }

Re: Compter les occurances d'un array d'arrays

par moogli » 27 mai 2014, 22:45

Salut

Pour ton premier problème.

$d_paniers_actif[] = $res_p3['ref_prod'];
Avec sa tu aurais le tableau dont tu as besoin.

Ensuite je me demande si tu ne pas avoir ta solution en sql directement.

Peux tu en dire plus sur ce que tu veux faire et d'où vienne les données ?
On peux sûrement t'aider dans ce sens.
Je pense a un select count(1) as nb, ref_prod from table group by ref_prod where ....


@+

Re: Compter les occurances d'un array d'arrays

par telnes » 27 mai 2014, 13:24

hello

$res_p3 est un tableau , autant pour moi . il faut que tu fasse un $res_p3['???'] avec le l'index qui va bien. tu peux faire un print_r($res_p3) pour voir les index. ca doit etre du genre $res_p3[0] ou $res_p3['ref_panier']

pour le foreach (http://www.php.net/manual/fr/control-st ... oreach.php) c'est super pratique
$montab = array("a",'b','c','d','e');

foreach($montab as $key=>$value){

    echo "l'index de mon tableau est $key et la valeur est $value";
}
l'index de mon tableau est 0 et la valeur est a
l'index de mon tableau est 1 et la valeur est b
l'index de mon tableau est 2 et la valeur est c
l'index de mon tableau est 3 et la valeur est d
l'index de mon tableau est 4 et la valeur est e
pas besoin de count, de for et de $i ;)

Re: Compter les occurances d'un array d'arrays

par RL-Flo » 27 mai 2014, 12:09

foreach($paniers_actif as $panier1)
J'ai un peu de mal à compendre quesque la variable $panier.
Cela me reprends le contenu de $paniers_actif pour le mettre dans un nouveau tableau?

Sinon, ton code me renvoie l'erreur Warning: Illegal offset type pour la ligne
if(!isset($d_paniers_actif[$res_p3])){ //pas définis on créer
$d_paniers_actif[$res_p3] = 1;
}


je te remerci pour la recommandation du for, je ne ferai plus mes requête SQL ainsi désormais.

Re: Compter les occurances d'un array d'arrays

par telnes » 27 mai 2014, 11:44

hello


test un truc du genre

 if(isset($paniers_actif)){
    //for ($i=0; $i<count($paniers_actif); $i++){ //c'est mal de mettre une fonction dans un for (exécuté à chaque iteration)
      foreach($paniers_actif as $panier){ //pour chaque paniers_actif

      $id_panier = $panier[id_panier];    
      $sql_p3 = 'SELECT ref_prod FROM detail_panier where ref_panier = "'.$id_panier.'" ' ;

          $query_p3=mysql_query($sql_p3);
          while ($res_p3=mysql_fetch_row($query_p3)){

              if(!isset($d_paniers_actif[$res_p3]){ //pas définis on créer
                     $d_paniers_actif[$res_p3] = 1;
               }
               else{ //sinon on incrémente
                     $d_paniers_actif[$res_p3] = $d_paniers_actif[$res_p3] +1;
                }
          } 
 }


++

Compter les occurances d'un array d'arrays

par RL-Flo » 27 mai 2014, 11:35

Bonjour tout le monde !

Je vous expose mon problème :

Je souhaite récupéré un tableau (voir une ligne) d'ID.
 if(isset($paniers_actif)){
    for ($i=0; $i<count($paniers_actif); $i++){

      $id_panier = $paniers_actif[$i][id_panier];    
      $sql_p3 = 'SELECT ref_prod FROM detail_panier where ref_panier = "'.$id_panier.'" ' ;

          $query_p3=mysql_query($sql_p3);
          while ($res_p3=mysql_fetch_row($query_p3)){
              $d_paniers_actif[] = $res_p3;
          } 
 }

Ce code ne produit pas ce que je cherche à faire, il me retourne

Code : Tout sélectionner

array(4221) { [0]=> array(1) { [0]=> string(5) "21782" } [1]=> array(1) { [0]=> string(5) "21738" } [2]=> array(1) { [0]=> string(5) "22087" } [3]=> array(1) { [0]=> string(5) "21799" } [4]=> array(1) { [0]=> string(5) "21941" } [5]=> array(1) { [0]=> string(3) "347" } [6]=> array(1) { [0]=> string(5) "21910" } [7]=> array(1) { [0]=> string(3) "980" }
( et je souhaiterai quelque chose de type [0]=> string(5) "21782" , [1]=> string(5) "21738", [2]=> string(5) "22087", [4]=> string(5) "21799" ect...
ou bien de type : 21782,21738,22087,21799 )
Pouvez vous m'aider sur ce premier point?


Mais, si je recupere cette liste d'ID, c'est pour pouvoir afficher quels ID on retrouve le plus dans cette liste.
Exemple :
(
[22087] => 2
[21738] => 1
[21799] => 1
)
Je voulais utiliser la fonction array_count_values, mais évidament, vu que j'ai mal défini mon tableau, il me renvoie l'erreur :

Warning: array_count_values() [function.array-count-values]: Can only count STRING and INTEGER values! in /******/********/www/php/pCompte_*****.php on line 240

Malgré mes recherches google, je reste bloqué.
C'est ma première demande sur un forum d'entraide, pardonnez mes erreur de mise en forme ou autres.
Cordialement, Florian