Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ponowne wyniki z zapytania
Forum PHP.pl > Forum > Przedszkole
dreamweb
Witam

Chcialbym wiedziec, czy w ogole jest mozliwe zwrocenie kilka razy wynikow z tego samego zapytania do bazy

czyli np.


[php:1:db314bd1c1]

$www=mysql_query("SELECT * FROM tabela");
while ($ww=mysql_fetch_array($www))
{
//kod programu
}

//i teraz ponownie to samo, bez zadawania ponownie tego samego zapytania
while($ww=mysql_fetch_array($www))
{
//jakis inny kod programu
}
[/php:1:db314bd1c1]

Czy jest to w ogole mozliwe??
Liko
Oczywiście, Jeżeli nie zmienisz wartości zmiennej WWW to powinno być dobrze i działać. Jeżeli natomiast zmienisz wartość zmiennej to już nie.
dreamweb
Witam

wlasnie o to chodzi, ze nie jest dobrze.

Zaraz po wykonaniu while-a, wartosci z $www znikaja (tak jak shift w tablicach)
Liko
Hmm. To mozesz przeciez przekazać do innej zmiennej ? np.
[php:1:fa8136267a]<?php
$www=mysql_query("SELECT * FROM tabela");
$ww2 = $www;
while ($ww=mysql_fetch_array($www))
{
//kod programu
}

//i teraz ponownie to samo, bez zadawania ponownie tego samego zapytania
while($ww=mysql_fetch_array($ww2))
{
//jakis inny kod programu
}

?>[/php:1:fa8136267a]

Możę zadziała bo nie mam okazji sprawdzić.
cboot
Nic z tych rzeczy. Nie możesz używać [manual:55a4d42088]mysql_fetch_array[/manual:55a4d42088]. Jeśli chcesz wielokrotnie użyć tego samego wyniku, to musisz skorzystać z [manual:55a4d42088]mysql_data_seek[/manual:55a4d42088] i [manual:55a4d42088]mysql_fetch_row[/manual:55a4d42088]:
[php:1:55a4d42088]<?php
$www = mysql_query("SELECT * FROM tabela");
$ilosc_wierszy = mysql_num_rows( $www );
for ($i = 0; $i < $ilosc_wierszy; $i++)
{
mysql_data_seek( $www, $i );
$wynik_1[] = mysql_fetch_row( $www );
}
for ($i = 0; $i < $ilosc_wierszy; $i++)
{
mysql_data_seek( $www, $i );
$wynik_2[] = mysql_fetch_row( $www );
}
?>[/php:1:55a4d42088]
EDIT: A właściwie prościej:
[php:1:55a4d42088]<?php
$www = mysql_query("SELECT * FROM tabela");
while ( $wynik_1[] = mysql_fetch_row( $www ) )
{
// operacje różne
}
mysql_data_seek( $www, 0 );
while ( $wynik_2[] = mysql_fetch_row( $www ) )
{
// operacje różne
}
?>[/php:1:55a4d42088]
dreamweb
Witam

Dzieki. Wlasnie o cos takiego mi chodzilo.
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.