Annonce

Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

mistic100
2014-02-25 10:59:11

ya des jours comme ça :-)

Miklfe
2014-02-24 14:11:48

J'étais vraiment barré à l'autre bout du monde, complètement à coté de mes pompes
Un grand merci à toi

mistic100
2014-02-24 14:05:21

hmm pas compris grand chose à ton code

voila comment je fais

Code:

$result = pwg_query($query);
$products = array();

while ($row = pwg_db_fetch_assoc($result))
{
  if (!isset($products[ $row['product_id'] ]))
  {
    $products[ $row['product_id'] ] = array(
      'product_id' => $row['product_id'],
      'price' => $row['price'],
      'product' => $row['product'],
      'options' => array(),
      );
  }
  
  if (!isset($products[ $row['product_id'] ]['options'][ $row['id'] ]))
  {
    $products[ $row['product_id'] ]['options'][ $row['id'] ] = array(
      'opt_id' => $row['id'],
      'name' => $row['name'],
      'values' => array(),
      );
  }
  
  $products[ $row['product_id'] ]['options'][ $row['id'] ]['values'][] = $row['val'];
}

une seule boucle

Miklfe
2014-02-24 13:57:40

en fait j'arrive à le faire au premier niveau  (product_id)

Code:

    $result = pwg_query($query);
     while($row = pwg_db_fetch_assoc($result)){
 $prods[] = $row;
 }
$rprod ="";
   foreach ($prods as $p) {
      if($p['product_id'] != $rprod){
      if(isset($option)){
        $sub[]=$product;
        $sub[]=$price;
        
        $sub[]=$option;
        $prod[$rprod]=$sub;
      }
      $rprod = $p['product_id'] ;
      $option= array();
      $opt= array();
      $opt['option_id']= $p['id'];
      $opt['name']= $p['name'];
      $opt[]= $p['val'];
      $option[]= $opt;
      
      $product = $p['product'];
      $price = $p['price'];
      
        
    }else{
      $opt = array();
      $opt['option_id']= $p['id'];
      $opt['name']= $p['name'];
      $opt[]= $p['val'];
      $option[]= $opt;

    }
}
    $sub=array();
    $sub[]=$product;
    $sub[]=$price;
    $sub[]=$option;
    $prod[$rprod]=$sub;

il me sort

132 => Array (3)
    0 => "a2"
    1 => "10"
    2 => Array (6)
      0 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "noir"
      1 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "blanc"
      2 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "bleu"
      3 => Array (3)
        option_id => "60"
        name => "cadre"
        0 => "oui"
      4 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "rouge"
      5 => Array (3)
        option_id => "60"
        name => "cadre"
        0 => "non"
  129 => Array (3)
    0 => "a1"
    1 => "1"
    2 => Array (6)
      0 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "noir"
      1 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "blanc"
      2 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "bleu"
      3 => Array (3)
        option_id => "60"
        name => "cadre"
        0 => "oui"
      4 => Array (3)
        option_id => "61"
        name => "couleur"
        0 => "rouge"
      5 => Array (3)
        option_id => "60"
        name => "cadre"
        0 => "non"

mais s'il faut que je refasse 2 fois ce foreach sur le résultat autant passer les requêtes dans les boucles

k5
2014-02-24 13:50:50

bonjour,
en concatenant peut etre ?

Cordialement
k5

mistic100
2014-02-24 13:50:39

Salut

il n'y a rien de magique, il te faut un second tableau que tu peuple en fesant un for sur ton premier tableau

et il faut bien sur que ton tableau de sortie soit indéxé par product_id

ça sera en O(n) et tu ne pourra pas avoir plus rapide

Miklfe
2014-02-24 13:46:38

Salut
est-ce que quelqu'un aurait une solution pour transformer ce tableau

Array ( [product_id] => 132 [price] => 10 [product] => a2 [id] => 61 [name] => couleur [opt_id] => 61 [val] => noir )
Array ( [product_id] => 132 [price] => 10 [product] => a2 [id] => 61 [name] => couleur [opt_id] => 61 [val] => blanc )
Array ( [product_id] => 132 [price] => 10 [product] => a2 [id] => 61 [name] => couleur [opt_id] => 61 [val] => bleu )
Array ( [product_id] => 132 [price] => 10 [product] => a2 [id] => 60 [name] => cadre [opt_id] => 60 [val] => oui )
Array ( [product_id] => 132 [price] => 10 [product] => a2 [id] => 61 [name] => couleur [opt_id] => 61 [val] => rouge )
Array ( [product_id] => 132 [price] => 10 [product] => a2 [id] => 60 [name] => cadre [opt_id] => 60 [val] => non )
Array ( [product_id] => 129 [price] => 1 [product] => a1 [id] => 61 [name] => couleur [opt_id] => 61 [val] => noir )
Array ( [product_id] => 129 [price] => 1 [product] => a1 [id] => 61 [name] => couleur [opt_id] => 61 [val] => blanc )
Array ( [product_id] => 129 [price] => 1 [product] => a1 [id] => 61 [name] => couleur [opt_id] => 61 [val] => bleu )
Array ( [product_id] => 129 [price] => 1 [product] => a1 [id] => 60 [name] => cadre [opt_id] => 60 [val] => oui )
Array ( [product_id] => 129 [price] => 1 [product] => a1 [id] => 61 [name] => couleur [opt_id] => 61 [val] => rouge )
Array ( [product_id] => 129 [price] => 1 [product] => a1 [id] => 60 [name] => cadre [opt_id] => 60 [val] => non )

en celui-ci

[0]=array(
    product_id=132
    price=10
    product=a2
    [0]=array(
        opt_id=61
        name=couleur
        [0]= array(
            noir
            bleu
            rouge
            blanc       
        )
    [1]= array(
        opt_id=60
        name=cadre
        [0]= array(
            oui
            non
        )
    )
)
[1]=array(
    product_id=129
    product=a1
    price=1
    [0]=array(
        opt_id=61
        name=couleur
        [0]= array(
            noir
            bleu
            rouge
            blanc       
        )
    [1]= array(
        opt_id=60
        name=cadre
        [0]= array(
            oui
            non
        )
    )
)

Il y a bien la solution d'obtenir le tableau directement en passants mes requètes dans les boucles while mais c'est pas conseillé.
Merci
Merci

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact