2009-12-23 5 views
1

OK J'espère que ce n'est pas trop spécifique. J'ai un CMS piloté par base de données qu'un collègue utilise avec de nombreuses catégories. Voici comment il fait écho à certains produits que nous avons maintenant:Séparer les appels aux données Db dans une boucle foreach

$offers = get_offers('category1','none','compare'); 

    foreach ($offers as $row) { 
    $offername = $row['name']; 
    $offerlogo = $row['logo']; 
    $offera=$row['detailA']; 
    $offerb=$row['detailB']; 
    $offerc=$row['detailC']; 

echo "you can have $offername, it's logo looks like <img src='$offerlogo'>" it's characteristics are $offera, offerb, offerc, etc";} 

Cela fonctionne très bien. Mon problème est que je veux offera, offerb et offerc d'une autre catégorie, catégorie 2. J'ai essayé d'aller comme ceci:

$offers = get_offers('category1','none','compare'); 

    foreach ($offers as $row) { 

    $offername = $row['name']; 
    $offerlogo = $row['logo']; 

$offers = get_offers('category2','none','compare'); 

    $offera=$row['detailA']; 
    $offerb=$row['detailB']; 
    $offerc=$row['detailC']; 

echo "you can have $offername, it's logo looks like <img src='$offerlogo'>" it's characteristics are $offera, offerb, offerc, etc";} 

Mais bien sûr, qui ne fonctionne pas. Je ne veux pas que mon collègue doive passer par le CMS et copier toutes les informations, y a-t-il un moyen de faire ce travail?

+0

Vous devez d'abord une boucle à travers les deux offres et les combiner en quelque sorte. Pouvez-vous poster un exemple de ce que la fonction get_offers renvoie (avec var_dump, pour que les clés soient également visibles) –

+0

Vous ne savez pas exactement ce que vous voulez faire, mais vous surchargez la valeur des offres $ dans votre boucle foreach. – Sampson

+0

Je ne comprends pas la question. La ligne 'offers = get_offers ('category2'' est-elle dans la boucle' foreach'? –

Répondre

0

En supposant que l'ordre des résultats des deux appels à get_offers correspond, je crois que cela pourrait fonctionner pour vous:

$offers['cat1'] = get_offers('category1', 'none', 'compare'); 
$offers['cat2'] = get_offers('category2', 'none', 'compare'); 

$numberOfOffers = count($offers['cat1']); 
for ($i = 0; $i < $numberOfOffers; $i++) 
{ 
    $offername = $offers['cat1'][$i]['name']; 
    $offerlogo = $offers['cat1'][$i]['logo']; 

    $offera = $offers['cat2'][$i]['detailA']; 
    $offerb = $offers['cat2'][$i]['detailB']; 
    $offerc = $offers['cat2'][$i]['detailC']; 

    echo "you can have $offername, its logo looks like <img src='$offerlogo'> its characteristics are $offera, $offerb, $offerc, etc\n"; 
} 
0

Je suis d'accord avec NGM. Si les catégories correspondent alors vous pourriez apporter les résultats des différents appels avec les éléments suivants:

$offersCat1 = get_offers('category1','none','compare'); 
$offersCat2 = get_offers('category2','none','compare'); 
foreach ($offers as $key=>$row) { 
    $offera=$offersCat2[$key]['detailA']; 
    $offerb=$offersCat2[$key]['detailB']; 
    $offerc=$offersCat2[$key]['detailC']; 
    echo "you can have {$row['name']}, it's logo looks like <img src='{$row['logo']}'> it's characteristics are $offera, offerb, offerc, etc"; 
} 

Cet exemple fera la même chose, mais vous le garder dans la boucle foreach. En utilisant la clé $ key => $, vous pouvez accéder à la clé du tableau. J'ai également pris la liberté de faire écho directement à vos variables plutôt que de les mettre dans des variables. Si vous placez {} autour d'une variable de tableau (ou d'une variable de classe), vous pouvez les utiliser dans un écho, imprimer ou < < <. Cela rend ma vie plus facile.

Exemple: echo "This variable {$variable['test']}";

Questions connexes