ThaMezzy Skrevet 30. mai 2005 Del Skrevet 30. mai 2005 (endret) Jeg driver med et artikkel script og har lyst til å ha det slik at hvis selve artiklen er over x antall tegn så kommer det en neste side og der henter den ut resten av artiklen. Jeg bruker MySQL til å lagre artiklene og er litt usikker på hvordan jeg skal lage dette. Er det noen her som har lagd dette selv før eller vet hvordan man gjør det som kunne gitt meg en liten innføring? MVH: Adrian Emile PS: Si ifra hvis dere ikke skjønte innlegget! Postet det her siden det må egentlig ikke ha noe med databaser å gjøre. Endret 18. juni 2005 av ThaMezzy Lenke til kommentar
pgdx Skrevet 30. mai 2005 Del Skrevet 30. mai 2005 (endret) Eneste jeg kom på nå: Her er koden for de første n tegn: $n = 1337; //Max antall tegn det er tillatt å ha per side if (strlen($string) > $n { $first = substr($string, 0, 1337); $second = substr($string, 1337, 1337); } Endret 30. mai 2005 av drange_net Lenke til kommentar
ThaMezzy Skrevet 30. mai 2005 Forfatter Del Skrevet 30. mai 2005 Ahh. Fikk et nytt innblikk i koden nå, men er litt usikker på hvordan jeg skal printe den ut og hvordan linken skal se ut. Noen som vet? Lenke til kommentar
Me sjøl Skrevet 30. mai 2005 Del Skrevet 30. mai 2005 Kanskje ha to columns i mysql hvor du har $first og $second i. Så lager du en enkel liten if statement som viser resten av artikkelen hvis $_GET['action'] == 'full'. For eksempel: if ($_GET['action'] == 'full') { $query = "SELECT second, additionalcols FROM mysqltable WHERE id = $id"; $result = mysql_query($query); // gjør query $row = mysql_fetch_assoc($result); // stripslashes osv. echo $row['message']; echo $row['additionalcols']; echo '<a href="'.$_SERVER['PHP_SELF'].'">Tilbake</a>'; } else { $query = "SELECT first, additionalcols FROM mysqltable WHERE id = $id"; $result = mysql_query($query); // gjør query $row = mysql_fetch_assoc($result); // stripslashes osv. echo $row['message']; echo $row['additionalcols']; echo '<a href="?action=full">Full historie</a>'; } Veldig simpel kode, usikker på om jeg har glemt noe. Lenke til kommentar
ThaMezzy Skrevet 30. mai 2005 Forfatter Del Skrevet 30. mai 2005 (endret) Var en god ide det Me sjøl, men tenkte bare jeg skulle spørre om dere tror dette funker: <?php // Tilkobling her // Query her // Her sjekker den hvilken side den er på if($_GET['side'] == "1") { $side = substr($artikkel, 0, 1500); } elseif($_GET['side'] == "2") { $side = substr($artikkel, 1500, 3000); } elseif($_GET['side'] == "3") { $side = substr($artikkel, 3000, 4500); } echo $side; // Max antall tegn det er tillatt å ha per side $tegn = 1500; // Hvis den er over så kommer det en link if(strlen($artikkel) > $tegn { echo "<a href='?inc=(link)&side=1'>Neste</a>"; } else { echo ""; } ?> Må selvfølgelig bygge denne opp, men det er nok noen her som skjønner prinsippet. Funker denne tror dere? Har ikke noe sted å teste scriptet på så må nesten spørre dere om dere tror denne funker. Endret 30. mai 2005 av ThaMezzy Lenke til kommentar
kakkle Skrevet 30. mai 2005 Del Skrevet 30. mai 2005 Jeg tror nok jeg ville skilt på ord istedetfor tegn, slik at ikke en del av ordet blir på side en, og andre del av ordet på side to. Et aldri så lite eksempel på teorien //databsekobling, spørrinng, osv // $text = teksten fra mysql... $ord_pr_side = 100; if(!isset($_GET["side"])) $side = 0; else $side = $_GET["side"] $start = $side*$ord_pr_side; $slutt = $start + $ord_pr_side; $ant_ord = str_word_count($text); if($slutt > $ant_ord) $slutt = $ant_ord; $ant_sider = ceil($ant_ord / $ord_pr_side); $ord = str_word_count($text, 2); for($i=$start;$i<$slutt;$i++) { print $ord[$i]." "; } if($ant_sider > 1) { $nesteside = $side+1; print "<a href='?side=$nesteside'>neste side</a>"; } Ikke helt 100, men omtrent noe sånt, kanskje ? Ikke testet, da... Du bør lese litt om str_word_count på php.net er usikker på om den tar med æøå. Den teller ihvertfall ikke med tall. Dette må legges til i et tredje argument. Se eksempel på php.net Lenke til kommentar
ThaMezzy Skrevet 30. mai 2005 Forfatter Del Skrevet 30. mai 2005 (endret) kakkle: Altså jeg så på koden din, men har fått litt hjelp her og der og lagd litt selv. Denne koden under her funker helt fint. Har ikke kommentert koden nå siden den brukes kun for tiden i scriptet mitt, men hvis noen har lyst til å bruke den og ikke skjønner alt så er det bare å sende pm til meg. <?php // All det database greiene $tegn = 200; $offset = isset($_GET['side']) && is_numeric($_GET['side']) && ($_GET['side']*$tegn)<strlen($si[omtale]) ? $_GET['side']*$tegn : 0; if ($offset > 1) { $side = ($offset/$tegn)-1; echo "<a href=\"?inc=omtaler&action=les&id=$si[id]&side={$side}\"><<Forrige</a> "; } else { echo "<<Forrige "; } echo "<div align='center'>"; if(!isset($_GET['side'])) { $side = 1; } elseif($_GET['side'] == 0) { $side = 1; } else { $side = $_GET['side']; } if($side > 1){ $forrige = ($side - 1); echo "<a href='?inc=omtaler&action=les&id=$si[id]&side={$forrige}'><<Forrige</a> "; } else { echo "<<Forrige "; } $total = strlen($si[omtale]); $antsider = ceil($total / $tegn); for($i = 1; $i <= $antsider; $i++){ if(($side) == $i){ echo "<strong>$i</strong> "; } else { echo "<strong><a href=\"?inc=omtaler&action=les&id=$si[id]&side=$i\">$i</a></strong> "; } } if($side < $antsider){ $neste = ($side + 1); echo "<a href='?inc=omtaler&action=les&id=$si[id]&side={$side}'>Neste>></a>"; } else { echo "Neste>>"; } echo "</div>"; ?> Endret 30. mai 2005 av ThaMezzy Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå