Autor Zpráva
Tomyc
Profil *
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
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
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 *
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
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
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 ).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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