Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]mysql_fetch_array; brak adresu?
Forum PHP.pl > Forum > Przedszkole
lesz735
Po użyciu komend:
$result = mysql_query ("SELECT osoba, konkurs, zawodnik_powtarza, konkurs_kolejnosc FROM
zawody LIMIT 0,3", $connection);
while ($row = mysql_fetch_array($result, MYSQL_NUM))
print_r ($row);

dostaję taki ekran:
Array ( [0] => Stefan Kowalski [1] => K1 [2] => 0 [3] => 25 ) Array ( [0] => Janina Twarda [1] => K1 [2] => 0 [3] => 444 ) Array ( [0] => Klementyna Niska [1] => K1 [2] => 0 [3] => 555 )

Chcę przypisać do zmiennej liczbę 555 i nie wiem jak to adresować. $x=questionmark.gifquestionmark.gif?
Dla tablicy wielowymiarowej to byłoby chyba:
$x=$row [3] [3];
ale tu array=0 dla każdego wiersza.
Rysh
Jeśli się gubisz w tym co wyświetla Ci na ekranie to dawaj to sobie w <PRE> </PRE>.
Masz array 0 dla każdego wiersza, bo czytasz tablicę wyżej wiersz po wierszu (while).
Pokazuje Ci cały czas array 0, ale w rzeczywistości jest to:
  1. $data[0][0] = 'Stefan Kowalski';
  2. $data[1][0] = 'Janina Twarda';
  3. $data[2][0] = 'Klementyna Niska';
  4. $data[2][3] = 555;


Przypisz sobie, wynik do zmiennej i dostaniesz dane w takiej formie jak powyżej:
  1. $result = mysql_query ("SELECT osoba, konkurs, zawodnik_powtarza, konkurs_kolejnosc FROM zawody LIMIT 0,3", $connection);
  2. $data = mysql_fetch_array($result, MYSQL_NUM);
  3. echo '<pre>';
  4. print_r($data);
  5. echo '</pre>';
lesz735
To chyba nie jest tak jak piszesz.
Sekwencja:
$result = mysql_query ("SELECT osoba, konkurs, zawodnik_powtarza, konkurs_kolejnosc FROM
zawody LIMIT 0, 3", $connection);
while ($row = mysql_fetch_array($result, MYSQL_NUM))
$x=$row[0] [0] ;
$t=$x;
print "$t";

wyświetla K i prawdopodobnie jest to pierwsza litera ostatniego wiersza "Klementyna Niska"
Kishin
Nie za bardzo wiem co chcesz osiągnąc ale tutaj :
  1. $result = mysql_query ("SELECT osoba, konkurs, zawodnik_powtarza, konkurs_kolejnosc FROM
  2. zawody LIMIT 0,3", $connection);
  3. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  4. print_r ($row);

niczego nigdzie nie przypisujesz, a jedynie wypisujesz na ekran.

tutaj natomiast:
  1. $result = mysql_query ("SELECT osoba, konkurs, zawodnik_powtarza, konkurs_kolejnosc FROM
  2. zawody LIMIT 0, 3", $connection);
  3. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  4. $x=$row[0] [0] ;
  5. $t=$x;
  6. print "$t";

przypisujesz do $x zawsze pierwszą litere pierwszego elementu danego wiersza z tablicy, juz pomijam fakt ze nie wiadomo czemu ma służyć przypisanie wartości x do t a dopiero później wypisanie na ekran.

Jezeli chcesz sobie utworzyc jakąs sensowną tablice to spróbuj takiej pętli

  1. $result = mysql_query ("SELECT osoba, konkurs, zawodnik_powtarza, konkurs_kolejnosc FROM
  2. zawody LIMIT 0, 3", $connection);
  3.  
  4. $i=0;
  5. while ( $row = mysql_fetch_array($result, MYSQL_NUM)){
  6. $x[$i][0]=$row[0];
  7. $x[$i][1]=$row[1];
  8. $x[$i][2]=$row[2];
  9. $x[$i][3]=$row[3];
  10. $i++;
  11. }
  12. echo '<pre>';
  13. print_r ($x);
  14. echo '</pre>';


będzie to dokładna kopia tablicy $row, także ewentualnych zmian których potrzebujesz dokonaj już sam w pętli
lesz735
Ta pętla od Ciebie działa; dzięki za pomoc;

czy jednak nie ma standardowej funkcji która od razu tworzy tablicę?

Rezultat:
Array ( [0] => Array ( [0] => Stefan Kowalski [1] => K1 [2] => 0 [3] => 25 ) [1] => Array ( [0] => Janina Twarda [1] => K1 [2] => 0 [3] => 444 ) [2] => Array ( [0] => Klementyna Niska [1] => K1 [2] => 0 [3] => 555 ) )

Dzięki.
Kishin
ta funkcja tworzy taką tablice:

  1. $row = mysql_fetch_array($result, MYSQL_NUM)


Tak jak pisałem wcześniej, to co utworzyliśmy w $x to dokładna kopia $row także jeżeli chcesz dokładnie taką forme jak wypisałeś to cała pętla niema żadnego sensu, wystarczy korzystac z tablicy $row smile.gif
Rysh
Cytat(Kishin @ 26.01.2015, 21:51:24 ) *
ta funkcja tworzy taką tablice:
  1. $row = mysql_fetch_array($result, MYSQL_NUM)

Cytat(Rysh @ 26.01.2015, 17:21:49 ) *
  1. $result = mysql_query ("SELECT osoba, konkurs, zawodnik_powtarza, konkurs_kolejnosc FROM zawody LIMIT 0,3", $connection);
  2. $data = mysql_fetch_array($result, MYSQL_NUM);
  3. echo '<pre>';
  4. print_r($data);
  5. echo '</pre>';

Pisałem mu to samo wcześniej, ale chyba nawet nie potrafi sprawdzić tego co mu się daje.
lesz735
To jest do Kishin

Ja tu czegoś nie rozumiem; przeczytaj mój pierwszy wpis; tam nie ma adresów!! U ciebie adresy dostałem i po wpisaniu

$t=$x [2] [3];
print($t);

dostaję 555 czyli wpis z trzeciego rekordu czwartego pola a po zastosowaniu samej funkcji bez Twojej pętli to nie było możliwe.

Cytat(Rysh @ 26.01.2015, 22:02:01 ) *
Pisałem mu to samo wcześniej, ale chyba nawet nie potrafi sprawdzić tego co mu się daje.


Ja Ci odpisałem że to Twoje nie chodzi. To co zaproponowałeś to to samo co ja napisałem na początku; z tego nie potrafię wyciągnąć danych do programu to mogę tylko pooglądać na ekranie.
Kishin
jeżeli chcesz korzystać z tablicy tworzonej przez funckje to wystarczy Ci cos takiego

  1. while($row[]= mysql_fetch_array($result, MYSQL_NUM))
lesz735
W takim razie proszę podaj co dalej bo
$t=$row [2] [3]
powinno dać liczbę 555 a tak nie jest.
Kishin
I będzie tyle dawać, u Ciebie nie działało bo nie tworzyłeś tablicy dwuwymiarowej z $row tylko dopisywałeś do niego zawsze elementy z ostatniego wiersza.

skopiuj dokładnie to co Ci napisałem i wypróbuj, zobaczysz że bedzie ok 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.