Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] max();
Forum PHP.pl > Forum > Przedszkole
Sajam
Mam następujący problem...
Dlaczego funkcja max nie działa w tym przykładzie:

  1. <?php
  2. baza_polacz();
  3.  
  4. $w = mysql_query("SELECT * FROM menu");
  5. while ( $r = mysql_fetch_array($w)){
  6. $m = max($r['poz']);
  7. print $m;
  8. }
  9. ?>


Pole poz to pozycja w menu (1, 2, 3, 4, 5...) typ: tinyint.
Hazel
max()" title="Zobacz w manualu PHP" target="_manual
Czytałeś, jakie argumenty ta funkcja przyjmuje?
Sajam
Tak wiem widziałem i co?..
Może napisałbyś co mam źle?
qooxdoo
To, że funkja max() pobiera przynajmniej 2 argumenty a ty za każdym wykonaniem pętli podajesz inny, więc do funkcji przekazujesz tylko jeden argument.
Sajam
Nie no.. druga odpowiedź dobiła mnie jeszcze bardziej blinksmiley.gif
qooxdoo
Najpierw wczytaj wszystkie rekordy 'poz' do tablicy, a potem wywołaj funkcję max() [tylko jeden raz a nie w pętli]
Hazel
Cytat(qooxdoo @ 30.08.2007, 16:55:59 ) *
To, że funkja max() pobiera przynajmniej 2 argumenty

To też nie do końca prawda, max() może pobierać również tablicę... Ale to nieważne, bo w tym przypadku nie pobiera żadnej tablicy, a zmienną, która z każdą iteracją while jest inna, i nie ma szans na zrobienie czegokolwiek... Logiki trochę by się przydało dry.gif
qooxdoo
No to mówię, wczytaj wszystkie rekordy do tablicy. Pętla while będzie ci potrzebna wyłącznie do tego. A wynik wyświetlisz tak:
  1. <?phpecho max($tablica_poz);?>


działający kod:

  1. <?
  2. phpbaza_polacz();
  3. $w = mysql_query("SELECT * FROM menu");
  4. while ( $r = mysql_fetch_array($w)){
  5. $tablica[$i++]=$r['poz']
  6. }
  7. $m = max($tablica);
  8. print $m;?>
drPayton
@qooxdoo:
Działający, ale niepoprawny. Co ma oznaczać:
  1. <?php
  2. $tablica[$i++]
  3. ?>

? Co to za inkrementowanie $i, które nie zostało wcześniej określone?
Poza tym wystarczy:
  1. <?php
  2. $tablica[]
  3. ?>

Zrób
  1. <?php
  2. print_r($tablica);
  3. ?>

i zobacz efekt swojego kodu winksmiley.jpg
qooxdoo
Przepraszam, dopiero zaczynam z PHP. Wydawało mi się, że zmienna $i automatycznie przyjmie typ integer. Ale wystarczy przed pętlą dać $i=0
A skąd interpreter będzie wiedział, jaki wstawić index w wyrażeniu:
Cytat(drPayton @ 31.08.2007, 13:13:00 ) *
Co to za inkrementowanie $i, które nie zostało wcześniej określone?
Poza tym wystarczy:
  1. <?php
  2. $tablica[]
  3. ?>

?
drPayton
Cytat
Ale wystarczy przed pętlą dać $i=0

Otóż to. I dopiero wtedy będzie OK to co napisałeś.
Cytat
A skąd interpreter będzie wiedział, jaki wstawić index w wyrażeniu:
  1. <?php
  2. $tablica[]
  3. ?>

?

Automatycznie przyjmuje indeksowanie numeryczne poczynając od zera, lub od ostatniego indeksu numerycznego jeśli był zadeklarowany wcześniej, tzn:
  1. <?php
  2. $tablica[] = "foo"; // Ten element "przyjmie indeks numeryczny" 0
  3.  
  4. $tablica2 = array(0 => 'foo', 1 => 'bar');
  5. $tablica2[] = "foobar"; // Ten element "przyjmie indeks numeryczny" 2
  6. ?>
qooxdoo
sprytne winksmiley.jpg
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.