Avatar billede warren27 Nybegynder
16. juni 2004 - 11:10 Der er 67 kommentarer og
1 løsning

Hent data fra phpBB

Jeg har lige oprette et forum (13 juni 2004), det er det berømte phpBB. Jeg kunne godt tænke mig at trække nogen data ud fra de nyeste indlæg. Iøjeblikket har jeg lavet en lille løsning, se http://www.yalla.dk - men jeg er ikke tilfreds med resultatet, det jeg leder efter skal helst ligne det som http://www.1go.dk har lavet. Admin på forummet (mig), skal skelle sig ud fra de andre brugere, når jeg opretter et nyt emne. Her tænker jeg på at ikonet skal være noget andet. Altså alle de andre skal ha et bestemt ikon, og jeg skal ha´ et der skeller sig fra de andre !!!

Er der nogen der kan lave det ??? - jeg tror det er en meget stor opgave, så jeg giver 200 point...
Avatar billede dennismp Nybegynder
16. juni 2004 - 11:33 #1
prøv..

$sql = "
SELECT t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_topics t, phpbb_users u
WHERE t.topic_poster = u.user_id
AND t.forum_id = 2
ORDER BY t.topic_time DESC";

$res = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
  print $row[0];
  print " posted af ";
  print $row[2];
  if( $row[3] == 1 )
    print '<img src="admin.gif">';
  else
    print '<img src="normal.gif">';
}
Avatar billede warren27 Nybegynder
16. juni 2004 - 12:19 #2
Øhhh, jeg kan ikke php, så kan du ikke skrive alle oplysningerne ? Det er ligesom at der mangler noget ! Ps, jeg kan kun finde ud af at copy and paste, så det er meget vigtigt at i skriver det hele, så jeg kun skal indsætte oplysningerne til MySQL...

Jeg har uploadet den kode du gav mig, se resultatet her: http://www.yalla.dk/testning.php
Avatar billede dennismp Nybegynder
16. juni 2004 - 12:21 #3
Du ska lige smække <?php før koden og ?> efter koden.

altså:
<?php
$sql = "
SELECT t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_topics t, phpbb_users u
WHERE t.topic_poster = u.user_id
AND t.forum_id = 2
ORDER BY t.topic_time DESC";

$res = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
  print $row[0];
  print " posted af ";
  print $row[2];
  if( $row[3] == 1 )
    print '<img src="admin.gif">';
  else
    print '<img src="normal.gif">';
}
?>
Avatar billede warren27 Nybegynder
16. juni 2004 - 15:35 #4
Jeg har prøvet det! Virker sgu not...

Nu kommer denne side frem: http://www.yalla.dk/hmmm.php
Avatar billede warren27 Nybegynder
16. juni 2004 - 15:37 #5
Kam du ikke skrive med STORE bogstaver der hvor jeg skal rette ???
Avatar billede dennismp Nybegynder
16. juni 2004 - 15:47 #6
Du skal bruge den mysql_connect / mysql_pconnect og mysql_select_db som du har i dit gamle script
Avatar billede warren27 Nybegynder
16. juni 2004 - 15:53 #7
Hmmm, kan stadigevæk ikke regne ud hvad du mener... Sorry jeg er ikke så prof...
Avatar billede dennismp Nybegynder
16. juni 2004 - 15:59 #8
<?php
mysql_connect("MYSQLSERVER", "MYSQLBRUGER", "MYSQLPASSWORD") or die(mysql_error());
mysql_select_db("MYSQLDATABASE") or die(mysql_error());

.. resten her
Avatar billede warren27 Nybegynder
16. juni 2004 - 16:06 #9
Nu får jeg denne besked fra serveren: http://www.yalla.dk/tak.php
Avatar billede dennismp Nybegynder
16. juni 2004 - 17:26 #10
Hvad hedder dine tabeller i mysql? phpbb_etellerandet ?
Avatar billede warren27 Nybegynder
16. juni 2004 - 17:43 #11
Det ved jeg ikke !, men jeg har ikke omdøbt nogen af dem, men mit forum ligger i en mappe der hedder "bums" - har det en betydning ???
Avatar billede warren27 Nybegynder
16. juni 2004 - 17:56 #12
se her >>> http://www.yalla.dk/phpbb.JPG håber det kan hjælpe dig !!!
Avatar billede dennismp Nybegynder
16. juni 2004 - 18:18 #13
Her er scriptet igen. Dit problem er, tror jeg, at du ikke har erstattet MYSQLSERVER / MYSQLBRUGER / MYSQLPASSWORD - hvor de to sidste er de samme som du bruger i phpmyadmin. MYSQLSERVER ved jeg ikke hvad er, det afhænger af hvordan det er sat op - men hvis du er hel på bar bund så prøv at bruge "localhost" som MYSQLSERVER

<?php
mysql_connect("MYSQLSERVER", "MYSQLBRUGER", "MYSQLPASSWORD") or die(mysql_error());
mysql_select_db("MYSQLDATABASE") or die(mysql_error());

$sql = "
SELECT t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_topics t, phpbb_users u
WHERE t.topic_poster = u.user_id
ORDER BY t.topic_time DESC";

$res = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
  print $row[0];
  print " posted af ";
  print $row[2];
  if( $row[3] == 1 )
    print '<img src="admin.gif">';
  else
    print '<img src="normal.gif">';
}
?>
Avatar billede warren27 Nybegynder
16. juni 2004 - 18:42 #14
Den sidste kode virker ! Men jeg er ikke tilfreds med resultatet... http://www.yalla.dk/123456789.php
Avatar billede dennismp Nybegynder
16. juni 2004 - 18:45 #15
Lav to billeder.. admin.gif og normal.gif .. De vises alt efter om det er en admin eller normal bruger der poster..

ret i bunden at scriptet, hvor du finder:
  print '<img src="normal.gif">';
}
?>
til:
  print '<img src="normal.gif">';
  print "<br>";
}
?>

(der er blot tilføjet en print "<br>";)

.. ellers må du være lidt mere konkret mht hvad der er galt.. Men fix disse småting først, så er det måske også det du ønsker :)
Avatar billede warren27 Nybegynder
16. juni 2004 - 18:55 #16
Okay jeg skal nok være lidt mere konkret, overskriften på indlægget skal selvfølgelig være et link, og der skal også printes en dato på, men som jeg skriver i starten af spørgsmålet, skal det minde så meget som det http://www.1go.dk har lavet. Dog skal der ikke laves layout...
Avatar billede warren27 Nybegynder
16. juni 2004 - 18:56 #17
Jeg sagde jo at det var svært, og det burde nok være 400 point værd, men så meget kan man desværre ikke gi´...
Avatar billede dennismp Nybegynder
16. juni 2004 - 19:03 #18
prøv:

mysql_connect("MYSQLSERVER", "MYSQLBRUGER", "MYSQLPASSWORD") or die(mysql_error());
mysql_select_db("MYSQLDATABASE") or die(mysql_error());

$sql = "
SELECT t.post_id, t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_topics t, phpbb_users u
WHERE t.topic_poster = u.user_id
ORDER BY t.topic_time DESC";

$res = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
  print '<a href="bums/viewtopic.php?p=' . $row[0] . '#' . $row[0] . '">' . $row[1] . '</a>';
  print " posted af ";
  print $row[3];
  if( $row[4] == 1 )
    print '<img src="admin.gif">';
  else
    print '<img src="normal.gif">';
  print " den " . date('d-m-Y', $row[2] );
  print "<br>";
}
?>
Avatar billede warren27 Nybegynder
16. juni 2004 - 19:12 #19
Unknown column 't.post_id' in 'field list'

http://www.yalla.dk/123456789.php
Avatar billede dennismp Nybegynder
16. juni 2004 - 19:28 #20
Det ser da ud til at virke fint på linket? (kan ikke se fejlen)
Avatar billede warren27 Nybegynder
16. juni 2004 - 19:43 #21
?????, ik hos mig, hos mig skriver den:

Unknown column 't.post_id' in 'field list'
Avatar billede dennismp Nybegynder
16. juni 2004 - 19:49 #22
hvilken version af phpBB bruger du?
Avatar billede warren27 Nybegynder
16. juni 2004 - 19:51 #23
Jeg downloade en fil der hedder dette: phpBB2-2.0.8a.zip
Avatar billede warren27 Nybegynder
16. juni 2004 - 19:55 #24
Det er også noget være noget at phpbb2-gruppen ikke har lavet sådan en kode på forhånd...
Avatar billede dennismp Nybegynder
16. juni 2004 - 19:56 #25
SELECT p.post_id, t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_topics t, phpbb_users u, phpbb_posts p
WHERE t.topic_poster = u.user_id
AND p.topic_id = t.topic_id
ORDER BY t.topic_time DESC
Avatar billede dennismp Nybegynder
16. juni 2004 - 19:56 #26
hov vent
Avatar billede dennismp Nybegynder
16. juni 2004 - 19:58 #27
SELECT t.topic_last_post_id, t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_topics t, phpbb_users u
WHERE t.topic_poster = u.user_id
ORDER BY t.topic_time DESC
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:00 #28
ARGH Forkert vindue :) .. Beklager :)
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:02 #29
Øhhh, skal jeg bruge nogen af oplysningerne ??? Eller var det hele en fejl ???
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:08 #30
Ja. Jeg fik byttet rundt på to vinduer..

Anyway;

Prøv at erstatte:
$sql = "
SELECT t.post_id, t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_topics t, phpbb_users u
WHERE t.topic_poster = u.user_id
ORDER BY t.topic_time DESC";

med:
$sql = "
SELECT p.post_id, t.topic_title, p.post_time, u.username, u.user_level
FROM phpbb_posts p, phpbb_topics t
LEFT JOIN phpbb_users u ON ( p.poster_id = u.user_id )
WHERE t.topic_id = p.post_id
ORDER BY t.post_time DESC ";
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:12 #31
Det har jeg så gjort nu
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:14 #32
Hvis det kan hjælpe dog så sender jeg den kode som jeg brugere på min forside...


<?php
    $server = "xxx"; // server adresse
    $bruger = "xxx"; // database brugernavn
    $kodeord = "xxx"; // database password
    $database = "xxx"; // database navn
   
  if (!mysql_connect("$server","$bruger","$kodeord")) {
    echo "Kunne ikke oprette en forbindelse til MySQL.";
  }

  if(!mysql_select_db("$database")) {
    echo "Kunne ikke vælge databasen: $database";
  }
   
    $resultat = mysql_query("select topic_id, topic_title, topic_poster, topic_time from phpbb_topics order by topic_time desc limit 0, 5");
   
    while ($raekke = mysql_fetch_array($resultat)) {

    //Find bruger
    $bruger = mysql_query("select username from phpbb_users where user_id='".$raekke['topic_poster']."'");
    extract(mysql_fetch_array($bruger));
   
  echo "<a href=\"bums/viewtopic.php?t=".$raekke['topic_id']."\">".$raekke['topic_title']."</a> Postet af $username<br />";
}
?>
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:15 #33
for f... da.. Det går da ellers ret godt for mig :-)..

prøv:
$sql = "
SELECT p.post_id, t.topic_title, p.post_time, u.username, u.user_level
FROM phpbb_posts p, phpbb_topics t
LEFT JOIN phpbb_users u ON ( p.poster_id = u.user_id )
WHERE t.topic_id = p.post_id
ORDER BY p.post_time DESC ";

.. forresten hvor mange posts skal der vises på den side? de sidste 10 ? 20?
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:16 #34
Den virker, men der mangler dato, og brugere billeder, du ved de giffer, prøv at se om du kan flet lortet ind i koden... Så får du 200 points
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:17 #35
er du ligeglad med det grafik? (så man kan se om det er en admin eller ej?) ?
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:21 #36
Nu ser det pænt ud, men hvor er de andre indlæg, der er kun mig, der skal være 2 til
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:25 #37
og en anden ting, det er ikke mig der har posted "tidstester" der er nemlig webweaver.dk
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:26 #38
Prøv med:
<?php
$sql = "
SELECT t.topic_id, t.topic_title, t.topic_time, u.username, u.user_level
FROM phpbb_posts p, phpbb_topics t
LEFT JOIN phpbb_users u ON ( p.poster_id = u.user_id )
WHERE t.topic_id = p.post_id
ORDER BY p.post_time DESC  LIMIT 5";

$res = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
  print '<a href="bums/viewtopic.php?t=' . $row[0] . '#' . $row[0] . '">' . $row[1] . '</a>';
  print " posted af ";
  print $row[3];
  if( $row[4] == 1 )
    print '<img src="admin.gif">';
  else
    print '<img src="normal.gif">';
  print " den " . date('d-m-Y H:i:s', $row[2] );
  print "<br>";
}
?>
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:28 #39
linksne gå også ind på et forkert emne... Så der er noget at arbejde med endnu, jeg håber ikke jeg giver dig grå hår, men tag det som en øvelse i at programmere...
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:29 #40
Det er skam ikke det at programmerer.. Det er mere at hitte rede i hvordan phpbb gemmer sit skidt. Med 31 tabeller er det ikke helt åbenlyst hvor man skal hente hvad fra..
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:31 #41
Ingen forskel at se, desværre...
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:31 #42
Nej det kan jeg godt se...
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:36 #43
Jeg prøver lige at lave en forum selv og lave noget testdata ellers bliver vi aldrig færdige :)
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:38 #44
Skal avatars vises?
Skal der være et et grafik der viser om man er admin eller ej?
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:39 #45
okay, skal vi så ses igen imorgen, det er vel også nok for idag !
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:40 #46
Ja, det skal der være !
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:42 #47
De forskellige infomationer må meget gerne ligge i en tabel, så det ser lidt pænere ud.
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:43 #48
Jeg opgiver ikke endnu :)
Avatar billede warren27 Nybegynder
16. juni 2004 - 20:50 #49
Jeg har siddet og leget lidt selv: http://www.yalla.dk/kode.php
Avatar billede dennismp Nybegynder
16. juni 2004 - 20:57 #50
Prøv:

<table border=0>
<?php
mysql_connect(SERVER,BRUGER,PASSWORLD) or die(mysql_error());
mysql_select_db(DATABASE) or die(mysql_error());

$sql = "
SELECT t.topic_id, t.topic_title, p.post_time, u.username, u.user_level, u.user_avatar, u.user_avatar_type
FROM phpbb_posts p, phpbb_topics t
LEFT JOIN phpbb_users u ON ( p.poster_id = u.user_id )
WHERE t.topic_id = p.topic_id
ORDER BY p.post_time DESC  LIMIT 10";
$forumurl = '/bums/';

$res = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
    print '<tr>';

    // Title
    print '<td><a href="' . $forumurl . 'viewtopic.php?t=' . $row[0] . '#' . $row[0] . '">' . $row[1] . '</a></td>';

    # User avatar
    print "<td>$row[3]</td>";

    # Avatar
    print "<td>";
    switch($row[6]) {
        case 0:
            // no avatar
            break;
        case 1:
            print '<img src="'.$forumurl.'images/avatars/'.$row[5].'" border=0>';
            break;
        case 2:
            print '<img src="'.$row[5].'" border=0>';
            break;
    }
    print "</td>";
   

    # Access Level
    print "<td>";
    if( $row[4] == 1 )
        print '<img src="admin.gif">';
    else
        print '<img src="normal.gif">';
    print "</td>";

    # Time
    print "<td>" . date('d-m-Y H:i:s', $row[2] ) . '</td>';
   
    print "</tr>";
}
?>
</table>
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:11 #51
Meget tæt på at være perfekt !!!!
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:14 #52
Nej, avatar skal ikke være med alligevel !, det er godt nok med iconerne, men jeg skal bare finde nogen andre billeder, der passer bedre ;-)
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:19 #53
Sorry, jeg fortryder avatar, men det ser bare dumt ud ik ???
Avatar billede dennismp Nybegynder
16. juni 2004 - 21:21 #54
Du fjerner / udkommentér bare alt fra
#avatar

indtil
# Access Level
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:24 #55
ok !

Der er 2 ting jeg vil ha´ rettet !

1. Det skal kun være selve emnet der skal trækkes ud fra DB...
2. Kan du lave en slags <hr> så man får et bedre overblik ???
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:26 #56
en <hr> mellem hvert indlæg... Jeg håber du kan se hvad jeg mener i mit ønske nummer 1
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:34 #57
Jeg fandt selv ud af det med <hr> men hvis du kan køre den helt ud til hvor dato/tiden stopper så er det et kæmpe plus !!!
Avatar billede dennismp Nybegynder
16. juni 2004 - 21:38 #58
1'eren:

prøv:
$sql =
"SELECT t.topic_id, t.topic_title, p.post_time, u.username, u.user_level, u.user_avatar, u.user_avatar_type
FROM phpbb_posts p, phpbb_topics t
LEFT JOIN phpbb_users u ON ( p.poster_id = u.user_id )
WHERE t.topic_id = p.topic_id
ORDER BY p.post_time DESC  LIMIT 10";

2: efter
print "</tr>";
tilføjer du:
print "<tr><td colspan=5><hr></td></tr>";
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:43 #59
Uha, jeg tør næsten ikke at pille ved koden nu heheh
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:49 #60
nummer 1 virker ikke, nummer 2 er i vinkel !!!
Avatar billede dennismp Nybegynder
16. juni 2004 - 21:49 #61
jeg kan se du prøver alligevel :) Jeg skal lige have lidt luft - er tilbage om en halv time..
Avatar billede dennismp Nybegynder
16. juni 2004 - 21:49 #62
virker ikke? ... hvordan virker ikke?
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:53 #63
Meningen er at den kun skal udtrække selve emnet ! og som det er nu udtrækker den også besvarelsene !!!
Avatar billede warren27 Nybegynder
16. juni 2004 - 21:55 #64
Som du kan se på http://www.yalla.dk er der kun skrevet 4 indlæg i forumet, og ikke 10 som der er i din kode, det er fordi den også regner svarne med, jeg tror bare at det er en linje der skal slettes, men jeg rør ikke ved noget jeg ikke har forstand på !
Avatar billede dennismp Nybegynder
16. juni 2004 - 22:53 #65
prøv:

$sql =
"SELECT t.topic_id, t.topic_title, t.topic_time, u.username, u.user_level, u.user_avatar, u.user_avatar_type
FROM phpbb_topics t
LEFT JOIN phpbb_users u ON ( t.topic_poster = u.user_id )
ORDER BY t.topic_time DESC  LIMIT 10";
Avatar billede warren27 Nybegynder
16. juni 2004 - 22:57 #66
Jubiibbuuuuuu, nu virker det, hvordan giver jeg dig point ??? - er ikke så tit herinde...
Avatar billede warren27 Nybegynder
16. juni 2004 - 23:00 #67
Jeg håber at du har lært meget idag, og jeg er glad for at du har haft sådan en god fighter vilje. Har du en hjemmeside, for så kan jeg evt også skrive at "this is made by www.???.dk"
Avatar billede dennismp Nybegynder
16. juni 2004 - 23:17 #68
Jeg skal lave et svar før du kan give mig points - det er hermed gjort :).

Jeg har flere sider, men hvis du gerne vil linke, så vil jeg ikke have noget imod at det blev til http://phpbog.dk (er slet ikke færdig.). Jeg har ikke logo eller noget endnu. Min personlige side er http://dennis.moellegaard.dk
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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