Avatar billede linuxchristian Nybegynder
29. december 2004 - 13:41 Der er 7 kommentarer og
1 løsning

Multi Posting af MySQL data.

Jeg har bygget en mysql database, hvor i jeg bla. har 2 tabler: sn_post og sn_category.
Jeg har en side i php hvor den spytter dataen fra de to tabeller ud, problemet er bare nå når den gør det viser den hver indhold 5 gange og jeg vil kun havde en til at gøre det 1.





Database opbygning:

$cat_tablename = 'sn_category';
$cat_table_def = "intCatID mediumint(10) NOT NULL AUTO_INCREMENT,";
$cat_table_def .= "txtCatTitle varchar(30) NOT NULL,";
$cat_table_def .= "intCatSort varchar(15) NOT NULL,";
$cat_table_def .= "txtCatDescription varchar(50) NOT NULL,";
$cat_table_def .= "PRIMARY KEY (intCatID)";

$post_tablename = 'sn_post';
$post_table_def = "intPostID mediumint(10) NOT NULL AUTO_INCREMENT,";
$post_table_def .= "txtPostTitle varchar(30) NOT NULL,";
$post_table_def .= "dtePostDate datetime NOT NULL,";
$post_table_def .= "intPostBy varchar(30) NOT NULL,";
$post_table_def .= "memoPostContents text NOT NULL,";
$post_table_def .= "PRIMARY KEY (intPostID)";




SQL kode over den recordset jeg bruger til at finde dataen:

SELECT *
FROM sn_post, sn_category
WHERE intCatSort = 2
ORDER BY dtePostDate DESC

(hvis jeg fjerner "WHERE intCatSort = 2" er der ingen problemer, men på siden vil jeg kun vise de posts der har en intCatSort på 2)




PHP kode:

<?php require_once('../Connections/myconn.php'); ?>
<?php require_once('../Connections/myconn.php'); ?>
<?php
$maxRows_rsPost = 5;
$pageNum_rsPost = 0;
if (isset($_GET['pageNum_rsPost'])) {
  $pageNum_rsPost = $_GET['pageNum_rsPost'];
}
$startRow_rsPost = $pageNum_rsPost * $maxRows_rsPost;

mysql_select_db($database_myconn, $myconn);
$query_rsPost = "SELECT * FROM sn_post, sn_category WHERE intCatSort = 2 ORDER BY dtePostDate DESC";
$query_limit_rsPost = sprintf("%s LIMIT %d, %d", $query_rsPost, $startRow_rsPost, $maxRows_rsPost);
$rsPost = mysql_query($query_limit_rsPost, $myconn) or die(mysql_error());
$row_rsPost = mysql_fetch_assoc($rsPost);

if (isset($_GET['totalRows_rsPost'])) {
  $totalRows_rsPost = $_GET['totalRows_rsPost'];
} else {
  $all_rsPost = mysql_query($query_rsPost);
  $totalRows_rsPost = mysql_num_rows($all_rsPost);
}
$totalPages_rsPost = ceil($totalRows_rsPost/$maxRows_rsPost)-1;





Og så lige lidt Html kode over der hvor den spytter dataen ud:

<table width="700" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td scope="row" align="center"><p>
        <table>
          <tr>
            <td>txtPostTitle</td>
            <td>dtePostDate</td>
            <td>txtCatTitle</td>
            </tr>
          <?php do { ?>
          <tr>
            <td><?php echo $row_rsPost['txtPostTitle']; ?></td>
            <td><?php echo $row_rsPost['dtePostDate']; ?></td>
            <td><?php echo $row_rsPost['txtCatTitle']; ?></td>
            </tr>
          <?php } while ($row_rsPost = mysql_fetch_assoc($rsPost)); ?>
        </table>

På forhånd tak
  LinuxChristian
Avatar billede gertp Nybegynder
29. december 2004 - 13:46 #1
prøv evt at ændre den her $maxRows_rsPost = 5; til $maxRows_rsPost = 1;
Avatar billede linuxchristian Nybegynder
29. december 2004 - 13:47 #2
nej fordi den skal vise de 5 nyeste posts i html'en.
Avatar billede linuxchristian Nybegynder
29. december 2004 - 13:52 #3
Jeg tror at jeg har fundet ud af det. Laver en ny table, hvori jeg gemmer de data der skal ligge der.

Men holder aligevel dette spørgsmål åbent, hvis det ikke lykkes.
Avatar billede arne_v Ekspert
29. december 2004 - 13:55 #4
Så vidt jeg kan se, så mangler du en en JOIN condition - og en foreign key i en
af tabellerne at bruge til det.
Avatar billede linuxchristian Nybegynder
29. december 2004 - 13:58 #5
foreign key? hvordan laver jeg den?
Avatar billede arne_v Ekspert
29. december 2004 - 14:20 #6
Hvis nu sn_post tabellen havde et intCatID felt som pegede på sn_category intCatID,
så kunne du:

SELECT *
FROM sn_post, sn_category
WHERE sn_post.intCatID=sn_category.intCatID AND intCatSort = 2
ORDER BY dtePostDate DESC
Avatar billede linuxchristian Nybegynder
29. december 2004 - 14:25 #7
Ja nu virker det sku'
Skriv lige et svar..så får du dine points.
Avatar billede arne_v Ekspert
29. december 2004 - 14:33 #8
ok
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
Computerworld tilbyder specialiserede kurser i database-management

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