Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: vieraskirja ongelma

Sivun loppuun

Aku2 [28.05.2003 20:33:56]

#

Heips taas vaihteeksi.
Ryhdyin pitkästä aikaa tekemääni vieraskirjaa päivittelemään, eli tarkoitus on jaotella viestit 10/sivulle ja linkit 10 edellistä | 10 seuraavaa.

Tuo jaottelu onnistuu ja vieraskirja toimii muuten hyvin, mutta 10 edellistä linkki ei tuo toivottua tulosta.
Viittaa kuitenkin oikein??? ainankin pitäisi niin tehdä.

Jos joku löytyää tuosta jonkin mokan, niin viitsisikö kertoa. Itse olen tuota tutkinut ja hutkinut jo useita tunteja ja en saa siitä nyt mitään irti.
Siis mitään erroreita ei tule. Linkki vaan yksinkertaisesti ei tulosta aikaisempia viestejä, vaan samat viestit uudestaan.

<?php

@mysql_connect($db_host, $db_user, $db_password) or die("error connection");
mysql_select_db($db_name, $connection);
$result = mysql_query("SELECT * FROM guestbook");
$viestit = mysql_num_rows($result);
mysql_close();

if (!isset($s) || $s <= 0) $s = 1;

$loppu = $s*10;
$alku = $loppu-10;

if ($alku <= 0 || $alku >= $viestit) $alku = 0;
if ($loppu >= $viestit) $loppu = $viestit;

$eka = $viestit-$loppu;
$vika = $viestit-$alku;

if ($eka <= 0) $eka = 0;
if ($vika >= $viestit) $vika = $viestit;

?>
<CENTER>
<?php
if ($loppu >= $viestit) {
    echo "Edelliset 10 viestiä";
}else{
    ?>
    <A href="?s=<?php echo $s+1; ?>">Edelliset 10 viestiä.</A>
    <?php
}
echo " ";
if ($alku <= 0) {
    echo "Seuraavat 10 viestiä";
}else{
    ?>
    <A href="?s=<?php echo $s-1; ?>">Seuraavat 10 viestiä.</A>
    <?php
}
echo "<BR>Viestit <B>".$eka." - ".$vika."</B> Yhteensä <B>".$viestit."</B> viestiä.</CENTER><BR>";

    $query = "SELECT * FROM guestbook ORDER BY autoID DESC LIMIT $alku, $loppu";
    $result = mysql_query($query, $connection);

    for ($i = 0; $i < mysql_num_rows($result); $i++)
    {
    	$name = mysql_result($result, $i, "name");
    	$email = mysql_result($result, $i, "email");
    	$email_len = strlen($email);
        $comment = mysql_result($result, $i, "comment");
    	$comment = nl2br($comment);
        $date = mysql_result($result, $i, "date_auto");
        $show_date = date("H:i:s m/d/Y", $date);

        echo '

	  <table border ="1" width="600" cellspacing ="0" cellpading="0" bordercolor="#666666">

           <tr>
 	      <td width="100" valign="top" bgcolor="#D8E0EB"><font face="Arial, Helvetica, sans-serif" size="2"><b>Kirjoitettu:</b></font></td>
              <td width="500" valign="top" bgcolor="#E0E0E0"><font face="Arial, Helvetica, sans-serif" size="2"> '.$show_date.' </font></td>
            </font>
 	   </tr>

          <tr>
            <td width ="100" bgcolor="#D8E0EB"><font face="Arial, Helvetica, sans-serif" size="2"><b>Nimi:</b></font></td>
            <td width="200" valign="top" bgcolor="#E0E0E0">
              <font size="2">';

                if ($email_len > 0)
                {
                    echo '<font face="Arial, Helvetica, sans-serif" size="2"><a href="mailto:'.$email.'">'.$name.'</font></a>';
                }
                else
                {
                    echo $name;
                }
                echo '
                </font>
               </td>
             </tr>
	     <tr>
 	       <td width="100" valign="top" bgcolor="#D8E0EB"><font face="Arial, Helvetica, sans-serif" size="2"><b>Viesti:</b></font></td>
               <td width="500" valign="top" bgcolor="#EEEEEE"><font face="Arial, Helvetica, sans-serif" size="2"> '.$comment.' </font></td>
 	     </tr>
		 </table><br>
              ';
            }
?>

Tulilintu [28.05.2003 20:46:49]

#

Kuka tuollaista jaksaa tutkia... Ei edes kommentteja....

odys [28.05.2003 20:49:40]

#

Jos haluat näyttää seuraavat ja edelliset 10 viestiä olisi sql lause seuraava: SELECT * FROM taulu LIMIT alku, kuin_monta_ettenpäin

Esim. SELECT * FROM taulu LIMIT 10, 10
tarkoittaa, että 10. viestin jälkeen valitaan kymmenen seuraavaa riviä

SELECT * FROM taulu LIMIT 50, 10
Valitsee 10 riviä 50. rivistä eteenpäin

Aku2 [28.05.2003 20:59:44]

#

lainaus:

Jos haluat näyttää seuraavat ja edelliset 10 viestiä olisi sql lause seuraava: SELECT * FROM taulu LIMIT alku, kuin_monta_ettenpäin

Esim. SELECT * FROM taulu LIMIT 10, 10
tarkoittaa, että 10. viestin jälkeen valitaan kymmenen seuraavaa riviä

SELECT * FROM taulu LIMIT 50, 10
Valitsee 10 riviä 50. rivistä eteenpäin

Tuossahan olen koittanut niin tehdä:

$query = "SELECT * FROM guestbook ORDER BY autoID DESC LIMIT $alku, $loppu";

Ja mitä tulee Tulilinnun viestiin kommentointien puuttumisesta:
Tuo on vielä työnalla ja ainankin itselläni on tapana kommentoida tekemäni scriptit vasta jälkeenpäin "valmiina" varsinkin jos ne ei kasva vielä kovinkaan suuriksi.
Jos on suurempi projekti kyseessä, niin kyllä silloin kommentoin heti, mutta tuo on vielä niin pieni, että mielestäni se ei kummoisia kommentointeja tarvitse, jos lainkaan.

Jaahas. keskustelufoorumi kadottaa tuon lopun tuosta.
Eli $ jälkeen on vielä loppu";

odys [28.05.2003 21:03:25]

#

Mielestäni tämä on aivan väärin:

$loppu = $s*10;
$alku = $loppu-10;

Sen pitäisi pikemminkin olla NÄIN:

$alku = ($s * 10) - 10;
SELECT * FROM taulu LIMIT $alku, 10

Aku2 [28.05.2003 21:17:32]

#

lainaus:

Mielestäni tämä on aivan väärin:

$loppu = $s*10;
$alku = $loppu-10;

Sen pitäisi pikemminkin olla NÄIN:

$alku = ($s * 10) - 10;
SELECT * FROM taulu LIMIT $alku, 10

Ei auttanut. linkki edelleen tuottaa saman tuloksen.

odys [28.05.2003 21:20:01]

#

Mikäs siinä sitten on vikana? Siis miten se linkki bugaa?
Koitan tutkia lisää koodia sillä aikaa kun saan vastauksen...

Aku2 [29.05.2003 00:29:24]

#

Bugaa siten, että allaolevana tulee sivulle noi linkit:

Edelliset 10 viestiä. Seuraavat 10 viestiä
Viestit 17 - 27 Yhteensä 27 viestiä.

Tuo edelliset 10 viestiä on linkkinä, joka osoittaa:
http://localhost/guestbook.php?s=2

Eli kun sitä klikkaa, pitäisi saada näkyviin 10 aikaisempaa viestiä, eli 6-16
Mutta näin ei käy, vaan tuo sama 17-27 viestit tulee näkyviin. Siis samat kuin pelkällä guestbook.php tiedostollakin.

odys [29.05.2003 00:37:46]

#

<A href="?s=<?php echo $s+1; ?>">Edelliset 10 viestiä.</A>
<A href="?s=<?php echo $s-1; ?>">Seuraavat 10 viestiä.</A>

On tainnut pojalla mennä sekaisin Seuraavat ja Edelliset? ;)

<A href="?s=<?php echo $s-1; ?>">Edelliset 10 viestiä.</A>
<A href="?s=<?php echo $s+1; ?>">Seuraavat 10 viestiä.</A>

Aku2 [29.05.2003 16:09:27]

#

Piti vähän aikaa lukea viestiäsi, jotta hokasin mitä muutoksia tuossa on, mutta ikävä tuottaa pettymys, että tuokaan ei auttanut ongelmaan.

Jotta selviäisi miten se nyt toimii, niin tuolta se löytyy:
http://80.222.215.137/guestbook.php

thefox [29.05.2003 17:36:37]

#

register_globals PHP:n conffifilusta on vai off? Jos off (oletus uusimmissa), hae se "s" $_GET:istä.

Aku2 [29.05.2003 21:06:52]

#

ööö.
Kokeilin tuota register_globalssin muuttamista on asentoon.
Meneekö se suoraan päälle apachen restartilla? siis kun on tuon muutoksen tehnyt php:n ini tiedostoon ja tallentanut sen.

Tuota koitin, mutta sekään ei auttanut.

Olisiko antaa esimerkkiä, kuinka tuota $_GET käytettäisiin tuossa? En ole nimittäin mikään guru PHP:ssä, vaan vasta opettelemassa.

vipemype [29.05.2003 21:09:40]

#

Ihan vaan

$_GET['muuttuja'];

Ja jos käyttää post:ia niin sitten

$_POST['muuttuja'];

Jos on tottunut käyttämään globaaleja niin yksi mahdollisuus on

$muuttuja = $_GET['muuttuja'];
echo "Muuttuja on ". $muuttuja;

Edit: jotakin hämminkiä kooditagissa. Ei oikeen toimi vieläkään kunnolla.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta