Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapamiętanie wartości po wyjściu z pętli
Forum PHP.pl > Forum > Przedszkole
kunegunda
A więc tak mam taką oto pętle foreach:

  1. foreach($koszyk as $klucz => $wartosc)
  2. {
  3. $nazwa=mysql_query("SELECT nazwa FROM sklep WHERE id = '".$klucz."'");
  4. $nazwa=mysql_fetch_row($nazwa);
  5. $n=$nazwa[0];
  6. echo $n;
  7. }


Pętla wyświetla mi produkty z koszyka. Co mam zrobić aby po wyjściu z pętli, zmienna $n wyświetlała mi wszystkie wartości (tak jak w pętli) a nie tylko ostatni element tablicy?
qrzysztof
W pętli musiałoby być:

  1. $n[]=$nazwa[0];

(składuje wszystkie elementy w tablicy)

Potem, poza pętlą do wyświetlenia albo następna pętla, albo print_r
kunegunda
Cytat(qrzysztof @ 23.02.2010, 17:24:48 ) *
W pętli musiałoby być:

  1. $n[]=$nazwa[0];

(składuje wszystkie elementy w tablicy)

Potem, poza pętlą do wyświetlenia albo następna pętla, albo print_r


Dzięki działa, tylko print_r wyświetla mi coś takiego:

  1. Array ( [0] => Jaśmin nagokwiatowy [1] => Skimmia japońska [2] => Sośnica japońska )


Dało by się to wyświetlić w normalny sposób tzn. tak :

  1. Jaśmin nagokwiatowy Skimmia japońska Sośnica japońska


bez używania kolejnej pętli?

qrzysztof
Print_r zawsze wyświetli to w takiej formie. Można to tylko ładniej sformatować, umieszczając między <pre></pre> czyli np:

  1. echo '<pre>;
  2. print_r....
  3. echo '</pre>';


Ale skoro to ma być wyjście dla klienta, to domyślam się, że odpada. Pozostaje wtedy albo pętla albo zamiast zrzucania wszystkiego do tablicy, można zrzucać do jednej zmiennej (choć to chyba mniej eleganckie):
oddzielone spacją:

  1. $n.=$nazwa[0].' ';


albo złamaniem wiersza:

  1. $n.=$nazwa[0].'<br /> ';
bemol
A może po prostu lepiej jest jednym zapytaniem pobrać wszystkie interesujące nas rekordy i później tylko jedną pętlą wyświetlić zawartość?
czym jest klucz i w jaki sposób są otrzymywane wartości klucza?
kunegunda
Dzięki za wskazówki. Mam jeszcze jeden mały problem. Po wpisaniu takiego kodu:

  1. foreach($koszyk as $klucz => $wartosc)
  2. {
  3. $f[]=$wartosc[0];
  4. }
  5. echo $f[0];
  6. echo $f[1];
  7. echo $f[2];
  8. echo $f[3];
  9. echo $f[4];


Skrypt wyświetlił liczby: 4,4,1,9
A w tablicy jest kolejno: 4,45,1,99

Dlaczego druga liczba jest niewyświetlana? Da się coś z tym zrobić ( w prosty sposób ) ?
bemol
bo
  1. $wartosc[0];

w tym momencie zmienna wartość jest typu string. Użycie na końcu indeksu ([x]) znaczy, że ma wyświetlić z ciągu znaków, znak na pozycji x.
W twoim przypadku wyświetla bo dałeś [0].
przypisz po prostu $wartość.

Poza tym nie lepiej tak:
  1. foreach($koszyk as $klucz => $wartosc) {
  2. echo $wartosc;
  3. }
kunegunda
bemol, dzięki wielkei za pomoc po wpisaniu samej $wartosc skrypt działa tak jak powinien.
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.