Autor Zpráva
Darja
Profil
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
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
"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
co říká mysql_error?
Darja
Profil
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
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
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
Nene, žádnou syntatickou chybu to nehlásí. Jen to nedělá to co má.
Radek Cvek
Profil
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
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
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.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0