Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pętla foreach w pętlli foreach.
php__amator
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

Ostrzeżenie: (10%)
X----


Witajcie przedszkolacy,

Ostatnimi czasy napotykam na problemy z którymi próbuję sobie poradzić. I teoretycznie powinienem, ponieważ bawię się w to już kilka miesięcy ...
a po takim czasie nawet kowadło by się już nauczyło.
Ja jednak chyba jeszcze nie. ale do rzeczy.
Otóż mam taki skrypt:
  1. <?php foreach ($products as $product) { ?>
  2.  
  3. <tr>
  4. <?php if($invpicav2==1){ ?> <td width="50"><?php $imageproduct1 = base64_encode(file_get_contents($product['thumb'])); ?><img src="data:image/png;base64,<?php echo $imageproduct1;?>" alt=""><td><?php echo $product['name']; ?> <?php } else { ?>
  5. <td><?php echo $product['name']; ?> <?php } ?>
  6.  
  7.  
  8.  
  9. <?php foreach ($product['option'] as $option) { ?>
  10.  
  11. <br />
  12.  
  13. &nbsp;<small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?> <?php echo $option['sku']; $code .= $option['sku'];?></small>
  14.  
  15. <?php }
  16.  
  17. $ccode = ($product['sku'].$code);
  18.  
  19. ?></td>
  20.  
  21. <!-- <td><?php echo $product['model']; ?></td> -->
  22.  
  23. <?php if($inv_skuca2==1){ ?> <td><?php echo $product['sku']; ?></td> <?php } ?>
  24.  
  25. <td align="right"><?php echo $product['quantity']; ?></td>
  26.  
  27. <td align="right"><?php echo $product['price']; ?></td>
  28.  
  29. <td align="right"><?php echo $product['total']; ?></td>
  30.  
  31. </tr>
  32.  
  33. <?php } ?>
  34.  
  35. <?php foreach ($vouchers as $voucher) { ?>
  36.  
  37. <tr>
  38. <td align="center"></td>
  39. <td align="center"><?php echo $voucher['description']; ?></td>
  40. <td align="center"></td>
  41.  
  42. <td align="center"></td>
  43.  
  44. <td align="center">1</td>
  45. <td align="center"><?php echo $voucher['amount']; ?></td>
  46. <td align="center"><?php echo $voucher['amount']; ?></td>
  47. </tr>
  48.  
  49.  
  50. <?php } ?>
  51.  
  52. <?php foreach ($totals as $total) { ?>
  53.  
  54. <tr>
  55.  
  56. <?php if($invpicav2==1 && $inv_skuca2==1){ ?> <td align="right" colspan="6"> <?php } else {
  57. if($invpicav2==1 && $inv_skuca2==0) {?> <td align="right" colspan="5"> <?php } else {
  58. if($invpicav2==0 && $inv_skuca2==1) {?> <td align="right" colspan="5"> <?php } else {
  59. if($invpicav2==0 && $inv_skuca2==0) {?> <td align="right" colspan="4"> <?php } } } } ?>
  60.  
  61. <b><?php echo $total['title']; ?>:</b></td>
  62.  
  63. <td align="right"><?php echo $total['text']; ?>

i jak dotąd wszystko "gites".
Nieco niżej mam dalszą część:
  1. <div class="break"></div>
  2. <?php
  3. $PNG_TEMP_DIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'temp'.DIRECTORY_SEPARATOR;
  4. $PNG_WEB_DIR = '../store/qrcode/temp/';
  5. include ('../store/qrcode/qrlib.php');
  6. if (!file_exists($PNG_TEMP_DIR))
  7. mkdir($PNG_TEMP_DIR);
  8. $filename = $PNG_TEMP_DIR.$ccode.'.png';
  9. $errorCorrectionLevel = 'H';
  10. if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], array('L','M','Q','H')))
  11. $errorCorrectionLevel = $_REQUEST['level'];
  12. $matrixPointSize = 1;
  13. if (isset($_REQUEST['size']))
  14. $matrixPointSize = min(max((int)$_REQUEST['size'], 1), 5);
  15. if (isset($_REQUEST['data'])) {
  16. if (trim($_REQUEST['data']) == '')
  17. die('data cannot be empty!');
  18. $filename = $PNG_TEMP_DIR.$ccode.md5($_REQUEST['data'].'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
  19. QRcode::png($_REQUEST['data'], $filename, 'H', 5, 1);
  20. } else {
  21. QRcode::png($ccode, $filename, 'H', 5, 1);
  22. }
  23. ?>
  24. <table width="454">
  25. <tr>
  26. <td width="100" rowspan="10" align="center" border="1">
  27. <img src="http://www.gngcomputers.com/store/catalog/view/theme/default/template/mail/temp/<?php echo $ccode;?>.png">
  28. </td>
  29. <td align="center" width="500">
  30. <h1>ORDER DETAILS</h1>
  31. </td>
  32. </tr>
  33. <tr>
  34. <td>Order number <?php echo $order_id;?>
  35.  
  36. </td>
  37. </tr>
  38. <td><h5>Item specification</h5>
  39. </td>
  40. </tr>
  41. <?php
  42.  
  43.  
  44. foreach ($product['option'] as $option) { ?>
  45.  
  46. <tr><td>
  47.  
  48. <small>- <?php echo $option['name']; ?>: <?php echo $option['value']; ?> <?php echo $option['sku'];?></small></td><td><small><?php $code .= $option['sku'];?><?php } ?></small></td></tr>
  49.  
  50.  
  51.  
  52. <tr>
  53. <td>
  54. <?php echo $product['name']; ?>
  55. </td>
  56. </tr>
  57. </table>

I dotąd też wszystko jest ok ale ... no właśnie jeśli w tablicy jest/są dane dotyczące jednego produktu działa jak złoto, natomiast jeśli w tablicy znajduje się więcej niż jeden produkt(dane dla kilku) dopstaję tylko te dotyczące ostatniego.

Domyślam się, że żeby wygenerowało mi dane dla wszystkich po kolei muszę dodać kolejną pętlę foreach ale nie bardzo wiem jak się do tego zabrać. Kiedyś przerabiałem taki przykład generujący z 3 składowych wszystkie możliwe zestawy.


Czy dobrą idę drogą ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
czychacz
post
Post #2





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Ostatnie
  1. <?php echo $product['name']; ?>
jest poza pętlą.
Go to the top of the page
+Quote Post
php__amator
post
Post #3





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

Ostrzeżenie: (10%)
X----


Cytat(czychacz @ 20.10.2014, 13:18:45 ) *
Ostatnie
  1. <?php echo $product['name']; ?>
jest poza pętlą.

Hej czychaczu,
owszem ale to akurat nie ma znaczenia bo z tej zmiennej tylko jest podpis pod kodem(obrazkiem)

Dzisiaj trochę posiedziałem i chyba wiem jak rozwiązać problem, chociaż do tej pory tego nie zrobiłem (IMG:style_emoticons/default/smile.gif)
Ale mam koncepcję (IMG:style_emoticons/default/smile.gif) a to już coś (IMG:style_emoticons/default/smile.gif)
Szczególnie jak na amatora (IMG:style_emoticons/default/smile.gif)
Ale wracając do tematu.

Wcześniej o tym nie pomyśłałem ale wydaje mi się, że mogę poprostu powielić fragment w którym pierwsza pętla foreach generuje tablkę i na bazie tego samego kodu zrobić kolejną ale już z danymi które są potrzebne (pozostałe wywalić) i dodać elementy takie jak np QRcode itd.
Muszę to przetestować (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:49