Autor | Zpráva | ||
---|---|---|---|
Darja Profil |
#1 · Zasláno: 23. 1. 2011, 20:43:39
Ahoj,
vytvořila jsem návštěvní knihu, potřebovala bych dodělat ještě jeden detail. Chci, aby se mi na jedné stránce objevilo 10 příspěvků, dalších 10 na stránce č. 2, atd. Skript mi vytiskne 1, 2,.... , počet stránek, to, co potřebuju je, aby po kliknutí na dané číslo se mi změnila proměnná $page. Předem díky! <?php if ($send) { $author = $_POST['author']; $subject = $_POST['subject']; $comment = $_POST['comment']; if ($author!="" and $subject!="" and $comment!="") { //send email $to="darja3@post.cz"; $from="From:$author"; $day = (date("j")).".".(date("m")).".".(date("Y")); $time = (date("H")).":".(date("i")).":".(date("s")); $message = "Máte nový příspěvek v knize návštěv"; $info = "Datum: ".$day.", čas: ".$time."\nAutor: ".$author."\nNázev příspěvku: ".$subject."\nPříspěvek:\n".$comment; mail($to,$message,$info,$from); echo "Příspěvek byl odeslán\n"; //save datas into databasis $link = mysql_connect ("*******","*******","******") or die (mysql_error()); mysql_query("set names cp1250"); $db = mysql_select_db("********", $link) or die ("Nepovedlo se otevřít databázi"); $query = "INSERT INTO TempGB VALUES ('','$day','$time','$author','$subject','$comment')"; mysql_query($query,$link) or die (mysql_error()); $num_of_rows = mysql_num_rows($query) ; mysql_close(); } else { echo "Příspěvek nelze odeslat, nebyly vyplněny všechny položky. Zkuste to znovu\n"; } } ?> <p>Zobrazit stránku č. <?php $link = mysql_connect ("******","*******","********") or die (mysql_error()); mysql_query("set names cp1250"); $db = mysql_select_db("******", $link) or die ("Nepovedlo se otevřít databázi"); $query = "SELECT * FROM TempGB ORDER BY Number DESC"; $result = mysql_query($query,$link) or die (mysql_error()); $num_of_rows = mysql_num_rows($result); //prints the number of the pages... $num_of_pages = 1 + ($num_of_rows - ($num_of_rows % 10)) / 10; for ($i = 1; $i <= $num_of_pages; $i++) { echo "<a href=\"guest_book.php?page=".$i."\">".$i."</a><br />"; } //temporary $page = 1; $order = 1; while ($row = mysql_fetch_array($result)) { if ($order > ($page-1)*10 && $order < $page*10) { echo "Datum: ".$row["Date"].", čas: ".$row["Time"].", autor: ".$row["Author"].",<br />předmět: ".$row["Subject"]."<br />"; echo $row["Comment"]; echo "<br />---------------------------------------------------------------------"; $order++; } } mysql_free_result($result); mysql_close(); ?> |
||
Radek Cvek Profil |
#2 · Zasláno: 23. 1. 2011, 21:58:43
stránka se může přidávat třeba v url ?stranka=1
z url se vezme stránka a definuje se i když v url není zapsaná if (isset($_GET["stranka"])) $stranka=$_GET["stranka"]; else $stranka=1 a v Db dotazu se udělá limit "SELECT * FROM TempGB ORDER BY Number DESC LIMIT ".($stranka-1)*10.", 10 ;" stránkování budou odkazy na ...?stranka=2, ?stranka=3, ... |
||
Darja Profil |
#3 · Zasláno: 23. 1. 2011, 22:17:20
"SELECT * FROM TempGB ORDER BY Number DESC LIMIT ".($stranka-1)*10.", 10 ;" nějak mi tu nesedí ty uvozovky... něco je navíc, na špatném místě, nevím přesně co, ale nefunguje to |
||
Tori Profil |
#4 · Zasláno: 23. 1. 2011, 22:21:59
co říká mysql_error?
|
||
Darja Profil |
#5 · Zasláno: 23. 1. 2011, 22:30:35
Trochu jsem si pohrála, ozkoušela jsem několik variant uvozovek a vítězná varianta je tato:
$query = "SELECT * FROM TempGB ORDER BY Number DESC LIMIT ('$page'-1)*10, 10"; mysql_error neříkal nic, objevila se prázdná bílá stránka |
||
Darja Profil |
#6 · Zasláno: 23. 1. 2011, 22:37:33
no, ale stejně mi to nedělá to, co má, v databázi mám 12 záznamů, když kliknu na stránku č. 2, tak se mi ale nic nevypíše :(
|
||
Tori Profil |
#7 · Zasláno: 23. 1. 2011, 22:56:42 · Upravil/a: Tori
Darja:
$query = "SELECT * FROM TempGB ORDER BY Number DESC LIMIT ('$page'-1)*10, 10"; Toto vám musí vyhodit syntaktickou chybu, protože v LIMIT je možné použít jen celočíselné konstanty, ne výraz. (Proto to Radek Cvek nechal spočítat v PHP). edit: zkoušela jsem to. |
||
Darja Profil |
#8 · Zasláno: 23. 1. 2011, 22:59:26
Nene, žádnou syntatickou chybu to nehlásí. Jen to nedělá to co má.
|
||
Radek Cvek Profil |
#9 · Zasláno: 23. 1. 2011, 23:07:35 · Upravil/a: Radek Cvek
if (isset($_GET["stranka"])) $stranka=$_GET["stranka"]; else $stranka=1; na konci jsem zapoměl středník a když se v SETECTU přidá závorka?: "SELECT * FROM TempGB ORDER BY Number DESC LIMIT ".(($stranka-1)*10).", 10 ;" "Jen to nedělá to co má. " a co to dělá? Nic se nevypisuje? a když se v phpMyAdminu napíše SELECT * FROM TempGB ORDER BY Number DESC LIMIT 10, 10 ;, tak se zobrzí co? |
||
Darja Profil |
#10 · Zasláno: 23. 1. 2011, 23:18:41
ups... už jsem našla kámen úrazu.... jeden byly ty závorky a druhý jeden drobný překlep.... omlouvám se:/ a jinak díky moc, teď už to dělá to, co má.
PS: to Radek : a ještě středník až za uvozovkou, ne naopak |
||
Radek Cvek Profil |
#11 · Zasláno: 23. 1. 2011, 23:22:47
Darja:
středník až za uvozovkou, ne naopak - MySQL dotazy by měli končit středníkem, ale pokud se neukončí, tak to nekrachne. Takže by tam měl být před i za. |
||
Časová prodleva: 13 let
|
0