Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]mysql_fetch_array
Forum PHP.pl > Forum > PHP
bikerszymek
Mam problem z funkcja mysql_fetch_array(), chce wyciagnac unikalne dane i pozniej zapisac je w tablicy i nie wiem czy dobrze to robie:

CODE
$zapytanie_1 = "select DISTINCT album from katalog";
$dane_1 = mysql_query($zapytanie_1);
$ile_1 = mysql_num_rows($dane_1);
$array_1 = mysql_fetch_array($dane_1);


chcac wyswitlic drugi (sa narazie dwa elementy unikane $ile_1=2) element o indeksie 1 nic nie wyrzuca.
CODE
echo $array_1[1];


Jezeli ktos wie co zle robie i maja jakis pomysl na rozwiazanie to prosze o rady.
Exek
http://pl2.php.net/mysql_fetch_array
bikerszymek
Cytat(Exek @ 10.09.2008, 21:19:46 ) *


nie pisalbym tutaj gdybym nie przeczytal manuala, pytam czy ktos wie gdzie jest blad
Exek
Zatem nie przeczytałeś dokładnie:

hint:
- manual mówi: Zapisuje wiersz wyniku w tablicy asocjacyjnej.
- tablice indeksuje się od 0

bikerszymek
wiec w jaki sposob zapisac do tablicy kolumne wynikow?

ps. wiem ze indeksuje sie od zera, element pierwszy o indeksie 0 jest wyswitlany normalnie.
Exek
weź mnie nie załamuj, przykład z manuala:

Kod
  <?php
mysql_connect('localhost', 'uzytkownik', 'haslo') or
     die('Nie można się połączyć: ' . mysql_error());
mysql_select_db('baza');

$result = mysql_query("SELECT id, nazwa FROM tabela");

// PATRZ NA TE LINIJKI
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
     printf ("ID: %s  Nazwa: %s", $row[0], $row[1]);  
}
mysql_free_result($result);
?>
bikerszymek
Nie wiem co zle robie ale wyrzuca mi w nieskonczonosc pierwszy wiersz i nie wchodzi do petli for...

to kod
CODE
$zapytanie_1 = "select DISTINCT album from katalog";
$dane_1 = mysql_query($zapytanie_1) or die('1');
$ile_1 = mysql_num_rows($dane_1) or die('2');
$array_1 = mysql_fetch_array($dane_1, MYSQL_BOTH) or die('3');

while($array_1)
{
echo $array_1["album"];
$zap = $array_1["album"];
$zapytanie_2 = "select nazwa from foto WHERE id ='$zap'";
$dane_2 = mysql_query($zapytanie_2) or die('4');
$ile_2 = mysql_num_rows($dane_2) or die('5');
$array_2 = mysql_fetch_array($dane_2) or die('6');

for ($b=0; $b >= $ile_2; $b++)
{
echo "link";
}
}


edit: Proszę o zamkniecie. Problem rozwiązany.
Exek
1.

Twoje:
Kod
$array_1 = mysql_fetch_array($dane_1, MYSQL_BOTH) or die('3');
while($array_1)


Nie jest równe:
Kod
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

to co robi to while to przypisanie wyniku do zmiennej $row. Jeśli mamy rezultat to $row jest typu Array co po rzutowaniu na boolean daje true. Skoro jest true to while się wykonuje. Po zakończeniu warunek jest od nowa sprawdzany czyli de facto jest znowu cos (lub nie) do $row przypisane.

2.
Poczytaj o MySQL a dokładniej o JOIN


3.
Heh, powiedz co chcesz osiagnac tym?
for ($b=0; $b >= $ile_2; $b++)

hint:
zastanów się jaką wartość ma $b a jaką $ile_2 na starcie w tym przypadku...
bikerszymek
chwile wczesniej przypadkiem wpadlem na to co napisales, jezeli chodzi o for to zaminilem go na takiego samego while tylko z innym zapytaniem i jest juz taka jak byc powinno. dzieki za pomoc:)
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.