Gå til innhold

Les mer funksjon (nyhetsscript)


Anbefalte innlegg

Skrevet

Har ett slags gjestebokscript jeg driver på å gjøre om til ett nyhetsscript, dette er med flatfiler. Problemet mitt nå er at jeg trenger en "les mer" funksjon (vist jeg kan kalle det det).

 

Scriptet ser slik ut:

<?php
$matrise = file("info.txt");
//ta bort kommentarene for å se innholdet i matrisen
/*
echo "<pre>";
var_dump($matrise);
echo "</pre>";
/**/
$perSide = 5;
$start = isset($_GET['side']) ? (intval($_GET['side']) * $perSide) : 0;
$matrise = array_reverse($matrise);
for ($i = $start; $i <= $start + $perSide; ++$i) {
   if (!isset($matrise[$i])) {
       break;
   }
   //deler opp hver bit av strengen til en ny matrise
   $neste = explode("***---***", $matrise[$i]);
   if (sizeof($neste) < 2) {
       break;
   }
list($navn,$hils) = explode("***---***", $linje);
   echo "<b>" . Neste[0] . "</b>"; //Skriver overskriften
   echo "<blackquote>" . Neste[1] . </blackquote>; //Skriver ingress

}
echo "Side: ";
$sider = ceil(sizeof($matrise) / $perSide);
for ($i = 0;$i < $sider; ++$i) {
   echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?side=" . $i . "\">" . ($i + 1) . "</a> ";
}
?>

 

Prøvde denne:

echo "<a href='Neste[2]'>Les mer</a>";

Men det funket ikke. Var den beste ideen jeg kom på.

 

 

 

PS: vist jeg er dårlig å forklare så bare si fra :thumbup:

Videoannonse
Annonse
Skrevet (endret)

Det hadde vært enklere hvis du brukte databaser, men hvis du har lyst å bruke flatfiler går det også.

 

Det du må gjøre er å fikse ett lite delscript. Da må du også disable for() loopen. Du må også skrive en id til filen.

id***---***Overskrift***---***ingress***---***mer***---***

 

if ($_GET['action']=="lesmer") {
$id = $_GET['id'];
foreach ($fil as $linje) {
$nyhet = explode('***---***', $linje);
if ($nyhet[0]==$id) {
echo $nyhet[1]; //overskrift
echo $nyhet[2]; // Ingress
echo $nyhet[3]; // resten av nyheten
}}}

 

Så lager du linker til á la ?id=1&action=lesmer

Endret av Ståle
Skrevet

Jeg får error på allerede første linje av scriptet ditt. Jeg ser ikke noe feil dær? Eller er jeg blind?

Skrevet

Nå får jeg ikke erroren neij men problemet er at jeg får ikke noe link til les mer heller. Jeg er så jævla dårlig på akkurat det området når deg gjeller php:/

Skrevet (endret)

Warning: Invalid argument supplied for foreach() in /web/www/frac/users/s/system32/gjestebok/gjestebok_vis.php on line 39

 

linje 39:

foreach ($fil as $linje) {

Endret av Creep
Skrevet (endret)

Men nå har jeg "Parse error: syntax error, unexpected T_VARIABLE bla bla...

 

Linje 40:

$neste = explode("***---***", $matrise[$i]);

 

Resten:

if ($_GET['action']=="lesmer") {
$id = $_GET['id'];
foreach ($matrise = file("info.txt")
$neste = explode("***---***", $matrise[$i]);
if ($neste[0]==$id) {
echo $neste[0]; //overskrift
echo $neste[1]; // Ingress
echo $neste[4]; // resten av nyheten

Endret av Creep
Gjest medlem-77217
Skrevet

Why do it the hard way :ermm:

 

 

Erhm.. ja... Okey..

 

Om du virkelig ikke får det til kan du jo bruke JavaScript (måtte gud forby).

Skrevet
Hva er linje 39 da? Har du glemt et semikolon ; ?

7634404[/snapback]

 

Linje 39:

$id = $_GET['id'];

 

Why do it the hard way  :ermm:

 

 

Erhm.. ja... Okey..

 

Om du virkelig ikke får det til kan du jo bruke JavaScript (måtte gud forby).

7635026[/snapback]

 

ja det ville du vell likt. Aldri i værden :tease:

Skrevet

Nja.. jeg skjønte at den koden din var veldig dårlig.. derfor laget jeg likesågodt en ny. xD

Den er veldig treig, men det tror jeg ikke er mulig å unngå pga det er en flatfil og man må søke gjennom alle linjene etter det inlegget man vil lese mer av. Bruk mysql neste gang :)

 

Klikk for å se/fjerne innholdet nedenfor
<?php
// <reklame>Made by Ståle</reklame>
// <adress>http://stale.z42.us</adress>

//Filen
$fil = file("info.txt");
$fil = array_reverse($fil);

function sidetall() {
$i = count($fil);
$sider = array();

$u = ceil($i / 5);
for ($o=1; $o <= $u; $o++) {
array_push($sider, $o);
}
if (($i % $u)==0) echo '';
else array_push($sider, $o+1);
if (!(($i % $u)==0)) array_push($sider, $o+1);

$siste = end($sider);
if (!isset($_GET['side'])) $side = 1; else $side = $_GET['side'];
$forrige = $side - 1;
if ($forrige<=0) echo '<<'; else echo "<a href=\"?&side=$forrige\"><<</a>";
foreach($sider as $enside) { echo '  <a href="?&side=' . $enside . '">' . $enside . '</a>'; }
$neste = $side + 1;
echo '  ';
if ($neste >= end($sider) + 1) echo '>>'; else echo "<a href=\"?&side=$neste\">>></a>";
}

foreach ($fil as $nyhet) {
$segment = explode('***---***', $nyhet);

if (($_GET['action']=="lesmer") && ($_GET['id']==$segment[0])) {
echo '<strong>' . $segment[1] . '</strong>';
echo '<br />';
echo $segment[2];
echo '<br />';
echo $segment[3];
echo '<br /><br />';
}
if (!isset($_GET['action'])) {
echo '<strong>' . $segment[1] . '</strong>';
echo '<br />';
echo $segment[2];
echo '<br />';
echo '<a href="?side=' . $_GET['side'] . '&action=lesmer&id=' . $segment[0] . '">Les Mer</a>';
echo '<br /><br />';
}
}

?>

Skrevet

Ståle den dær var fin du! Litt modefisering i veriablene så funker den som gull;) Tusen takk...men må bare spørre deg, brukte du lang tid på scriptet?

Skrevet

Jeg har fått den fikset på siden...bare noen små endringer som må til...men du vet ikke tilfeldigvis om noen liker til "flatfile endre/slette funksjon" eller liggnende?

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...