Autor Zpráva
pavlican
Profil
Ahojda, mám tu problém, se kterým si nevim moc rady. Dneska jsem se to snazil vyresit asi 3 hodiny a nikde jsem nenasel uspokojující vysvětletní.

Mám dotaz na databázi:
$dotaz = MySQL_Query(...

přečet jsem si, že $dotaz je vlastně jen odkaz na výsledek z dotazu na databázi

dal pokracuju vypisem:
while (list($pom1,$pom2) = mysql_fetch_row($dotaz)){     
     echo($pom1);
 }

Tohle všechno funguje bezvadně.
Problém nastává ve chvíli, když bych chtěl dotaz znova vypsat stejným kódem.
Už se nic nevypíše, přesto, že
mysql_num_rows($dotaz)
ukazuje stále stejnej výsledek - $dotaz už se nedá znova kompletně vypsat.
Zkoušel jsem i před listováním udělat
$pomdotaz=$dotaz;
a pak vypsat pomocnou proměnnou.
Bohužel se vlastně zkopíruje jen ten odkaz ne výsledek dotazu -> $pomdota, ani $dotaz už nejdou vypsat.

Mám velkou databázi, tak se snažim šetřit dotazama - nechci zbytečně vytvářet novej dotaz.

Nešlo by to nějakým chytrým způsobem vyřešit? Na netu jsem o tomhle problému nenašel ani zmínku(možná jsem hledal špatný klíčový slova).
Zkoušel jsem to i naládovat do dvourozměrnýho pole, ale ani tady jsem nebyl úspěšnej. Vzhledem k tomu, že se znova vytváří zbytečně nová stejně velká proměnná, nemyslim, že by to bylo dobrý řešení.

Určitě s tím už budete mít zkušenosti

Dík za každou radu
P
Anonym
Profil *
Tady tímto kódem jsi vypsal všechny řádky odpovídající dotazu:
while (list($pom1,$pom2) = mysql_fetch_row($dotaz)){     
     echo($pom1);
 }

...a už samozřejmě žádný nezbyl - nemůže se už nic znava vypisovat!

Pro opakované vypisování doporučuji uložit výsledek do nějaké proměnné (třeba do pole vysledekDotazu[]) a pak se k němu dá vracet.
Anonym
Profil *
while (list($pom1,$pom2) = mysql_fetch_row($dotaz)){     
     vysledekDotazu[]=$pom1;
 }
blaaablaaa
Profil
K tomuhle slouzi mysql_ field_ seek, ne?
pavlican
Profil
Díky za radu, nešlo by ukázat i použití toho mysql_ field_ seek?
Z PHP manuálu mi to není jasné.
Díky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0