Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Det havde faktisk været smartere med en tabel mere: | newsId | categoryId |
Så hvis en nyhed er en del af tre kategorier ville du have tre entries for den nyhed, og hvis en anden kun er med i to kategorier vil du selvfølgelig have to entries:
<?php if(isset($_GET["cat"])) $sql = "SELECT a.* FROM r_news a, linkedCategories b WHERE a.newsId = b.newsId and b.categoryId = ".$_GET["cat"]." ORDER BY id DESC limit ".$s.", ".$pr_side; else $sql = "SELECT * FROM r_news ORDER BY id DESC limit ".$s.", ".$pr_side;
$get_news = mysql_query($sql) or die(mysql_error());
?>
Synes godt om
Slettet bruger
11. juni 2009 - 14:42#2
Okay. Jeg har brug for lidt mere hjælp end blot det.
Se, problemet er at det ikke kun er tre kategorier hver nyhed kan få, de kan få så "uendeligt".
Så jeg har brug for en anden løsning end en der kun bygger på tre kategorier. Jeg har fusket mig frem til det her nu:
CREATE TABLE `r_ncategory` ( `newsid` varchar(225) NOT NULL, `categoryid` varchar(225) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
$get_ncategory = mysql_query("SELECT * FROM r_ncategory WHERE categoryid LIKE '$show_category[id]'") or die(mysql_error()); while($show_ncategory = mysql_fetch_array($get_ncategory)) {
$cat = "WHERE id = '$show_ncategory[newsid]'";
} }
$get_news = mysql_query("SELECT * FROM r_news $cat ORDER BY id DESC limit $s,$pr_side") or die(mysql_error());
Men problemet er at den kun henter en nyhed, hvis der er den finder en kategori, og hvis den ikke finder nogen så lister den alle. Har du andre forslag end lige det ovenfor, fordi jeg forstod sådan set ikke så forfærdeligt meget af det.
Din tabel r_ncategory er i princippet det, men den ekstra tabel, som jeg foreslog.
Men jeg forstår ikke hvad der var i vejen med den kode jeg foreslog? Hvis det er fordi ikke forstår hvordan koden skal implementeres, så skal jeg se mere kode end det du viser der, som tabelstrukturen over dine nyheder og den kildekode der viser dine nyheder.
Den kode du selv er kommet frem til er vildt uforståelig.
Synes godt om
Slettet bruger
11. juni 2009 - 15:04#4
Okay, jeg har smidt din kode ind.
if(isset($_GET["cat"])) { $sql = "SELECT a.* FROM r_news a, r_ncategory b WHERE a.newsid = b.newsid and b.categoryid = ".$_GET["cat"]." ORDER BY id DESC limit ".$s.", ".$pr_side; }else{ $sql = "SELECT * FROM r_news ORDER BY id DESC limit ".$s.", ".$pr_side; }
$get_news = mysql_query($sql) or die(mysql_error()); while($show_news = mysql_fetch_array($get_news)) {
Men når jeg søger efter kategori, så får jeg en fejl: Unknown column 'a.newsid' in 'where clause'
if(isset($_GET["cat"])) $sql = "SELECT a.* FROM r_news a, r_ncategory b WHERE a.id = b.newsid and b.categoryid = ".$_GET["cat"]." ORDER BY id DESC limit ".$s.", ".$pr_side; else $sql = "SELECT * FROM r_news ORDER BY id DESC limit ".$s.", ".$pr_side;
Synes godt om
Slettet bruger
11. juni 2009 - 15:18#6
Okay.
Det virker næsten nu. Det eneste problem er at det kun virker med ID.
?cat=2 virker - men ?cat=spil virker ikke.
Hvorfor virker ikke det her:
$sql = "SELECT a.* FROM r_news a, r_ncategory b, r_category c WHERE a.id = b.newsid and b.categoryid = c.id and c.name = ".$_GET["cat"]." ORDER BY id DESC limit ".$s.", ".$pr_side;
Hvis du gerne vil have den til at virke med kategori navnet istedet, skal du gøre således: if(isset($_GET["cat"])) $sql = "SELECT a.* FROM r_news a, r_ncategory b, r_category c WHERE a.id = b.newsid AND b.categoryid = c.id AND c.name='".$_GET["cat"]."' ORDER BY id DESC limit ".$s.", ".$pr_side; else $sql = "SELECT * FROM r_news ORDER BY id DESC limit ".$s.", ".$pr_side;
Jeg ved ikke hvorfor din sql sætning ikke virker, det må dit script jo kunne fortælle dig?
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.