Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z prawidłowym wyświetlaniem prawdopodobnie błednna pętla :(
FliSs_tCv
post
Post #1





Grupa: Zarejestrowani
Postów: 198
Pomógł: 3
Dołączył: 27.02.2007
Skąd: Tczew

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


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. ?>


Ten post edytował FliSs_tCv 7.10.2007, 14:44:28


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Nattfarinn
post
Post #2





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


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.


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post
FliSs_tCv
post
Post #3





Grupa: Zarejestrowani
Postów: 198
Pomógł: 3
Dołączył: 27.02.2007
Skąd: Tczew

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


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. ?>


Ten post edytował FliSs_tCv 7.10.2007, 16:37:10


--------------------
Go to the top of the page
+Quote Post
Nattfarinn
post
Post #4





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


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!


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post
FliSs_tCv
post
Post #5





Grupa: Zarejestrowani
Postów: 198
Pomógł: 3
Dołączył: 27.02.2007
Skąd: Tczew

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


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


--------------------
Go to the top of the page
+Quote Post
Nattfarinn
post
Post #6





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


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!


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post
FliSs_tCv
post
Post #7





Grupa: Zarejestrowani
Postów: 198
Pomógł: 3
Dołączył: 27.02.2007
Skąd: Tczew

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


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. ?>


--------------------
Go to the top of the page
+Quote Post
Nattfarinn
post
Post #8





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


Powiedziałem wywołania, nie implementację. winksmiley.jpg

Masz taką ilosć wskazówek że powinieneś znaleźć błąd samodzielnie. Trochę samodzielności. smile.gif


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
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 - 14:54