Avatar billede simon-h Nybegynder
17. marts 2008 - 16:54 Der er 12 kommentarer

Forrige | Næste - script!

Ja, det er sikkert en gamle klassiker for jer experter, men jeg har følgende lille php-script som søger i min mysql database, men hvordan er det så lige jeg får flettet den her forrige-næste-side funktion ind i scriptet?
Har desværre kun 20 point at byde på, men ville blive super glad hvis nogle ville hjælpe alligevel :)

      <?
    if ($_POST['form'] =="ok") {
    $sog = $_POST['sog'];

    //Opretter forbindelse her...
    mysql_connect("localhost","min-bruger", "*******");
    mysql_select_db("min-database");

    //Selve søgefunktionen..
    $query = mysql_query("SELECT * FROM tabel WHERE sogeord LIKE '%$sog%' LIMIT 0, 30 ");
    ($ops = mysql_num_rows($query)); {
    echo"<font face=verdana size=1>Du har søgt efter: <b>$sog</b><br>Der blev fundet<b> $ops </b>resultat(er).<br><br></font>";
    }
    while ($row = mysql_fetch_array($query)) {
    if (!$id){
    }
            {
            echo $row['Navn'] . "<br>";
            echo $row['Kontakt'] . "<br>";
            echo $row['Info'] . "<br>";
        }
    }
    }
    ?>
Avatar billede simon-h Nybegynder
17. marts 2008 - 19:55 #1
Så fandt jeg ud af hvordan det point system fungerede :)
Der kommer lige lidt ekstra oven i her, til den der kan hjælpe her!
Avatar billede jakobdo Ekspert
17. marts 2008 - 20:17 #2
Til at starte med, tror jeg blot du skal have lov at kigge lidt på denne tråd: http://www.eksperten.dk/spm/817217

Hvis det slet ikke giver mening, eller du ikke kan få det til at virke, så kan jeg give dig lidt mere hjælp. :o)
Avatar billede simon-h Nybegynder
17. marts 2008 - 20:23 #3
Tjo det giver vel lidt mening det meste af det, men du har givet et langt flot svar nederst i indlægget, men bare sådan et stykke som nederst i scriptet:

    echo $strTekstStart;

    echo "<td style='border-bottom:1px solid black; padding:5px;'>".$raekke['hostname']."</td>";

    echo "
        <td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'>".$raekke['date']."</td>
        <td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'>".$raekke['time']."</td>
        <td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'><center><a href='vis.php?id=".$raekke['id']."'>Vis</a></center></td>";

    echo $strTekstSlut."\n";
}

echo "<tr><td colspan='4' style='border-top:0px; padding:5px;'><center>";

- er fx. bygget op på en hel anden måde at mit, og det får mig til at gå helt kold i det! :) hehe...
Avatar billede jakobdo Ekspert
17. marts 2008 - 20:33 #4
Jeg kan godt give dig en fungerende løsning, men så spørger du bare om samme spørgsmål næste gang.
Så synes du skal prøve lidt selv.
Jeg kan give dig 2 hints.

LIMIT 0,30 betyder: Giv mig fra række 0 og giv mig 30.
Så LIMIT 0, 10 giver dig fra 0 og 10 rækker frem (hvis der er 10 rækker)
Så LIMIT 10, 10 giver dig fra 10 og 10 rækker frem (hvis der er 20 rækker)

Ligeledes skal du have en total.
Det får du ved at fjerne LIMIT 0,30 i et KALD.

Det kan gøres sådan:

$total = mysql_result(mysql_query("SELECT COUNT(id) FROM tabel WHERE sogeord LIKE '%$sog%'"),0);
Avatar billede simon-h Nybegynder
17. marts 2008 - 20:45 #5
Jeg kan skam sagtens se meningen i det, når jeg ser det på skrift.. men dertil, så til at få det til at virke med resten af mit script, det kan jeg ikke..
Der er osse aaaalt for mange små " , ' % $ som jeg får sat forkert, for jeg kan virkelig virkelig ikk se logikken i meget af de små detaljer der, som åbenbart er altafgørende!

Fungerende løsning! Fungerende løsning! :D
Avatar billede jakobdo Ekspert
17. marts 2008 - 20:57 #6
Dette er utestet:

<?
if ($_REQUEST['form'] =="ok") {
    //Opretter forbindelse her...
    mysql_connect("localhost","min-bruger", "*******");
    mysql_select_db("min-database");
   
    $sog = mysql_real_escape_string($_REQUEST['sog']);

    //Forrige/Næste ting...
    $total = mysql_result(mysql_query("SELECT COUNT(id) FROM tabel WHERE sogeord LIKE '%$sog%'"),0);
    $pr_side = 10;
    $offset = (isset($_GET['offset']) && is_numeric($_GET['offset']) && $_GET['offset'] > 0) ? intval($_GET['offset']) : 0;

    if ($offset >= $pr_side) {
        $forrige = $offset-$pr_side;
        echo "<a href='?offset=".$forrige."&sog=".$sog."'>Forrige</a>";
    }else{
        echo "Forrige";
    }
    echo '<br />';
   
    if($total > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href='?offset=".$naeste."&sog=".$sog."'>Næste</a>";
    }else{
        echo "Næste";
    }
    echo '<br />';

    //Selve søgefunktionen..
    $query = mysql_query("SELECT * FROM tabel WHERE sogeord LIKE '%$sog%' LIMIT ".$offset.", ".$pr_side);
    if(mysql_num_rows($query) > 0){
    while ($row = mysql_fetch_array($query)) {
      echo $row['Navn'] . "<br>";
            echo $row['Kontakt'] . "<br>";
            echo $row['Info'] . "<br>";
        }
    }
}
?>
Avatar billede simon-h Nybegynder
17. marts 2008 - 21:09 #7
Det script er det tætteste jeg er kommet indtil videre :)
Men det virker stadig ikk helt.. ved ikk helt hvad der går galt, men prøv at gå ind på http://www.brokkers.dk , og skriv "værksted" i søgefeltet..
Avatar billede jakobdo Ekspert
17. marts 2008 - 21:13 #8
Den side ser ikke skide godt ud i Firefox.
Og ejer du også siden: pismigimunden.dk ? :o)

Men kan godt se der er et sted det ikke stemmer.
Næste og forrige er slet ikke aktive.
Avatar billede simon-h Nybegynder
17. marts 2008 - 21:16 #9
Nej, jeg ved godt den er helt gal i firefox... Den problem er jeg osse på, men lige en ting ad gangen jo ;) Hehe, nej pismigimunden eksistere ikke endnu, men hvem ved.. en dag måske!
Men kan du umiddelbart spotte hvor den er gal? For jeg kan godt nok ikke :S
Avatar billede dk-andersson Nybegynder
21. marts 2008 - 01:00 #10
Her har du dit script.
Den vister Næste vis der er brug for det eller vis der er brug for at vis tilbage så gøre den det... ellers viser den ikke noget.

Rigtig nice script som jeg selv har lavet.

//Tjekker om $offeset er sat ellers giver den en værdi 0
    $offset = $_GET['offset'];
    if(!$offset) $offset = 0;

//Hvis $offset er lige 0, vil den vise et mellemrum ellers vil den vis knap Forige
if($offset == 0) {
echo "&nbsp;";
} else {
$forige = $offset-10;
echo "<a href=?offset=".$forige."><-- Forige</a>";
}


$neste = $offset+10; //Antal på de næste
$overall = mysql_result(mysql_query("SELECT COUNT(id) FROM gaestebog"), 0);
                               
if($neste > $overall) { //hvis $neste er større end $overall så sker der ikke noget
echo "&nbsp;";
} else {
echo "<a href=?offset=".$neste.">Næste --></a>";
}
Avatar billede jakobdo Ekspert
21. marts 2008 - 07:17 #11
dk-anderson: Så godt er det nu heller ikke, jeg kan godt se nogle forbedringer. :o)
Avatar billede dk-andersson Nybegynder
26. marts 2008 - 17:53 #12
jamen det virker som det skal.... haved ikke så meget tid til at skrive det.. du kan bruge det eller lade være
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester