Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
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 smile.gif
Ale mam koncepcję smile.gif a to już coś smile.gif
Szczególnie jak na amatora 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ć smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 20:35