Avatar billede super_glenn Nybegynder
08. november 2006 - 17:17 Der er 13 kommentarer og
1 løsning

Nybegynder spørgsmål

Hej expeter

Jeg har fundet et php nyhedsystem og det virker smukt, MEN jeg vil gerne have at man kan poste nyheder i forskellige kategorier og jeg ved ikke hvordan jeg i min MySQL tabel så kan gøre det sådan at man kan vælge mellem 5-6 i forvejen givne kategorier, hvis i forstår hvad jeg mener. Tabellen ser sådan ud pt:

CREATE TABLE news (
  id int(11) NOT NULL auto_increment,
  title varchar(100) NOT NULL default '',
  author varchar(60) NOT NULL default '',
  date datetime NOT NULL default '0000-00-00 00:00:00',
  synopsis text NOT NULL,
  text text NOT NULL,
  image varchar(100) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede udvikler Nybegynder
08. november 2006 - 17:42 #1
Du skal lave 5-6 tabeller så. En for hver kategori.. tabellen skal så indeholde alle rækker ligesom den du har skrevet foroven. Tabellerne skal hedder kategori1, kategori2, kategori3 osv.

Så skal du gøre følgene på indsæt siden - altså der hvor du skriver dine nyheder:

<form action="" method="POST">
<select size="1" name="menu">
    <option name="1">punkt 1</option>
    <option name="2">punkt 2</option>
    <option name="3">punkt 3</option>
</select>
</form>

<?php
$database = $_POST['kategori'];
mysql_query("INSERT INTO $database (title, author, bla, bla) VALUES ('$var1', '$var2', '$bla', '$bla')") or die(mysql_error());
?>
Avatar billede udvikler Nybegynder
08. november 2006 - 17:43 #2
<select size="1" name="menu"> skal lige ændres til name="kategori"
Avatar billede dadane Novice
08. november 2006 - 17:53 #3
Nej, - der skal vel blot tilføjes et felt (kategori) til tabellen:

CREATE TABLE news (
  id int(11) NOT NULL auto_increment,
  title varchar(100) NOT NULL default '',
  author varchar(60) NOT NULL default '',
  date datetime NOT NULL default '0000-00-00 00:00:00',
  synopsis text NOT NULL,
  kategori text NOT NULL,
  text text NOT NULL,
  image varchar(100) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Og dit eksempel kunne så blive til:

<form action="" method="POST">
<select size="1" name="menu">
    <option name="1">punkt 1</option>
    <option name="2">punkt 2</option>
    <option name="3">punkt 3</option>
</select>
</form>

<?php
mysql_query("INSERT INTO news (title, author, kategori, bla, bla) VALUES ('$var1', '$var2', '$_POST['kategori']' ,'$bla', '$bla')") or die(mysql_error());
?>
Avatar billede dadane Novice
08. november 2006 - 17:55 #4
Hvis du har lyst kan du så ved lave en anden tabel med alle kategorierne:

CREATE TABLE kategorier {
  id int(11) NOT NULL auto_increment,
  title varchar(50) NOT NULL default ''
}

Og så evt. de options der står ovenfor blive læst dynamisk fra databasen
Avatar billede coderdk Praktikant
08. november 2006 - 18:01 #5
udvikler, Det er ikke en særlig effektiv måde. Man skal blot normalisere datastrukturen.
dadane, har fat i det rigtige, men hvis man skal have flere kategorier til hver post, så laver du en mange-til-mange-relation (en nyhed kan have flere kategorier, og en kategori kan tilhøre flere nyheder)

"news" tabellen kan beholdes som den er, og der tilføjes to nye tabeller:

CREATE TABLE news_category (
  newsid int(11) NOT NULL,
  catid int(11) NOT NULL,
  PRIMARY KEY (newsid,catid)
) TYPE=MyISAM;

CREATE TABLE category (
  catid int(11) NOT NULL auto_increment,
  catname varchar(100) NOT NULL default '',
  PRIMARY KEY  (catid)
) TYPE=MyISAM;

Så opretter man blot nogle kategorier, og tilknytter dem vha. news_category
Avatar billede udvikler Nybegynder
08. november 2006 - 18:04 #6
Aah, ja. Det er fuldstændig korrekt. Men jeg lærer af mine fejl. Tak for det coderdk og dadane.

- Har forresten selv brugt denne funktion på min hjemmeside, ved ikke lige hvad jeg tænkte da jeg kodede dette.
Avatar billede dadane Novice
08. november 2006 - 18:12 #7
Er du sikker på han vil have flere kategorier til den samme post? Hvis han vil har du ret, - men jeg synes det er mere logisk uden.
Avatar billede udvikler Nybegynder
08. november 2006 - 18:17 #8
Tjaa det synes jeg egentlig også, men der er sikkert en grund - hvem ved :)
Avatar billede coderdk Praktikant
08. november 2006 - 18:28 #9
dadane, Næh, det lader til at han vil have én kategori pr. nyhed, men jeg ridsede bare muligheden op :) Det er nu dog meget normalt at have flere kategorier for en nyhed...
Avatar billede super_glenn Nybegynder
08. november 2006 - 19:07 #10
Hej tak for de mange og hurtige svar :)
Oprindeligt havde jeg bare tænkt at én nyhed blev tilknyttet én kategori, men det coderdk snakker om er jo egentlig meget smart så bliver det mere "tag" agtigt, hvilket kunne være meget lækkert.
Jeg vender tilbage når jeg har rodet lidt med det og set om jeg kan få det til at fungere som ønsket.
Avatar billede super_glenn Nybegynder
08. november 2006 - 20:07 #11
Hey hey igen ja jeg fik det til at virke med dadanes metode jeg kunne ikke helt finde ud af det med flere muligheder som coderdk foreslog, men anyways læg et svar for point
Avatar billede coderdk Praktikant
08. november 2006 - 22:10 #12
Det må være dadane's :)
Avatar billede dadane Novice
09. november 2006 - 06:27 #13
Takker så :)
Avatar billede dadane Novice
09. november 2006 - 06:27 #14
Øh, - prøver lige igen.

Takker så :)
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