Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z prawidłowym wyświetlaniem prawdopodobnie błednna pętla :(
Forum PHP.pl > Forum > Przedszkole
FliSs_tCv
Cześć smile.gif Chciałbym poprosić was o pomoc ponieważ już nie wiem co robie źle, chodzi o to że mam koszyk do którego przesyłam dane sesyjnie i to działa wszystko tak mi się wydaje fajnie tongue.gif ale mam problem z wyświetlaniem otóż wygląda to tak że jak wejdę do koszyka zamówień to mam tam jakes 2 dane których nie dodawałem a wyświetlają się ponadto jak dodam jakąś pizze to jedna z tych wartości która jest w koszyku przejmuje ilośc z danego produktu a 2 poprostu jest wyzej niej nie wiem o co może chodzić tak to wygląda bez produktu:



a tak po dodaniu jednego z produktów:



Prosiłbym was naprawde o pomoc sad.gif

kod odpowiedzialny za wyświetlanie:

  1. <?php
  2. foreach ($_SESSION['zakupy'] as $jedzenie => $wartosc){
  3. foreach ($wartosc as $cecha){
  4. echo '<tr>
  5.  <td style="border : 1px solid white; text-align : center;">
  6. '.$cecha['nazwa'].'
  7. </td>
  8.  <td style="border : 1px solid white; text-align : center;">
  9. '.$cecha['ilosc'].'
  10. </td>
  11. <td style="border : 1px solid white; text-align : center;">
  12.  '.przetworz_wielkosc($cecha['wielkosc']).'
  13. </td>
  14. </tr>';
  15. }
  16. }
  17. ?>
Nattfarinn
Na moje oko, nie pętle jest problemem ale dane wejściowe. Tuż przed wyświetleniem zdumpuj zawartość: $_SESSION['zakupy'] i przyjrzyj się jej uważnie.
FliSs_tCv
Otrzymałem to po dodaniu jednej pizzy nic więcej:

  1. <?php
  2. array(2) { ["pizza"]=> array(1) { ["Napoli"]=> array(5) { ["nazwa"]=> string(6) "Napoli" ["ilosc"]=> string(1) "1" ["wielkosc"]=> string(1) "m" ["uwagi"]=> string(0) "" ["dodatki"]=> NULL } } ["dania"]=> array(1) { [""]=> array(2) { ["nazwa"]=> NULL ["ilosc"]=> string(1) "1" } } }
  3. ?>
Nattfarinn
Kod
$_SESSION['zakupy']

array(2)
{
     ["pizza"] =>  array(1)
     {
         ["Napoli"] => array(5)
         {
             ["nazwa"] => string(6) "Napoli"
             ["ilosc"] => string(1) "1"
             ["wielkosc"] => string(1) "m"
             ["uwagi"] => string(0) ""
             ["dodatki"]=> NULL
         }
     }
     ["dania"] => array(1)
     {
         [""] => array(2)
         {
             ["nazwa"] => NULL
             ["ilosc"] => string(1) "1"
         }
     }
}

Z tego dump'u jasno widać powód wystąpienia drugiego z bzdurnych produktów na liście. Powodem są śmieci w $_SESSION["zakupy"]["dania"]. Śmieci nie biorą się zwykle same z siebie, więc polecam prześledzić wcześniejszy kod w poszukiwaniu źródła. Co do pierwszego bzdurnego wpisu, to nie pochodzi on z tej pętli. Podejrzewam, że też coś gdzieś wcześniej generuje tą małą bzdurę. Z tych danych i z tej pętli na pewno to nie pochodzi. Winny jest wcześniejszy kod.

Pozdrawiam!
FliSs_tCv
Po 1 sorka za podbicie posta bylo to nie umyslnie nie zauwazylem czy bylem zalogowany czy wylogowany a pozatym jestem chory wiec nie kontaktuje ale za to sorka.


A co do tego kodu hmm to w czym mogę popełniać błąd w poprzednim kodzie(mam tam plik który dodaje składniki itp)? jako że nie jestem za bardzo obcykany w php i mam pewne trudności ze zrozumieniem tego wszystkiego dużo informacji z czasem na pewno się to zmieni smile.gif
Nattfarinn
Cytat(FliSs_tCv @ 7.10.2007, 22:06:38 ) *
A co do tego kodu hmm to w czym mogę popełniać błąd w poprzednim kodzie(mam tam plik który dodaje składniki itp)?

Jak się kodu nie widzi to ciężko powiedzieć gdzie może leżeć błąd. Mogę Ci dać tylko garść wskazówek gdzie szukać.

Na pewno znajdź miejsce w kodzie gdzie dodajesz produkty, a dokładnie typu "danie". Sprawdź czy przypadkiem z jakiegoś powodu, niezależnie od produktów, czasem nie dodawana jest jakaś wartość (tymczasowe wykomentowanie linii za to odpowiadającej jak najbardziej wskazane).

Ponadto przyjrzyj się miejscu w którym generowana jest tabelka (z systemu szablonów czy jakiegoś innego rozwiązania), i sprawdź czy gdzieś na "sztywno" nie przypisany jest pierwszy wiersz. Jeśli nie jest, przyjrzyj się wywołaniom funkcji przetworz_wielkosc(), bo wtedy ona najprawdopodobniej generuje ten ciąg myślników - więc może po tym wyśledzisz w którym miejscu.

Co my możemy bez kodu poradzić? To o co prosisz jest trochę nie na miejscu. Wyśledzenie takich drobnostek powinno być banalne. Potraktuj to jako pracę domową z PHP i rozwiąż problem sam winksmiley.jpg.

Pozdrawiam!
FliSs_tCv
Na sztywno przekazuje w pliku który odbiera dania i przekazuje dalej z dodatkami czyli
  1. <?php
  2. $przetworz_wielkosc
  3. ?>
a w pliku który przekazuje dane z pizz nie mam nic na sztywno.

Ta zmienna przekazuje te kreseczki ;>
  1. <?php
  2. $przetworz_wielkosc = "-------";
  3. ?>


całość tej funkcji to(znajduje sie ona w koszyku):

  1. <?php
  2. function przetworz_wielkosc($wielkosc){
  3. if(empty($wielkosc)){
  4. $przetworzona_wielkosc = '--------';
  5. }
  6.  else
  7. {
  8.  $przetworzona_wielkosc = ($wielkosc == 'm') ? 'mała' : 'duża';
  9. }
  10. return $przetworzona_wielkosc;
  11. }
  12. ?>
Nattfarinn
Powiedziałem wywołania, nie implementację. winksmiley.jpg

Masz taką ilosć wskazówek że powinieneś znaleźć błąd samodzielnie. Trochę samodzielności. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.