Autor | Zpráva | ||
---|---|---|---|
Tomyc Profil * |
#1 · Zasláno: 18. 12. 2009, 13:33:55
Zdravím,
když načtu z tabulky databáze data dle určitého výběru do pole je možné nějak pohybovat ukazatelem? O co mi jde. V těch vybraných datech se nachází jeden údaj který potřebuju najít. Řeším to pomocí cyklu while který probíhá dokud jsou v poli nějaká data a nebo dokud nenarazí na hledaná data. Nyní bych ale potřeboval ještě data předcházející a následná. Následná data jsou jednoduchá. Budou v následujícím cyklu while, ale jak se dostat k předcházejícím? Potřeboval bych posunout ukazatel pole o jeden řádek zpět , ale nikde jsem nenašel jak. Díky Tomyc |
||
Taps Profil |
#2 · Zasláno: 18. 12. 2009, 14:28:31
Tomyc:
bylo by dobré kdyby jsi sem vložil kod |
||
Tomyc Profil * |
Kód vypadá takto:
$foto_p=$_GET["foto"]; $dotaz_db="select nazev_f from fotky where nazev_f like '$album_id%'"; include "server/db_sdh_tuklaty.php"; while ($pole_nazev=mysql_fetch_array($db_vysledek)): $nactene_foto=$pole_nazev["nazev_f"]; if ($nactene_foto==$foto_p){ $aktualni_foto=$nactene_foto; } endwhile; Takhle získám řádek v poli který obsahuje hledaná data. Teď bych potřeboval ukazatel pole posunout zpět a do proměnné $predchozi_foto načíst předchozí data. Jedná se o názvy fotografií v databázi které se pak budou zobrazovat. Aktuální foto bude velká fotka uprostřed a předchozí a následná foto budou náhledy s odkazi na předchozí a následnou fotku Moderátor Joker: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Nox Profil |
#4 · Zasláno: 18. 12. 2009, 15:06:58 · Upravil/a: Nox
vždyť to ani nemáš jako pole...
while($nazvy[]=mysql_result($dotaz_db, 0)); array_pop($nazvy); $aktualni = array_search... a pak bude $nazvy[$aktualni] rovno aktualnímu názvu, $nazvy[$aktualni-1] bude předchozí, atd. (jen musíš zkontrolovat jestli prvky akt-1 a akt+1 existují) |
||
Tomyc Profil * |
#5 · Zasláno: 18. 12. 2009, 15:46:18
Myslel jsem že stačí načíst data z databáze $pole_nazev=mysql_fetch_array($db_vysledek) a pak se v těchto datech pohybovat. Po každém načtení mysql_fetch_array($db_vysledek) se načte další řádek hodnot z databáz. Myslel jsem že se jde vrátit i o řádek zpět. Array_pop ještě neznám. Díky moc vyzkouším. Je to i mnohem jednodušší než to co jsem vytvořil já :-)
|
||
Joker Profil |
#6 · Zasláno: 18. 12. 2009, 15:54:22 · Upravil/a: Joker
Tomyc:
Mělo by to jít přes mysql_data_seek. Ale je-li potřeba jen předchozí řádek, možná by bylo snazší si předchozí řádek uchovávat v proměnné (něco jako: zpracuje se ... a když to není ono, tak $predchozi = $nactene_foto) Poznámka, nešel by ten problém vyřešit vhodnou WHERE podmínkou u SQL dotazu? |
||
Nox Profil |
#7 · Zasláno: 18. 12. 2009, 17:08:44
Tomyc:
když dáš $promenna=mysql_fetch_array tak se do proměnné načte 1 řádek záznamu jako pole, ale při dalším fetch array se zase přepíše, nevytvoří se nový prvek při $promenna[]=... se ti udělá pole hodnot mysql_fetch_array v tomto případě nemá moc smysl jelikož bereš jen 1 sloupec, proto _result array_pop je nesmysl kterej je tam jen kvůli posl. prázdnému poli, když bys ho oddělal, nic moc se nestane jenom nám sděl jestli to funguje Joker: „Poznámka, nešel by ten problém vyřešit vhodnou WHERE podmínkou u SQL dotazu?“ chápu to tak že chce vybrat všechny záznamy dle stávající podmínky a pak jede z nich označit |
||
Tomyc Profil * |
Uf tak nakonec jsem to vyřešil takto. Je to asi komplikovaný, ale funkční. Díky všem za pomoc
while ($nazvy=mysql_fetch_array($db_vysledek)): $nazvy_f[]=$nazvy["nazev_f"]; endwhile; $aktualni_index=array_search($aktualni_foto,$nazvy_f); $predchozi_foto=$nazvy_f[$aktualni_index-1]; $dalsi_foto=$nazvy_f[$aktualni_index+1]; Moderátor Joker: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Časová prodleva: 14 let
|
0