Michał Sosnowski

Michał Sosnowski grafik/webmaster

Temat: mysql_fetch_assoc() i zwracanie tablicy

Mam taki problem..:

Na samym początku skryptu przypisuje wynik zapytania do zmiennej np.:

$wynik = mysql_query("TRESC zapytania") or die(mysql_error());

następnie wyciągam dane pętlą while :

while($r = mysql_fetch_assoc($wynik)) {}

Wszystko ładnie pięknie dane się wyświetlają.. problem zaczyna się w momencie jak w tym samym pliku poniżej chce jeszcze raz wyświetlić te dane odwołując się do raz zdefiniowanej zmiennej $wynik

while($r = mysql_fetch_assoc($wynik)) {}

Dane się nie wyświetlają jakby wcześniej to zapytanie po wykorzystaniu zostało wymazane ;/Michał Sosnowski edytował(a) ten post dnia 07.11.11 o godzinie 15:04
Piotr Jarolewski

Piotr Jarolewski Software Engineer at
Grupa Allegro

Temat: mysql_fetch_assoc() i zwracanie tablicy

Mała rada, nie korzystaj z tych funkcji, teraz się stosuje ładnie PDO :)

http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO

konto usunięte

Temat: mysql_fetch_assoc() i zwracanie tablicy

http://pl.php.net/manual/en/function.mysql-data-seek.php

Zapewne jednak lepszym rozwiązaniem byłoby umieścić wyniki w zmiennej PHP i potem tylko iterowac po zmiennej.
Tomasz Zadora

Tomasz Zadora programuję

Temat: mysql_fetch_assoc() i zwracanie tablicy

Jeżeli nie jest to duża ilość rekordów, to wrzuć ją do tablicy i możesz dwukrotnie iterować, albo zrób wypełnienie tablicy w pierwszej iteracji.


$rows = array();
while($r = mysql_fetch_assoc($wynik))
{
array_push($rows,$r);
}


Możesz też zrobić sobie jakiś obiekt-wrapper do bazy danych jeżeli takie operacje chcesz przeprowadzać częściej.

Następnie iterujesz po tablicy, np. tak:


foreach ($rows as &$row)
{

}


PS. To czy PDO czy native driver to można się kłócić, zależy co się chce osiągnąć.Tomasz Zadora edytował(a) ten post dnia 07.11.11 o godzinie 16:03
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: mysql_fetch_assoc() i zwracanie tablicy

Michał Sosnowski:
Na samym początku skryptu przypisuje wynik zapytania do zmiennej np.:

$wynik = mysql_query("TRESC zapytania") or die(mysql_error());

następnie wyciągam dane pętlą while :
while($r = mysql_fetch_assoc($wynik)) {}

Wszystko ładnie pięknie dane się wyświetlają.. problem zaczyna się w momencie jak w tym samym pliku poniżej chce jeszcze raz wyświetlić te dane odwołując się do raz zdefiniowanej zmiennej $wynik

while($r = mysql_fetch_assoc($wynik)) {}

Dane się nie wyświetlają jakby wcześniej to zapytanie po wykorzystaniu zostało wymazane ;/
Musisz zresetować wewnętrzny wskaźnik, przenieść go z powrotem na pierwszy wiersz. Wiersze są indeksowane od 0. Użyj funkcji mysql_data_seek i wstaw:
mysql_data_seek($wynik, 0);
pomiędzy pierwszą a drugą petlą:
while($r = mysql_fetch_assoc($wynik)) {}
mysql_data_seek($wynik, 0);
while($r = mysql_fetch_assoc($wynik)) {}
lub przebuduj Twój kod i użyj dodatkowej zmiennej, w której będziesz trzymał wyniki pracy pierwszej pętli, a w drugiej pętli będziesz używał tej zmiennej zamiast mysql_fetch_assoc($wynik). Krzysztof N. edytował(a) ten post dnia 08.11.11 o godzinie 11:09
Michał Sosnowski

Michał Sosnowski grafik/webmaster

Temat: mysql_fetch_assoc() i zwracanie tablicy

OK dzięki działa ;)
Tomasz Zadora

Tomasz Zadora programuję

Temat: mysql_fetch_assoc() i zwracanie tablicy

Sposób podany przez Krzysztofa generalnie lepszy, ja czasem stosuje tablicę po to aby np. rezultat sobie skeszować, więc z rozpędu taki podałem ;-)
Michał Sosnowski

Michał Sosnowski grafik/webmaster

Temat: mysql_fetch_assoc() i zwracanie tablicy

Nie wykluczone że go wykorzystam.. dzięki za wszystkie odpowiedzi ;)
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: mysql_fetch_assoc() i zwracanie tablicy

Michał Sosnowski:
Nie wykluczone że go wykorzystam.. dzięki za wszystkie odpowiedzi ;)
Nie ma sprawy :)
Wojciech K.

Wojciech K. realizator pomysłów
własnych

Temat: mysql_fetch_assoc() i zwracanie tablicy

Michał Sosnowski:
$wynik = mysql_query("TRESC zapytania") or die(mysql_error());
następnie wyciągam dane pętlą while :
while($r = mysql_fetch_assoc($wynik)) {}
jeszcze raz wyświetlić te dane odwołując się do raz zdefiniowanej zmiennej $wynik
while($r = mysql_fetch_assoc($wynik)) {}

pobierz te dane tylko raz do tablicy
np. while ($r = mysql_fetch_assoc($wynik)) $tablica[]=$r;

i potem odwołuj się do tablicy, ile dusza zapragnie.
lepiej pobrać raz, niż dwukrotnie zmuszać PHP do wykonywania tej samej pracy

Następna dyskusja:

Konwersja tablicy wyniku my...




Wyślij zaproszenie do