Avatar billede michaeltryl Seniormester
11. juli 2006 - 19:41 Der er 40 kommentarer og
1 løsning

ide/hjælp til menu ønskes

jeg har denne side http://sjov.magiske-michael.dk/sjove-tekster.php

jeg er ved og have samlet så mange tekster at menuen er uoverskuelig, så derfor har jeg en ide som jeg ikke lige kan regne ud hvordanjeg gør. (menuen bliver includeret på alle sider)
min ide er at samle alle links til teksterne i en database også vise 10 poster adgangen i menuen med næste og forrige links i bunden af den.
problemet er så at hvis man viser f.eks links 21-30 og klikker på et link i menuen hopper den så ikke tilbage og viser de 10 første links istedet for at blive ved med at vise 21-30.
kan dette lade sig gøre på en eller anden måde??
Avatar billede jakobdo Ekspert
11. juli 2006 - 21:08 #1
Det kunne lade sig gøre, ved at du i dine links gemmer: offset=21&link=25
Altså vi er på side 21-30, og klikker på link 25
Avatar billede michaeltryl Seniormester
11. juli 2006 - 21:29 #2
ja jeg tænkte nok det var sådan noget jeg skulle ud i, men ville godt undgå dette da jeg så skal holde styr på hvor langt jeg er i listen hver gang jeg tilføjer et link og husk at sætte offset op efter hver 10. link.
Avatar billede jakobdo Ekspert
11. juli 2006 - 22:01 #3
Et eller andet sted i din kode, der skal du jo alligevel bruge offset.
Så du starter med at trække 1 - 10 ud af din database, offset = ingenting eller 1.
Næste side bliver offset så 11 og do trækker 11-20 ud.
Altså skal du jo bruge offset på din side alligevel.
Så er det bare at smide det med i linket.
Avatar billede michaeltryl Seniormester
11. juli 2006 - 22:22 #4
nå ja jeg tror måske jeg er med nu. jeg kigger på det en af dagene og skriver hvis jeg får brug for hjælp.
jeg troede jeg skulle skrive offset ind for hvert link i databasen, men jeg kan selvfølgelig hente den variable ud og automatisk indætte den i linket
Avatar billede jakobdo Ekspert
12. juli 2006 - 08:30 #5
Lige præcis! :o)
så du laver bare linkene som:

echo '<a href="'.$_SERVER['PHP_SELF'].'?offset='.$offset.'&link='.$row['ID_fra_tabel'].'">Link</a>';
Avatar billede michaeltryl Seniormester
12. juli 2006 - 09:35 #6
okay er ikke med på hvorfor du henter id fra tabellen ud jeg havde tænkt at lave et felt i tabellen hvor jeg skrev adressen og så hentede selve adressen ud, men det er måske det du gør med  .$_SERVER['PHP_SELF']., men hvorfor skal jeg så have id'et hentet ud?
Avatar billede jakobdo Ekspert
12. juli 2006 - 09:58 #7
Jeg synes du evt. skal prøve din ide først, jeg tror måske jeg arbejdede på en anden ide i mit hoved! :o)
Avatar billede michaeltryl Seniormester
12. juli 2006 - 22:36 #8
okay så vil jeg arbejde lidt videre med min ide jeg vender tilbage hvis/når jeg køre fast
Avatar billede jakobdo Ekspert
13. juli 2006 - 06:55 #9
Deal! :o)
Avatar billede michaeltryl Seniormester
13. juli 2006 - 13:08 #10
jeg har nu denne kode men den fejler. jeg har i min database gemt selve slutningen af linket samt titel af link og den tekst som skal stå på siden.
du kan se siden her www.magiske-michael.dk/prove/sjove-tekster.php
derudover vil jeg godt have hjælp til at indsætte offset i linket

<?
//skab forbindelse til databasen
mysql_connect("***", "****", "****") or die(mysql_error());
mysql_select_db("****") or die(mysql_error());

        // tæller antal poster i databasen
$tael = mysql_query("SELECT COUNT(*) AS antal FROM sjove-tekster-menu") or die(mysql_error());
$row = mysql_fetch_array($tael);
echo "<h3>Der er i øjeblikket ".$row[antal]." sjove tekster</h3>"

// Antal hilsner på hver side
$rowsToReturn = 10;

// Aktuel side
$offset = $_GET['offset'];
if ( $offset == "" ) {
    $offset = "0";
}

// Find ud af hvor mange links der er i alt
$how_many = mysql_query("SELECT COUNT(*) AS totalRows FROM gbog") or die(mysql_error());
$how_many_d = mysql_query("SELECT COUNT(*) AS totalRows FROM gbog") or die(mysql_error());
$totalRows = mysql_result($how_many_d, 0);

// Hent en sides hilsner
$hilsner = mysql_query("SELECT * FROM sjove-tekster-menu ORDER BY dato DESC LIMIT ".$offset.",".$rowsToReturn."") or die(mysql_error());

// Vis dem
$i = 0;
while ($array = mysql_fetch_array($how_many))
{
    // Tæller så vi ved, hvor mange links vi har vist
    $i++;
    // Vis dine links her
    while ($row = mysql_fetch_array($hilsner))
    {
        print "<a class='menu' href='http://sjov.magiske-michael.dk/sjove-tekster/" $row["link"] . "' title='" $row["link-titel"] . "'>" $row["link-text"] . "</a><br>";
    }
}

// Lav relevante links
if ($offset > 0)
    echo "<a href='gaestebog.php?offset=".($offset - $rowsToReturn)."'>Forrige</a> | ";
if ($offset + $i < $totalRows)
    echo "<a href='gaestebog.php?offset=".($offset + $rowsToReturn)."'>Næste</a>";
?>
Avatar billede jakobdo Ekspert
18. juli 2006 - 12:38 #11
Du mangler ; efter linie 10 eller 11:
echo "<h3>Der er i øjeblikket ".$row[antal]." sjove tekster</h3>"; <-----
Avatar billede michaeltryl Seniormester
20. juli 2006 - 23:58 #12
okay det har jeg nu ændret, men nu står der:
Parse error: parse error, unexpected T_VARIABLE in /home/www/magiske-michael.dk/prove/sjove-tekster.php on line 37

og ifølge mit program er det denne linie:
print "<a class='menu' href='http://sjov.magiske-michael.dk/sjove-tekster/" $row["link"] . "' title='" $row["link-titel"] . "'>" $row["link-text"] . "</a><br>";
Avatar billede jakobdo Ekspert
21. juli 2006 - 07:52 #13
Ret linien til:
print '<a class="menu" href="http://sjov.magiske-michael.dk/sjove-tekster/"' . $row['link'] . '" title="' . $row['link-titel'] . '">' . $row['link-text'] . '</a><br>';
Avatar billede michaeltryl Seniormester
21. juli 2006 - 13:03 #14
så står der:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-tekster-menu' at line 1

betyder det at der henvises til noget i databasen som ikke findes??
Avatar billede jakobdo Ekspert
21. juli 2006 - 18:29 #15
Jeg tror det er tabelnavnet sjove-tekster-menu den ikke kan lide.
Prøv at sæt `sjove-tekster-menu` omkring i linien:
$tael = mysql_query("SELECT COUNT(*) AS antal FROM sjove-tekster-menu") or die(mysql_error());
Avatar billede michaeltryl Seniormester
21. juli 2006 - 19:41 #16
nu har jeg fået den til at vise
<a class='menu' href='http://sjov.magiske-michael.dk/sjove-tekster/vidste-du-at.php title=unødig nyttig viden>Vidste du at

derudover kan jeg ikke regne ud hvordan jeg skal putte offset ind i linket
se siden her
http://sjov.magiske-michael.dk/sjove-tekster.php

koden ser pt sådan ud (kontakt yil database er fjernet)


        // tæller antal poster i databasen
$tael = mysql_query("SELECT COUNT(*) AS antal FROM tekstermenu") or die(mysql_error());
$row = mysql_fetch_array($tael);
echo "<h3>Der er i øjeblikket ".$row[antal]." sjove tekster</h3>";

// Antal hilsner på hver side
$rowsToReturn = 10;

// Aktuel side
$offset = $_GET['offset'];
if ( $offset == "" ) {
    $offset = "0";
}

// Find ud af hvor mange links der er i alt
$how_many = mysql_query("SELECT COUNT(*) AS totalRows FROM tekstermenu") or die(mysql_error());
$how_many_d = mysql_query("SELECT COUNT(*) AS totalRows FROM tekstermenu") or die(mysql_error());
$totalRows = mysql_result($how_many_d, 0);

// Hent en sides hilsner
$hilsner = mysql_query("SELECT * FROM tekstermenu ORDER BY linkID DESC LIMIT ".$offset.",".$rowsToReturn."") or die(mysql_error());

// Vis dem
$i = 0;
while ($array = mysql_fetch_array($how_many))
{
    // Tæller så vi ved, hvor mange links vi har vist
    $i++;
    // Vis dine links her
    while ($row = mysql_fetch_array($hilsner))
    {
        print "<a class='menu' href='http://sjov.magiske-michael.dk/sjove-tekster/" . $row['link'] . " title=" . $row['link-titel'] . ">" . $row['link-text'] . "";
    }
}

// Lav relevante links
if ($offset > 0)
    echo "<a href='sjove-tekster.php?offset=".($offset - $rowsToReturn)."'>Forrige</a> | ";
if ($offset + $i < $totalRows)
    echo "<a href=sjove.tekster.php?offset=".($offset + $rowsToReturn)."'>Næste</a>";
?>
Avatar billede jakobdo Ekspert
21. juli 2006 - 20:38 #17
Jeg ved ikke helt som du tænker noget i denne stil: http://www.codebreaker.dk/exp/720196.php
Avatar billede jakobdo Ekspert
21. juli 2006 - 20:38 #18
Dog uden offset, men inkluder du det samme kode på alle siderne?
Avatar billede michaeltryl Seniormester
21. juli 2006 - 21:05 #19
jo det er noget ligende det linkene skal bare ikke åbne i et nyt vindue, samt uden frames
Avatar billede jakobdo Ekspert
21. juli 2006 - 21:08 #20
Men hvis linket åbner i eget vindue, så skal du jo have samme kode på alle sider, har du det?
Avatar billede jakobdo Ekspert
21. juli 2006 - 21:08 #21
Så kan du se min kode, så er der offset på alle links.
Avatar billede michaeltryl Seniormester
21. juli 2006 - 21:33 #22
ja jeg includere menuen på alle sider
Avatar billede michaeltryl Seniormester
21. juli 2006 - 21:48 #23
nu har jeg hentet din kode og ændret det jeg mener skal ændres så nu ser min kode sådan ud (uden connect)

if(is_numeric($_GET['link']))
{
    $id = intval($_GET['link']);
    mysql_query("UPDATE tekstermenu SET hits = hits+1 WHERE id = '".$id."' LIMIT 1");
    $query = mysql_query("SELECT url FROM tekstermenu WHERE id = '".$id."' LIMIT 1");
    $link = mysql_result($query,0);
    header('Location: ' . $link);
    exit();
}

$max_pages = 2;
$count = mysql_result(mysql_query('SELECT COUNT(linkID) FROM tekstermenu'),0);

$offset = (is_numeric($_GET['offset']))?intval($_GET['offset']):0;

$query = mysql_query("SELECT id, name, title, hits FROM tekstermenu ORDER BY linkID LIMIT " . $offset . "," . $max_pages);
if(mysql_num_rows($query)>0)
{
    echo '<table>' . "\n";
    echo '<tr><td>Hits</td><td>Link</td></tr>' . "\n";
    while($row = mysql_fetch_assoc($query))
    {
        echo '<tr><td>' . $row['hits'] . '</td><td><a target="_blank" href="' . $_SERVER['PHP_SELF'] . '?link=' . $row['id'] . '&offset='.$offset.'" title="' . $row['title'] . '">' . $row['name'] . '</a></td></tr>' . "\n";
    }
    echo '</table>' . "\n";
}

// Lav relevante links
if ($offset > 0)
{
    echo '<a href="' . $_SERVER['PHP_SELF'] . '?offset='.($offset - $max_pages).'">Forrige</a>';
}
else
{
    echo 'Forrige';
}

echo '&nbsp;|&nbsp;';

if ($offset + $max_pages < $count)
{
    echo '<a href="' . $_SERVER['PHP_SELF'] . '?offset='.($offset + $max_pages).'">Næste</a>';
}
else
{
    echo 'Næste';
}

?>
Avatar billede michaeltryl Seniormester
21. juli 2006 - 21:49 #24
glemte at skrive at jeg får denne fejl
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/magiske-michael.dk/prove/sjove-tekster.php on line 22
Forrige | Næste
Avatar billede jakobdo Ekspert
21. juli 2006 - 22:49 #25
Hvad er linie 22 i din kode?
Avatar billede michaeltryl Seniormester
21. juli 2006 - 23:15 #26
det er denne
if(mysql_num_rows($query)>0)
Avatar billede jakobdo Ekspert
21. juli 2006 - 23:21 #27
Ret lige:
$query = mysql_query("SELECT id, name, title, hits FROM tekstermenu ORDER BY linkID LIMIT " . $offset . "," . $max_pages);
til:
$query = mysql_query("SELECT id, name, title, hits FROM tekstermenu ORDER BY linkID LIMIT " . $offset . "," . $max_pages) or die(mysql_error());
Avatar billede michaeltryl Seniormester
21. juli 2006 - 23:36 #28
så kommer denne fejl:

Unknown column 'id' in 'field list'
Avatar billede jakobdo Ekspert
21. juli 2006 - 23:52 #29
har du et felt der hedder ID i tabellen: tekstermenu?
Avatar billede michaeltryl Seniormester
21. juli 2006 - 23:55 #30
nej min database ser sådan ud
  linkID  int(11)    auto_increment             
  link  varchar(255)
  link-titel  varchar(255)             
  link-text  varchar(255
Avatar billede jakobdo Ekspert
22. juli 2006 - 00:12 #31
Så skal du rette:
$query = mysql_query("SELECT id, name, title, hits FROM tekstermenu ORDER BY linkID LIMIT " . $offset . "," . $max_pages);
til:
$query = mysql_query("SELECT linkID, link-text, link-title FROM tekstermenu ORDER BY linkID LIMIT " . $offset . "," . $max_pages);
Avatar billede michaeltryl Seniormester
22. juli 2006 - 00:18 #32
så får jeg følgende

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/www/magiske-michael.dk/prove/sjove-tekster.php on line 25
Forrige |

linie 25 er denne
    while($row = mysql_fetch_assoc($query))
Avatar billede jakobdo Ekspert
22. juli 2006 - 09:50 #33
Michael, hvis du stadig har mig på msn, så fang mig lige...
Avatar billede michaeltryl Seniormester
23. juli 2006 - 10:09 #34
okay, men det bliver først fra næste mandag da jeg pt er på ferie
Avatar billede jakobdo Ekspert
23. juli 2006 - 10:54 #35
Fair nok!
Avatar billede michaeltryl Seniormester
03. august 2006 - 15:47 #36
hej jakobdo jeg kan være på msn i aften hvis du har tid der.
Avatar billede jakobdo Ekspert
06. august 2006 - 08:35 #37
Har været uden net i nogle dage, fra mandag er det "hverdag" med net igen! :o)
Avatar billede michaeltryl Seniormester
06. august 2006 - 12:39 #38
okay jeg prøver at fange dig en dag så
Avatar billede jakobdo Ekspert
13. august 2006 - 11:07 #39
Du får et svar!
Løsningen blev at smide alle tekster i databasen, og så bruge offset derpå.
Avatar billede jakobdo Ekspert
13. august 2006 - 11:09 #40
Takker for point.
Avatar billede michaeltryl Seniormester
13. august 2006 - 11:13 #41
her er koden

<?
//skab forbindelse til databasen
mysql_connect("****", "****", "****") or die(mysql_error());
mysql_select_db("sjov") or die(mysql_error());

$offset = (is_numeric($_GET['offset']))?intval($_GET['offset']):0;
$max_pages = 2;

$count = mysql_result(mysql_query('SELECT COUNT(tekstID) FROM tekster'),0);

$query = mysql_query("SELECT tekstID, tekst, titel FROM tekster ORDER BY tekstID LIMIT " . $offset . "," . $max_pages) or die(mysql_error());
{
    echo '<table>' . "\n";
    echo '<tr><td>Link</td></tr>' . "\n";
    while($row = mysql_fetch_assoc($query))
    {
        echo '<tr><td><a class="menu" href="' . $_SERVER['PHP_SELF'] . '?text=' . $row['tekstID'] . '&offset='.$offset.'" title="' . $row['titel'] . '">' . $row['titel'] . '</a></td></tr>' . "\n";
    }
    echo '</table>' . "\n";
}

// Lav relevante links
if ($offset > 0)
{
    if(is_numeric($_GET['text']))
    {
        $id = intval($_GET['text']);
        echo '<a href="' . $_SERVER['PHP_SELF'] . '?text='.$id.'&offset='.($offset - $max_pages).'">Forrige</a>';
    }
    else
    {
        echo '<a href="' . $_SERVER['PHP_SELF'] . '?offset='.($offset - $max_pages).'">Forrige</a>';
    }
}
else
{
    echo 'Forrige';
}

echo '&nbsp;|&nbsp;';

if ($offset + $max_pages < $count)
{
    if(is_numeric($_GET['text']))
    {
        $id = intval($_GET['text']);
        echo '<a href="' . $_SERVER['PHP_SELF'] . '?text='.$id.'&offset='.($offset + $max_pages).'">Forrige</a>';
    }
    else
    {
        echo '<a href="' . $_SERVER['PHP_SELF'] . '?offset='.($offset + $max_pages).'">Forrige</a>';
    }
}
else
{
    echo 'Næste';
}

if(is_numeric($_GET['text']))
{
    $id = intval($_GET['text']);
    $query = mysql_query("SELECT tekst FROM tekster WHERE tekstID = '".$id."' LIMIT 1");
    $tekst = mysql_result($query,0);
    echo '<p>';
    echo $tekst;
    echo '</p>';
}

?>
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