ugrás a tartalomhoz

Az oldal újratöltése + vissza ugrás ahol volt

cszlak · 2011. Júl. 5. (K), 07.22
Van egy oldalam dinamikusan létrehoz form ablakokat, amik rendelkeznek egyenként egy mentés gombbal.
  1. <input type="submit" value="Mentés <?php echo $ablak_szam; ?>" name="ablak_szam[<?php echo $ablak_szam; ?>]" style="float:right;width:100px;height:25px;" />  
Majd végrehajtja feladatát és ujratölti az oldalt, hogy látszódjon mit történt.
  1. <?php  
  2.   
  3.  if(@mysql_query($sql)){//mentés sikerült  
  4.   $uzenet2 ='Mentés kész. ';  
  5.    ?>  
  6.    
  7. <script type="text/javascript">  
  8. window.parent.location.href = "kepek_admin.php?text=<?php echo $_GET['text'] ?>";  
  9. </script>  
  10.   
  11.   
  12.    
  13.   }//f(@mysql_query($sql))  
Majd az oldal tetején marad persze.
Azt szeretném, hogy oda ugorjon vissza ahol volt.
Találtam a neten pár kódott ami ezzel foglalkozik, de nem nagyon értek a JS-hez, így kellene egy kis segítség, hogyan kell őket alkalmazni.
  1. <script type="text/javascript">  
  2.   var nincs_diven = true;  
  3.   function mutat_link()  
  4.   { document.getElementById("rejtett_link").style.visibility = "visible";  
  5.     nincs_diven = false;  
  6.   }  
  7.   function rejt_link()  
  8.   { if (nincs_diven)  
  9.     { document.getElementById("rejtett_link").style.visibility = "hidden"; }  
  10.   }  
  11. </script>   
  12. <!-- felgörgetés függvény -->  
  13. <script type="text/javascript">/* IE miatt kell */  
  14. function getYOffset()  
  15. { var pageY;  
  16.   if(typeof(window.pageYOffset)=='number')  
  17.   { pageY=window.pageYOffset; }  
  18.   else  
  19.   { pageY=document.documentElement.scrollTop; }  
  20.   return pageY;  
  21. }  
  22. /* léptetés kódja */  
  23. var mozgas;  
  24. function megall()  
  25. { clearTimeout(mozgas); }  
  26. function laptetejere(end_pozicio)  
  27. {  
  28. var aktual_pozicio = getYOffset();  
  29.   if (aktual_pozicio > end_pozicio)  
  30.   {  
  31.     window.scrollBy(0,-25);  
  32.     mozgas = setTimeout('laptetejere('+end_pozicio+')',1);  
  33.   }  
  34.   else  
  35.     megall();  
  36. }  
  37. </script>  
  38. <style type="text/css">  
  39. /*  
  40. .cim {  
  41.     border: 1px groove black;  
  42.     height: 150px;  
  43.     width: 600px;  
  44.     color: blue;  
  45.     background-color: red;  
  46.     padding: 0;  
  47.     margin: 0;  
  48. }  
  49. */  
  50. </style>  
  51.   
  52. <script type="text/javascript">  
  53. /* Scroll-koordináták lekérdezése */  
  54. function get_scroll_positions()  
  55. {  
  56.   var pageX;  
  57.   var pageY;  
  58.   if(typeof(window.pageXOffset)=='number')  
  59.   { pageX=window.pageXOffset; }  
  60.   else  
  61.   { pageX=document.documentElement.scrollLeft; }  
  62.   if(typeof(window.pageYOffset)=='number')  
  63.   { pageY=window.pageYOffset; }  
  64.   else  
  65.   { pageY=document.documentElement.scrollTop; }  
  66.   return {le:pageX,to:pageY};  
  67. }  
  68. /* GET-változók lekérdezése */  
  69. function get_Url_Vars()  
  70. {  
  71.   var vars = [], hash;  
  72.   var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');  
  73.   for(var i = 0; i < hashes.length; i++)  
  74.   {  
  75.     hash = hashes[i].split('=');  
  76.     vars.push(hash[0]);  
  77.     vars[hash[0]] = hash[1];  
  78.   }  
  79.   return vars;  
  80. }  
  81. /* aktuális scroll-koordináták lekérdezése, továbbítás GET-ként */  
  82. function get_kordinatak_send(vissza_all)  
  83. {  
  84.   if (vissza_all)  
  85.   {  
  86.     var le_positions=get_scroll_positions();  
  87.     var left = le_positions.le;  
  88.     var top = le_positions.to;  
  89.     window.location.href = 'linkvibral.html?l='+left+'&t='+top;  
  90.   }  
  91.   else  
  92.     window.location.href = 'linkvibral.html';  
  93. }  
  94. /* adott scroll-koordináták beállítása */  
  95. function set_kordinatak()  
  96. {  
  97.   var hash = get_Url_Vars();  
  98.   var bal = (hash['l'] != undefined) ? hash['l'] : 0;  
  99.   var font = (hash['t'] != undefined) ? hash['t'] : 0;  
  100.   window.scrollBy(bal,font);  
  101.   if ((bal != '0') || (font != '0'))  
  102.     alert('Frissítés előtti pozició balról: '+bal+'px, föntről: '+font+'px');  
  103. }  
  104. </script>  
  105.   
  106.   
  107.  <button type="button" class="sitetop" onClick="laptetejere(200)">Lap tetejétől 200px-re</button>  
Tehát mégegyszer a probléma, hogy újratöltés után oda ugorjon vissza ahol volt, tehát abba a képernyő pozicióba, de előtte hajtsa végre a php kódott is. Nem gond ha közben scrolozik a képernyő, vagy villan.
Előre is köszönöm, a válaszokat.
 
1

Szerintem neked ajax kell.

deejayy · 2011. Júl. 5. (K), 07.34
Szerintem neked ajax kell. Nagyjából arra tudod használni, hogy oldal újratöltés nélkül adatokat küldj vagy fogadj a szerver felől. Tehát ajaxxal betölthetsz egy php oldalt a háttérben, annak a kódja lefut, de a böngészőben (látszólag) nem történik semmi.

Az ajax kérés eredményét persze fel lehet dolgozni, azaz ha a php kód valamilyen hibával tér vissza, le tudod kezelni.

jQueryvel:
  1. $.ajax({  
  2.   url: '/adatfogado.php',  
  3.   success: function (data) {  
  4.     // az adatfogado.php által visszaadott html kód, lehet üres is, persze  
  5.     alert(data);  
  6.   }  
  7. });  
2

Ha location.href-fel mész új

Hidvégi Gábor · 2011. Júl. 5. (K), 07.52
Ha location.href-fel mész új oldalra, akkor legfeljebb paraméterátadással (scrollpozíciókat küldeni az űrlap adataival) tudsz ugyanarra a pozícióra ugrani.

Vagy a másik megoldás az AJAX, de akkor abba bele kell kicsit ásnod magad, ha még nem foglalkoztál vele.

Az AJAX-os megoldás több munkával járhat, mert jobban kell módosítani a szerveroldali fájlokat, továbbá a legtöbb esetben nagyobb kliensoldali rutinkönyvtár (pl. a fent említett jQuery) szükséges a kezeléséhez.
3

Nem megyek új oldalra!

cszlak · 2011. Júl. 5. (K), 10.06
Nem megyek új oldalra!

A href ugyanerre az oldalra hivatkozik.

Az AJAX-ot nem akarom bele keverni ha lehetséges.
Csak egy js script kellene nekem, ami elmenti mikkor nyom egy gombot, az oldal y koordinátáját, lefutatja a phph-t, majd ha kész akkor újratölti az oldalt, és leugrik oda ahol az y megadja neki.

Én így képzeltem el.
4

Hacsak nem értem félre, hogy

H.Z. v2 · 2011. Júl. 5. (K), 10.24
Hacsak nem értem félre, hogy mit akarsz: ehhez még JS se nagyon kell.
Egy id-vel ellátott tagbe csomagolod azt, ahová ugrani akarsz és az oldal címének végére teszel egy #-t és mögé az id-t:
  1. <div id="111">  
  2. itt vannak a mezőid és a submit gomb  
  3. </div>  
Hivatkozáskor meg így
http://host/cim#111


Ha ez nem lenne elég, akkor még nézd meg a javascript focus() függvényét (illetve ez valamelyik JS objektum metódusa, ha egészen pontos akarok lenni)
5

Két okból nem ilyen egyszerű!

cszlak · 2011. Júl. 5. (K), 10.27
Egyrészt mint írtam ezek dinamikusan létrejövő ablakok a képernyőn amik táblák.
Tehát nem DIV-ben vannak.
Bocs most nézem, hogy a table is tartalmazhat id-t.

A másik hogy mint írtam, íg van az újrahívás:
  1. <script type="text/javascript">    
  2. window.parent.location.href = "kepek_admin.php?text=<?php echo $_GET['text'] ?>";    
  3. </script>    
tehát van egy kepek_admin.php?text=1
Ez után kellen raknom még egy # ? Így?
kepek_admin.php?text=1#idnev
6

Mondjuk én becsomagolásról

H.Z. v2 · 2011. Júl. 5. (K), 10.35
Mondjuk én becsomagolásról beszéltem:
<div id=...><table...></table></div>
Ami nem valami szép, de működőképes.
És igen, elég sok tag tartalmazhat id-t.

Megnéztem, így is a végére kell írni a #id-t.
7

Kipróbáltam..

cszlak · 2011. Júl. 5. (K), 11.10
Kipróbáltam így:

window.parent.location.href = "kepek_admin.php?text=<?php echo $_GET['text'] ?>#<?php echo $ablakid; ?>";

Oda ugrik, de az oldal újrtöltést nem hajtja végre.
8

Az oldal url-je megváltozik?

Hidvégi Gábor · 2011. Júl. 5. (K), 13.17
Az oldal url-je megváltozik?
9

Igen

cszlak · 2011. Júl. 5. (K), 14.42
A
  1. window.location.href = "kepek_admin.php?text=<?php echo $_GET['text'] ?>";  
a text tartalmaz egy fontos infót.amit egy switch válogat le:
  1.      switch ($_GET['text']):  
  2.     case '1': $filedir = 'kep/Konyhabutor'; $kepfelirat ='Konyhabútor'; $title_cimke ='Konyhabútor'; $tabla_name = 'konyhabutor'; $megjelenito = '../konyhabutor.php'; break;  
  3. case '2': $filedir = 'kep/egyedi'; $kepfelirat ='Egyedi'; $title_cimke ='Egyedi'; $tabla_name = 'egyedi'; $megjelenito = '../egyedi.php';  break;  
  4. case '3': $filedir = 'kep/egyedi'; $kepfelirat ='Nappali'; $title_cimke ='Nappali'; $tabla_name = 'nappali'; $megjelenito = '../egyedi.php';  break;  
10

Találtam egy ilyen megoldást:

cszlak · 2011. Júl. 5. (K), 14.50
Találtam egy ilyen megoldást:
  1. /* Scroll-koordináták lekérdezése */  
  2. function get_scroll_positions()  
  3. {  
  4.   var pageX;  
  5.   var pageY;  
  6.   if(typeof(window.pageXOffset)=='number')  
  7.   { pageX=window.pageXOffset; }  
  8.   else  
  9.   { pageX=document.documentElement.scrollLeft; }  
  10.   if(typeof(window.pageYOffset)=='number')  
  11.   { pageY=window.pageYOffset; }  
  12.   else  
  13.   { pageY=document.documentElement.scrollTop; }  
  14.   return {le:pageX,to:pageY};  
  15. }  
  16. /* GET-változók lekérdezése */  
  17. function get_Url_Vars()  
  18. {  
  19.   var vars = [], hash;  
  20.   var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');  
  21.   for(var i = 0; i < hashes.length; i++)  
  22.   {  
  23.     hash = hashes[i].split('=');  
  24.     vars.push(hash[0]);  
  25.     vars[hash[0]] = hash[1];  
  26.   }  
  27.   return vars;  
  28. }  
  29. /* aktuális scroll-koordináták lekérdezése, továbbítás GET-ként */  
  30. function get_kordinatak_send(vissza_all)  
  31. {  
  32.   if (vissza_all)  
  33.   {  
  34.     var le_positions=get_scroll_positions();   
  35.     var left = le_positions.le;  
  36.     var top = le_positions.to;  
  37.  window.location.href = 'kepek_admin.php?<?php if($_GET['text']){ print ("text=" .$_GET['text'] ."&"); } else{print("text=0&");}?>l='+left+'&t='+top;  
  38.   }  
  39.   else  
  40.   window.location.href = 'kepek_admin.php<?php if($_GET['text']){ print ("?text=" .$_GET['text'] ); } else{print("?text=0");}?>';  
  41. }  
  42. /* adott scroll-koordináták beállítása */  
  43. function set_kordinatak()  
  44. {  
  45.   var hash = get_Url_Vars();  
  46.   var bal = (hash['l'] != undefined) ? hash['l'] : 0;  
  47.   var font = (hash['t'] != undefined) ? hash['t'] : 0;  
  48.   window.scrollBy(bal,font);  
  49.  /* window.location.href = 'kepek_admin.php?l='+bal+'&t='+font;*/  
  50.  /* if ((bal != '0') || (font != '0'))  
  51.     alert('Frissítés előtti pozició balról: '+bal+'px, föntről: '+font+'px'); */  
  52. }  
  53. </script>  
Csak az a gond, hogy a text értékét is elmenti,a mi nem is lenne gond,de ha annak másik értéket adok akkor visszatölti a régit.