Läsa in tabell

Frågor kring MODdar (modifikationer) för phpBB 3 (3.0.0 eller senare).

Moderatorer: Supportgrupp, Moderatorgrupp

Skriv svar
Nom Anor
Medlem
Medlem
Inlägg: 14
Blev medlem: 2008-10-10 14:28
Svar: 0

Läsa in tabell

Inlägg av Nom Anor »

Mitt forum ligger i en MySQL-databas. I samma databas finns en tabell med nyheter som jag använder för en nyhetssida (som för närvarande inte har något med forumet att göra).
Nu skulle jag vilja göra så att några av dessa nyheter listas i forumets footer. Men om jag lägger in en vanlig databaskoppling rakt upp och ner i footern (så som jag brukar göra i en vanlig php-sida) så händer inte ett skvatt.
Vad är det som är fel, och finns det något smidigt sätt att få det att fungera?
Användarens profilbild
Kjell
Hedersmedlem
Hedersmedlem
Inlägg: 4510
Blev medlem: 2006-11-11 23:35
Svar: 0

Re: Läsa in tabell

Inlägg av Kjell »

Har du ändrat ACP -> Säkerhetsinställningar -> Tillåt php i mallar: JA
/Kjelle KonsultPoolen * Facebook * Twitter * MODx Verkstan
Brukar sova lite efter 29:e timman och Ingen support via PM!
Peetra
Hedersmedlem
Hedersmedlem
Inlägg: 3281
Blev medlem: 2007-06-09 22:38
Svar: 0

Re: Läsa in tabell

Inlägg av Peetra »

Sen ska man komma ihåg att rensa cachen (I ACP) och uppdatera tema, stil, efter ändringar i html-filer.
Nom Anor
Medlem
Medlem
Inlägg: 14
Blev medlem: 2008-10-10 14:28
Svar: 0

Re: Läsa in tabell

Inlägg av Nom Anor »

Hmm... det lät verkligen som en bra idé. Har ändrat Tillåt php i mallar nu, och tömt cachen (flera gånger för att vara på säkra sidan :roll: ). Fast det fungerar fortfarande inte. Funderar på om det har att göra med att forumets alla tabeller har prefixet phpbb3_ som inte min nyhetstabell har..?
Peetra
Hedersmedlem
Hedersmedlem
Inlägg: 3281
Blev medlem: 2007-06-09 22:38
Svar: 0

Re: Läsa in tabell

Inlägg av Peetra »

Det tycker jag inte borde påverka. Men det är absolut värt att ladda ner en kopia, ändra prefixet, ladda upp en kopia med forumets prefix och testa. :)

Får du nånting alls att synas i overall_footer? Testa med at skriva in bara nån text tex. test istället för den kod du använde röfr att försöka hämta nyheterna. Om den syns, så kan man ju utesluta fel i visningen iallafall. :)
Användarens profilbild
Kjell
Hedersmedlem
Hedersmedlem
Inlägg: 4510
Blev medlem: 2006-11-11 23:35
Svar: 0

Re: Läsa in tabell

Inlägg av Kjell »

Nej, det har inget med prefixen att göra, den används bara internt i phpBB.

Prova med att ha PRINT eller ECHO så att du ser att du får ut något på skärmen.

För att inkludera php i en html fil så ska det se ut så här.
<!-- PHP -->
din kod...
<!-- ENDPHP -->
/Kjelle KonsultPoolen * Facebook * Twitter * MODx Verkstan
Brukar sova lite efter 29:e timman och Ingen support via PM!
Nom Anor
Medlem
Medlem
Inlägg: 14
Blev medlem: 2008-10-10 14:28
Svar: 0

Re: Läsa in tabell

Inlägg av Nom Anor »

Det går åt rätt håll. Nu känner den i alla fall av att det finns en php-funktion. Den fungerar dock inte riktigt korrekt. Den ska läsa in ID, description och title vilket jag är övertygad om att den gör, men jag vet inte hur jag ska få den att skriva ut det.
Koden ser lite förenklat ut så här:

Kod: Markera allt

<!-- PHP -->
  $link = @mysql_connect ("server", "username", "password");
  if ($link && @mysql_select_db ("database"))
  {
    $result = @mysql_query ("SELECT ID, description, title FROM cont_news WHERE ID != 1 ORDER BY ID DESC LIMIT 4");

      $row = @mysql_fetch_row ($result);

    if (!$row)
    {
<!-- ENDPHP -->
Inga nyheter kunde hittas i databasen. Var god kontakta webmastern om problemet kvarstår.
<!-- PHP -->
    }
    else
    {
      @setlocale (LC_TIME, "swedish");
      while ($row)
      {
<!-- ENDPHP -->
    <a href="nyhet.php?id=<?= $row[0] ?>" title="<?= $row[2] ?>"><?= $row[1] ?></a>
<!-- PHP -->
        $row = @mysql_fetch_row ($result);
      }
    }

      @mysql_close ($link);
  }
  else
  {
<!-- ENDPHP -->
Uppkopplingen mot databasen misslyckades. Var god kontakta webmastern om problemet kvarstår.
<!-- PHP -->
  }
<!-- ENDPHP -->
Det verkar vara just det som ser ut så här som skapar problem:

Kod: Markera allt

<?= $row[0] ?>
Testade att skriva följande men fick då något felmeddelande om =-tecknet.

Kod: Markera allt

<!-- PHP -->= $row[0] <!-- ENDPHP -->
Användarens profilbild
Kjell
Hedersmedlem
Hedersmedlem
Inlägg: 4510
Blev medlem: 2006-11-11 23:35
Svar: 0

Re: Läsa in tabell

Inlägg av Kjell »

Hur ska du få den koden att fungera, du startar php och avslutar, men sedan ställer du frågor i en ny php sekvens från en tidigare sekvens som redan är avslutad...

Kör hela koden innanför <!-- PHP --> <!-- ENDPHP --> och kan då köra echo och print från den.
echo " Inga nyheter kunde hittas i databasen. Var god kontakta webmastern om problemet kvarstår. ";
/Kjelle KonsultPoolen * Facebook * Twitter * MODx Verkstan
Brukar sova lite efter 29:e timman och Ingen support via PM!
Nom Anor
Medlem
Medlem
Inlägg: 14
Blev medlem: 2008-10-10 14:28
Svar: 0

Re: Läsa in tabell

Inlägg av Nom Anor »

Hmm. Ja det är klart... Det kanske är onödigt krångligt. Men även om jag gör på ditt sätt så fungerar det fortfarande inte (blir samma fel). Koden fungerar ju utmärkt på vanliga php-sidor (utanför forumet) så jag ser inget hinder till att det inte ska kunna göra det även på forumet.

Postar koden igen, nu när den är lite finare:

Kod: Markera allt

<!-- PHP -->
                      $link = @mysql_connect ("server", "username", "password");
                      if ($link && @mysql_select_db ("database"))
                      {
                        $result = @mysql_query ("SELECT ID, title, description FROM cont_news WHERE ID != 1 ORDER BY ID DESC LIMIT 4");

                          $row = @mysql_fetch_row ($result);

                        if (!$row)
                        {
                          echo 'Inga nyheter kunde hittas i databasen. Var god kontakta webmastern om problemet kvarstår.'; 
                        }
                        else
                        {
                          @setlocale (LC_TIME, "swedish");
                          while ($row)
                          {
                            echo "<a href='nyhet.php?id=<?= $row[0] ?>' title='<?= $row[2] ?>'><?= $row[1] ?></a>";

                            $row = @mysql_fetch_row ($result);
                          }
                        }

                          @mysql_close ($link);
                      }
                      else
                      {
                        echo "Uppkopplingen mot databasen misslyckades. Var god kontakta webmastern om problemet kvarstår.";
                      }
<!-- ENDPHP -->
Det är följande kodsnutt som fortfarande krånglar. Meningen är ju att den ska ta <?= $row[0] ?>, <?= $row[1] ?> och <?= $row[2] ?> och ersätta med det som står i kolumnerna ID, title och description i databasen.

Kod: Markera allt

echo "<a href='nyhet.php?id=<?= $row[0] ?>' title='<?= $row[2] ?>'><?= $row[1] ?></a>";
Det jag vill ha ut är en länk där url:n ser ut ungefär som följande (där siffran är hämtad från databasen):

Kod: Markera allt

/nyhet.php?id=291
Men jag får bara ut:

Kod: Markera allt

/nyhet.php?id=
Användarens profilbild
Kjell
Hedersmedlem
Hedersmedlem
Inlägg: 4510
Blev medlem: 2006-11-11 23:35
Svar: 0

Re: Läsa in tabell

Inlägg av Kjell »

Möjligen

$rowname0 = $row[0]
$rowname1 = $row[1]
$rowname2 = $row[2]

echo '<a href="nyhet.php?id=$rowname0" title="$rowname2" > $rowname1</a> ';
/Kjelle KonsultPoolen * Facebook * Twitter * MODx Verkstan
Brukar sova lite efter 29:e timman och Ingen support via PM!
Nom Anor
Medlem
Medlem
Inlägg: 14
Blev medlem: 2008-10-10 14:28
Svar: 0

Re: Läsa in tabell

Inlägg av Nom Anor »

Gjorde följande:

Kod: Markera allt

$rowname0 = $row[0];
$rowname1 = $row[1];
$rowname2 = $row[2];
echo "<a href='/nyheter/nyhet.php?id=" . $rowname0 . "' title='" . $rowname2 . "'>" .  $rowname1 . "</a>";
Vet inte om koden är helt ideal (är inget kodningsgeni). Men den fungerar som jag vill och jag är väldigt nöjd. Stort tack för hjälpen!
Användarens profilbild
Kjell
Hedersmedlem
Hedersmedlem
Inlägg: 4510
Blev medlem: 2006-11-11 23:35
Svar: 0

Re: Läsa in tabell

Inlägg av Kjell »

Bra, det viktigaste var att få bort <?= kod ?> då den inte vet vad som ska göras.
/Kjelle KonsultPoolen * Facebook * Twitter * MODx Verkstan
Brukar sova lite efter 29:e timman och Ingen support via PM!
Skriv svar

Vilka är online

Användare som besöker denna kategori: 1 och 0 gäst