Varje gång sidan uppdateras plockar du ut de två rader i databasen där datetime är störst och skriver ut dessa? Eller har jag missförstått dig helt nu?
Superfin hund btw! :)
10 svar · 736 visningar · startad av Blockqoute
Jag håller på med en hemsida för min och min sambos hund. Den ligger preliminärt nu uppe på https://www.dcweb.nu/lars. Jag har en gästbok på den sidan. Jag skulle vilja länka de 2 första inläggen i gästboken till en ruta som ligger permanent till höger på sidan. Titta på hemsidan så är det lättare att förstå. Där vill jag att inläggen skall uppdateras automatiskt så klart, så det är de 2 nyaste GB-inläggen som skall visas där. Jag vill att datum och tid, namn, och de antal tecken som får plats på en rad i rutan av hela GB-inlägget skall visas. Raden skall avslutas med t.ex. "...". Och på raden underst så vill jag har en länk man kan klicka på där det står "Read more", som skall ta en till gästbokssidan. Någon som har några ideér på hur detta kan lösas?
Jag bifogar en .zip-fil med de två sidorna som är aktuella. Databasen för gästboken ser ut som nedan:
CREATE TABLE `gastbok` (
`id` mediumint(11) NOT NULL auto_increment,
`datum` datetime NOT NULL default '0000-00-00 00:00:00',
`namn` varchar(50) NOT NULL default '',
`stad` varchar(50) NOT NULL default '',
`epost` varchar(50) NOT NULL default '',
`hemsida` varchar(50) NOT NULL default '',
`ager` varchar(50) NOT NULL default '',
`inlagg` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Är tacksam för alla svar och ideér.
Varje gång sidan uppdateras plockar du ut de två rader i databasen där datetime är störst och skriver ut dessa? Eller har jag missförstått dig helt nu?
Superfin hund btw! :)
Ja det är väl så det är tänkt att fungera :) Kommer inte riktigt på hur man implemeterar detta bara...
<?php
$conn = @mysql_connect('localhost', 'anvandarnamn', 'losenord') or die("Kunde inte ansluta till databasen...");
mysql_select_db('dbnamn', $conn)
$data = mysql_query("SELECT * FROM gastbok ORDER BY id DESC LIMIT 2") or die("Kunde inte hämta från databasen...");
while ($rad = mysql_fetch_array($data)) {
// Kolla om inlägget är mer än 40 tecken, isåfall korta ner
if (strlen($rad['inlagg']) > 40) {
// Skriv ut första 35 tecknen, sen ...
$inlagg = substr($rad['inlagg'], 0, 35) . '...';
}
echo "<strong>".$rad['datum']." - ".$rad['namn']."</strong><br />\n";
echo $inlagg;
echo "<br />\n<a href=\"guestbook.php\">Read more</a><br/>\n";
}
?>
Tack så mkt för ditt svar! Det fungerar bra i stora drag, men det är några buggar. Om man skriver meddelanden som är kortare än 35 tecken (har ändrat lite) så kommer inte själva meddelandet med på högersidan. Och om man skriver meddelanden som är längre än 35 tecken så fungerar förkortningen och allt bra, bara det att då kommer samma meddelande upp på båda inläggen. Men namnet och datumet är som de ska, alltså bara själva meddelandet som kommer upp två gånger. Sidan är uppdaterad med det senaste försöket nu. Men här kommer även själva koden:
<?php
$data = mysql_query("SELECT * FROM gastbok ORDER BY id DESC LIMIT 2") or die("Kunde inte hämta från databasen...");
while ($rad = mysql_fetch_array($data)) {
// Kolla om inlägget är mer än 35 tecken, isåfall korta ner
if (strlen($rad['inlagg']) > 35) {
// Skriv ut första 30 tecknen, sen ...
$inlagg = substr($rad['inlagg'], 0, 30) . '...';
}
echo "<strong>".$rad['namn']." - ".$rad['datum']."</strong><br />\n";
echo $inlagg;
echo "<br />\n<a href=\"guestbook.php\">Read more</a><br/>\n<br>";
}
?>
Du sparade endast ditt inlägg i variabeln $inlagg när det var mer än 35 tecken så felet var ju ganska logiskt.
Koden nedan bör fungera som du tänkt dig. :)
/Edit Ändrade lite, else-vilkor behövs inte med denna förbättring..
<?php
$data = mysql_query("SELECT * FROM gastbok ORDER BY id DESC LIMIT 2") or die("Kunde inte hämta från databasen...");
while ($rad = mysql_fetch_array($data)) {
$inlagg = $rad['inlagg'];
if (strlen($inlagg) > 35) { //kort ner inlägg om längre än 35 tecken
$inlagg = substr($inlagg, 0, 30) . '...';
}
echo "<strong>".$rad['namn']." - ".$rad['datum']."</strong><br />\n";
echo $inlagg;
echo "<br />\n<a href=\"guestbook.php\">Read more</a><br/>\n<br>";
}
?>
Compusa skrev:
Du sparade endast ditt inlägg i variabeln $inlagg när det var mer än 35 tecken så felet var ju ganska logiskt.
Självklart, det var jag som hade lite för bråttom när jag skrev koden. Ber om ursäkt för det.
Pedda skrev:
Självklart, det var jag som hade lite för bråttom när jag skrev koden. Ber om ursäkt för det.
Det var absolut inte menat att låta spydig om det uppfattades så. Är väl medveten om att att misstag, kan uppstå i all hast ibland :D
Ånej, så uppfattade jag det inte.
Det var bara bra att du såg felet jag hade gjort. Det blir lätt fel när man är stressad och inte kan testköra koden heller.
Tack så mycket allihop! Hur det blev kan ni kolla på hemsidan.
Okej trevlig att löste sig :)
Blockquote: om du vet vilken data du vill hämta ut så är det rekomenderat att byta ut:
<?php
$data = mysql_query("SELECT FROM * FROM gastbok ORDER BY id DESC LIMIT 2") or die("Kunde inte hämta från databasen...");
?>
mot...
<?php
$data = mysql_query("SELECT namn, datum, inlagg FROM gastbok ORDER BY id DESC LIMIT 2") or die("Kunde inte hämta från databasen...");
?>
Bättre rent prestandamässigt.