Javascript ile Sonraki / Önceki sayfa?

5 Cevap php

Ben sayfaları serisi gibi bir online eğitim 'powerpoint' oluşturma. Bu oldukça yalındır ve gibi yola sayfaları olacak:

page1.php page2.php page3.php ... page20.php

Ben eski okul gidiyor ve insanlar adlandırma kuralı üzerine yakalamak ve ileriye atlamak mümkün olmamalıdır gibi adres çubuğunu gizlemek için bir iframe kullanmak olacak. (Onun çok ciddi değil, bu yüzden basit tutmak istiyorum).

Ne yapmak istiyorum onlar üzerinde geçerli sayfada dayanmaktadır page4.php ve page6.html bağlantılar oluşturmak page5.php örneğin söylemek. Açıkçası elle her sayfayı kodlamak zorunda olmadan.

Ths bir javascript fonksiyonu olsaydı ben adres tarayıcılar bilgi çubuğunda göstermek istemiyorum ama ben de php hileler açığım gibi ideal olacaktır.

Bunu nasıl herhangi bir fikir?

5 Cevap

Ilk / son senaryoları ile başa Pikrass fonksiyonu hakkında biraz genişleme:

function goto(url) { window.location=url; }

var curPage = parseInt(location.href.replace(/page([0-9]+)\.php/, ''))
if (curPage <= 1) {
  // First page, no 'back' link
  document.write('<a href="#" class="disabled">Back</a>');
} else {
  var backPage = curPage-1;
  document.write("<a href=\"#\" onclick=\"goto('page"+backPage+".php')\">Back</a>");
}
if (curPage >= 9) { // Replace with highest page number
  // Last page, no 'next' link
  document.write('<a href="#" class="disabled">Next</a>');
} else {
  var nextPage = curPage+1;
  document.write("<a href=\"#\" onclick=\"goto('page"+nextPage+".php')\">Back</a>");
}

URL'ler sayfanın kaynağını görmek eğer gizli değil, istendiği gibi, bağlantı üzerine gelerek zaman tarayıcınızın durum çubuğunda görünmüyor.

Edit başka URL diğer basamak ile başa çıkmak için, Pikrass 'daha özel biri ile RegEx güncelleniyor. Teşekkürler Pikrass!

Kullan window.location. Öyle gibi bir fonksiyonu koyabilirsiniz:

<script type='javascript'>
function goto(url) { window.location=url; }
</script>
<a href='#' onclick='goto("page3.php"); return false;'>Previous</a>
<a href='#' onclick='goto("page5.php"); return false;'>Next</a>

, Bunu gizlemek için sadece böyle bir şey (benim PHP becerileri hala iyi olacağını umuyorum) yapabileceği şekilde bir oturum değişkeni kullanmak olarak da şimdiye kadar gidebiliriz:

<?php
// At Beginning of first script
start_session();
$MAX_PAGE = 20; // Set this to the highest page number
if(!isset($_SESSION['curpage'])) {
  $_SESSION['curpage'] = 1;
} else {
  // __EDIT: Added page max and mins.
  if($_GET['go'] == 'prev' && $_SESSION['curpage'] > 1) {
    $_SESSION['curpage']--;
  } else if($_GET['go'] == 'next' && $_SESSION['curpage'] < $MAX_PAGE) {
    $_SESSION['curpage']++;
  }
}
?>

Ve o zaman ihtiyacınız sayfasında bu koymak.

<?php
include("page$_SESSION[curpage].php");
if($_SESSION['curpage'] > 1) {
  echo "<a href='page.php?go=prev' rel='prev'>Previous</a>";
}
if($_SESSION['curpage'] < $MAX_PAGE) {
  echo "<a href='page.php?go=next' rel='next'>Next</a>";
}
?>

Note that Web Crawlers won't be able to do much with this though, when it returns a different page each time.

Burada URL'lerinizdeki diğer numaraları bile çalışır geçerli sayfayı almak için daha iyi bir RegExp ile MidnightLightning sürümüdür.

function goto(url) { window.location=url; }

var regPage = /page([0-9]+)\.php/;
var match = regPage.exec(location.href);
var curPage = parseInt(match[1]);

if (curPage <= 1) {
  // First page, no 'back' link
  document.write('<a href="#" class="disabled">Back</a>');
} else {
  var backPage = curPage-1;
  document.write("<a href=\"#\" onclick=\"goto('page"+backPage+".php')\">Back</a>");
}
if (curPage >= 9) { // Replace with highest page number
  // Last page, no 'next' link
  document.write('<a href="#" class="disabled">Next</a>');
} else {
  var nextPage = curPage+1;
  document.write("<a href=\"#\" onclick=\"goto('page"+nextPage+".php')\">Back</a>");
}

Bir cevap birkaç adam tarafından inşa edildiğinde seviyorum. :)

Eğer yapabiliyorsanız önerildiği gibi, bir PHP kodu tercih ederim. Bu çok daha "temiz" bulunuyor.

Sorgu dize değişkenleri kullanmak istediğiniz gibi geliyor, bu yüzden page.php?page=1, page.php?page=2, page.php?page=3 ve böylece

Neden yerine iframe ajax kullanmak Yüklü?

Eh, ben nereye yönlendirmek js 'anlatmak' için başka bir bağlantı özelliğini kullanarak yararlı bulabilirsiniz düşünüyorum böylece soru jquery etiketli, farketmez.

Yani:

$.(document).ready(funciton(){
    //i use the live method becose.. you know, maybe in the future
    //you will go with ajax ;)
     //live method is avbaiable in jquery 1.3!
    $("a.navigation").live('click', function(){
        window.location = $(this).attr("rel");
    });
});

Bu <a> etiketleri çok onclick işlevleri html biçimlendirme ücretsiz izin.

Yani, biçimlendirme sonra gibi bir şey olacaktır:

<a href="#" rel="page1.php">Go to page 1</a>
<a href="#" rel="page2.php">Go to page 2</a>
<!-- .. and so on.. -->

Hala istiyor gerçek adresler gizlemek Ya da, bunu yapabilirsiniz:

<a href="#" rel="1">Go to page 1</a>
<a href="#" rel="2">Go to page 2</a>
<!-- .. and so on.. -->

Bu js ile (belki sayfa kaynağına gömülü değil?)

$.(document).ready(funciton(){
    $("a.navigation").live('click', function(){
        window.location = 'page' + $(this).attr("rel") + '.php';
    });
});

Youre planlama js bağlantıları kullanabilirsiniz Ama eğer tamamen sayfa adresler gizlemek mümkün olmayacak.

Sen php, ve bir karma dizeleri ikizim kullanarak bunları gizlemek olabilir, ama buna değer bir oyun olmadığını bilmiyorum.

Diğer sayfaları numarasını ve sayfaların bağlantılarını hesaplamak için bir sıradanifade yolu önerdi; Ben PHP ile bağlantıları baskı gidecek: (biz kaç sayfa bilmiyorum ve onlar numaraları veritabanı ile ilgili ise, bize verdiğin bile bilgi bana sahip olduğunu düşünüyorum yapacak Eğer global davranışı çok daha iyi kontrol sağlayacak fisically sunucu üzerindeki tüm sayfa [x]. php)