Autor Zpráva
metalio
Profil
Zdravim,
mám jisté potíže ze stránkováním. Pro některé tabulky to vypisuje a pro některé ne.
A přitom mám stejný kód:


<?php
include ("./page/mysql.php");

class gb   {
                  
          function pridejgb($Nick,$Message){
        $Cas =  Date("d. n. Y, H:i:s"); 
  		  $dotaz="INSERT INTO `guestbook` (`ID_gb`, `Nick`, `Message`, `Cas`) VALUES ('', '$Nick', '$Message', '$Cas')";
				$vysledek=MySQL_Query($dotaz);
            if(!$vysledek){
											echo "Nepodařilo se provést vložení";
				}
			}          
    }


$tabulka = "gb";
$gb = new gb();

    		    
    		    
             if(isset($_POST["Pridej"])){
				  $gb->pridejgb($_POST["Nick"], $_POST["Message"]);
				  	}

			
		?>
		
<FORM METHOD="post" ACTION="index.php?file=gb">
<h4><a href="#">Napište mi!</a></h4
<p><b>Nick</b></p>
<INPUT TYPE="text" name="Nick">
<p>&nbsp;</p>
<p><b>Zpráva</b><p>
   <TEXTAREA NAME="Message">
   </TEXTAREA><br />
<p><INPUT TYPE="submit"   name="Pridej" value="Vložit nový vzkaz" ></p>
  </FORM>
<br />
<br />

<?php

 @$kategorie = $_GET['typ'];
 $dotaz ="";
  define ("ROWS", 10);
  if (!isset($_GET["count"])){
     $vysledek=mysql_query("select count(*) as pocet from guestbook");
     $zaznam=mysql_fetch_array($vysledek);
     $count=$zaznam["pocet"];
  }else{
     $count=$_GET["count"];
     }
  if ($count>ROWS){
     if (!isset($_GET["start"])) $start=1; else $start=$_GET["start"];	
	   
     
     $dotaz = "select * from guestbook"." limit ".($start-1).", ".ROWS;
           
      $vysledek = mysql_query($dotaz,$id_spojeni);
			if(mysql_num_rows($vysledek) != 0)
			{
				
				while($Zaznam = mysql_fetch_row($vysledek))
				{	
				  echo '<p><h4>',$Zaznam[1],'</h4></p>
                <p>',$Zaznam[2],'</p>
                <p class="date"><img src="img/timeicon.gif" alt="" /> ',$Zaznam[3],'</p>
                <br />
                <br />';
							}				
			}
			else echo'Zatím nebyl přidán žádný záznam!!';
      
      echo "Záznamu: " .$start."-";
      echo (($start+ROWS-1)<=$count)?($start+ROWS-1):$count;
      echo " z celkem $count&nbsp;&nbsp;&nbsp;";
      if ($start==1) echo "<< &nbsp;|&nbsp;" ;
       else echo "<a href=\"".$_SERVER["PHP_SELF"]."?count=$count&start=1\"><<</a>&nbsp;|&nbsp;";
      if ($start<ROWS) 
            echo "<&nbsp;|&nbsp;";
       else echo "<a href=\"".$_SERVER["PHP_SELF"]."?count=$count&start=".($start-ROWS)."\"><</a>&nbsp;|&nbsp;";
      if ($start+ROWS>$count) 
            echo ">&nbsp;|&nbsp;";
       else echo "<a href=\"".$_SERVER["PHP_SELF"]."?count=$count&start=".($start+ROWS)."\">></a>&nbsp;|&nbsp;";
       if ($start>$count-ROWS) 
            echo ">>&nbsp;<BR>";
       else echo "<a href=\"".$_SERVER["PHP_SELF"]."?count=$count&start=".($count-$count%ROWS+1)."\">>></a>";
  }	
?>



pro tabulku guestbook to nefunguje ale pro tabulku psc to funguje.

toto je export tablulky psc:

-- Struktura tabulky `psc`
-- 

CREATE TABLE `psc` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `psc` char(50) collate utf8_czech_ci NOT NULL default '',
  `mesto` char(50) collate utf8_czech_ci NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=13 ;

-- 
-- Vypisuji data pro tabulku `psc`
-- 

INSERT INTO `psc` VALUES (1, '46546', 'dakshdkajshd');
INSERT INTO `psc` VALUES (2, '46464', 'asdjakjsdhkashdkasd');
INSERT INTO `psc` VALUES (3, '56878', 'flasjfkashdkjas d');
INSERT INTO `psc` VALUES (4, '87648', 'askhdkajshdkjashgdkjgasd');
INSERT INTO `psc` VALUES (5, '25423', 'flskdhfkjdshf');
INSERT INTO `psc` VALUES (6, '23435', 'sdjfhskdjfjsdgf');
INSERT INTO `psc` VALUES (7, '54657', 'daskjdhakjsgdas');
INSERT INTO `psc` VALUES (8, '56465', 'jsdlfhskdfksdgfjsdgfdshg');
INSERT INTO `psc` VALUES (9, '46786', 'dajshdjasgdjasg');
INSERT INTO `psc` VALUES (10, '67866', 'ashdkjahskjdhaskdsakjd');
INSERT INTO `psc` VALUES (11, '67574', 'kjahfkjsdkfhsdjfgsdf');
INSERT INTO `psc` VALUES (12, '66878', 'fsdkjfhkjsdgfjsdgsdg');


a export tabulky guestbook
-- Struktura tabulky `guestbook`
-- 

CREATE TABLE `guestbook` (
  `ID_gb` int(10) unsigned NOT NULL auto_increment,
  `Nick` char(30) collate utf8_czech_ci NOT NULL default '',
  `Message` char(255) collate utf8_czech_ci NOT NULL default '',
  `Cas` char(100) collate utf8_czech_ci NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`ID_gb`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=23 ;

-- 
-- Vypisuji data pro tabulku `guestbook`
-- 

INSERT INTO `guestbook` VALUES (15, 'onasis', 'bbbb', '23. 3. 2009, 18:41:13');
INSERT INTO `guestbook` VALUES (18, 'dsadas', 'dklasjdlkasjd', '24. 3. 2009, 10:28:29');
INSERT INTO `guestbook` VALUES (17, 'metalio', 'mas to good', '23. 3. 2009, 16:48:32');
INSERT INTO `guestbook` VALUES (19, 'lkdjalskd', 'ldjaslkdjasld', '24. 3. 2009, 10:28:51');
INSERT INTO `guestbook` VALUES (20, 'sadjlas', 'jdlsajdlkasjd', '24. 3. 2009, 10:30:21');
INSERT INTO `guestbook` VALUES (21, 'dljsf', 'flskdjflksdjf', '24. 3. 2009, 10:32:03');
INSERT INTO `guestbook` VALUES (22, 'lfkdsj', 'ldksja', '24. 3. 2009, 10:33:11');


prosím moc o radu.

S pozdravem
Martin Stoklasa
Joker
Profil
metalio
Co na tom přesně nefunguje? Generuje to správné odkazy? Když se ručně zadá odkaz třeba se start=10, zobrazí to správně? Vyhodí to nějakou chybovou hlášku?

Další poznámky:
- "Nepodařilo se provést vložení"
Fuj. Čeština má i jiná slovesa, než jen "provést" a "dojít". Na tyhle dvě už začínám být alergický.

- Předávat počet přes adresu není nejlepší nápad. Sice se občas ušetří databázový dotaz, jenže počet příspěvků se může měnit- když si někdo ten odkaz uloží, zkopíruje nebo někomu pošle, anebo jen přibudou nové příspěvky zatímco si bude prohlížet starší stránky, bude se diskuse tvářit jako že tam je méně příspěvků, než v ní skutečně je.
metalio
Profil
standartně to má vypisovat, mno a při tabulce guestbook to nedělá nic, vkládá to normálně bez problému, ale nevypisuje to nic ani třeba že se nepodařilo spojit z DB nebo že v DB nic není, prostě to nevypíše nic
AM_
Profil
Zřejmě proto, že $count < ROWS. Nic proti, ale na tohle může přijít i začátečník, nejdřív si zjistím, proč se mi ten kód nedostane do větve, kde něco vypisuji. Zjistím, že je to celé zavřené v if ($count > ROWS). Takže kde asi může být chyba?
metalio
Profil
velice jste mi pomohl, děkuji

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: