Avatar billede jd Nybegynder
17. november 2000 - 17:26 Der er 25 kommentarer og
1 løsning

list under ukendt kategori?

Hejsa...

Jeg har en artikel-database i php/mysql.
Når en artikel gemmes, skal man indtaste en kategori.

Mit spørgsmål går så på, hvordan jeg laver en oversigt, der finder ud af hvilke kategorier der er, og lister 5 nyeste overskrifter fra den pågældende kategori under...?
Altså, laver en liste nedad, med alle kategorierne, med 5 artikel-overskrifter under hver.

/Jon@z
Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 17:29 #1
kan du ikke bruge en for-løkke ligesom et forum.

med at den laver kategorien først også bagefter de artikler der er.
Avatar billede jd Nybegynder
17. november 2000 - 17:32 #2
jo... nu vil du jo til at belære mig med en løkke som jeg har lavet til dig! :) Nææ nej, den går ikke!

Problemet er at jeg jo, i modsætning til dit forum, ikke har noget \'hoved-indlæg\'! Derfor kan jeg ikke lige se hvordan jeg skal gøre det...

/Jon@z
Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 17:40 #3
hvis du nu laver en type = \'k\' for kategori og en artikel med = \'a\' så skulle det da være som det jeg siger.

og jeg prøver heller ikke at belære dig, det er bare en ide
Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 17:40 #4
som jeg nok ville have prøvet
Avatar billede andreas Nybegynder
17. november 2000 - 17:42 #5
hvordan er din database bygget op...?? måske kan jeg hjælpe...
Avatar billede jd Nybegynder
17. november 2000 - 17:42 #6
jaja...idéen er såmænd god nok! Men hvis du tænker dig om, kan du så ikke se at kategorien nok står i samme row som artiklen?
fx.: id|headline|body|kategori (MEGET kort-fattet)

/Jon@z
Avatar billede jd Nybegynder
17. november 2000 - 17:45 #7
andreas-> Sådan:

id|forfatter|email|date|headline|body|kategori|pic_place|fil_type

Skal du også bruge felternes type?
Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 17:53 #8
kategorien kan da bare være hovedindlæget ( type = \'k\' )
Avatar billede jd Nybegynder
17. november 2000 - 18:23 #9
alt for besværligt og upraktisk!
Så skal jeg enten have éen tabel mere, eller lave en kolonne mere ved alle indlæg med navnet type...

Jeg VED at der kan laves smartere!

/Jon@z
Avatar billede andreas Nybegynder
17. november 2000 - 18:27 #10
hmm... kan du smide et eks ind hvor det ene er en kategori og den anden er en artikel..
Avatar billede jd Nybegynder
17. november 2000 - 18:31 #11
Hvad mener du?
Kategorien for den pågældende artikel gemmes i samme row som selve artiklen!
Avatar billede andreas Nybegynder
17. november 2000 - 18:36 #12
*gr* kan jeg ikke se det et sted eller sådan... jeg fatter ikke helt hvordan du har bygget det op... har du både lagt kategorierne og artiklerne i samme tabel...??
Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 18:52 #13
ja, hvis han har kategorier og artikler i en tabel, så er der jo ikke noget problem.
jeg tror det ville være nemmest at lave en kolonne mære som heder type
Avatar billede jd Nybegynder
17. november 2000 - 19:18 #14
emu-> din løsning duer ikke!

andreas->

hehe... jeg kan ikke se at det skulle være så svært at forstå, men tabellen er oprettet med dette:

CREATE TABLE artikler (
  id int(11) DEFAULT \'0\' NOT NULL auto_increment,
  forfatter varchar(60) DEFAULT \'0\' NOT NULL,
  email varchar(60) DEFAULT \'0\' NOT NULL,
  dato datetime DEFAULT \'0000-00-00 00:00:00\' NOT NULL,
  headline varchar(60) DEFAULT \'0\' NOT NULL,
  body text,
  kategori varchar(200),
  pic_place char(2) DEFAULT \'th\' NOT NULL,
  fil_type varchar(40),
  PRIMARY KEY (id)
);

og et indlæg ser fx. sådan ud:

1|Jonas Delfs|jonas@delfs.dk|2000-11-17 19:13:12|Dronning Ingrids død|Dronning Ingrid er død! -sur røv|KULTUR|th|gif

Når en skribent opretter en artikel, er der et text-felt hvori der skal indtastes en kategori...i dette tilfælde, KULTUR
Jeg kunne selvfølgelig lave en tabel kun til kategorier, men skal helst have det løst på den efterspurgte måde!

/Jon@z
Avatar billede lojmann Nybegynder
17. november 2000 - 19:26 #15
Kategori:
<select size=\"1\" name=\"username\">
<?
include(\"db_ind.inc\");
$result = mysql_query(\"SELECT kategori FROM artikler ORDER by kategori\");
while ($row = mysql_fetch_array($result))
{
extract($row);
print  \"<option value=\\\"\".$kategori.\"\\\">\".$kategori.\"</option>\";
}
?>
</select>

Kunne den ikke bruges, til at selecte de kategorier som der er?
Det kræver bare at de er der i databasen...
Ikke en optimal løsning, men en mulighed!
Avatar billede lojmann Nybegynder
17. november 2000 - 19:26 #16
<select size=\"1\" name=\"kategori\">

Sæ\'fø\'li ;)
Avatar billede lojmann Nybegynder
17. november 2000 - 19:27 #17
Det med de 5 nyeste, er jo bare SELECT * FROM debat ORDER by ID LIMIT 5

Avatar billede emulatorspil.dk Nybegynder
17. november 2000 - 19:32 #18
okay, så klare i det selv :)
Avatar billede jd Nybegynder
17. november 2000 - 19:38 #19
lojmann-> Det ved du jo godt at jeg selv kunne have skrevet! :)
Ja, på din måde får jeg en liste over alle kategorier, som ?<select>-box?, men problemet ligger jo i at den selv skal finde de forskellige kategorier, OG sætte 5 artikel-overskrifter under kategorierne hver især...
Avatar billede lojmann Nybegynder
17. november 2000 - 19:40 #20
Jamen, så bruge:

SELECT * FROM debat WHERE katagori = \'kultur\' ORDER by ID LIMIT 5

SELECT * FROM debat WHERE katagori = \'debat\' ORDER by ID LIMIT 5

osv...?
Avatar billede lojmann Nybegynder
17. november 2000 - 19:40 #21
brug, ever
Avatar billede jd Nybegynder
17. november 2000 - 21:46 #22
På vej op til det lokale supermarked efter slik :) fandt jeg en løsning....troede jeg :(
Det hedder selvfølgelig bare

$q=mysql_query(\"select kategori from artikler order by kategori\") or die(mysql_error());
while($r=mysql_fetch_array($q)){
echo $r[kategori}.\"<br>\";
$q2=mysql_query(\"select headline from artikler where kategori=\'$r[kategori]\' order by dato desc limit 0,5\") or die(mysql_error());
while($r2=mysql_fetch_array($q2)){
echo \"$r2[headline]<br>\";
}
}

med ovenstående, er det eneste problem jo at der er flere artikler med samme kategori, derfor vil den enkelte kategori jo komme til at stå flere steder!
For at undgå dette, kunne jeg jo sætte en $ med navnet på den pågældende kategori, og så checke hver gang løkken køres om den er blevet sat....MEN Det er vel et ret \'tung\' løsning...ikke?

/Jon@z
Avatar billede defrost Nybegynder
19. november 2000 - 15:18 #23
$q = mysql_query(\"select distinct kategori from artikler order by kategori\") or die(mysql_error());
while($r=mysql_fetch_array($q)) {
echo $r[\'kategori\'].\"<br>\";
$q2 = mysql_query(\"select headline from artikler where kategori=\'$r[kategori]\' order by dato desc limit 5\") or die(mysql_error());
while($r2=mysql_fetch_array($q2)) {
echo \"$r2[headline]<be>\":
}
}
Avatar billede defrost Nybegynder
19. november 2000 - 15:21 #24
Hvis du bruger mysql 3.23, kan du også kigge på \"create tempory table\" og kopiere dine kategorier derover med

insert into tmp_kategori (kategori) select distinct kategori from artikler order by kategori.

Derefter kan du lave en join mellem tmp_kategori og artikler, og til sidst droppe tabellen tmp_kategori.

Hvis du bruger create temporary table opnår du det, at kun nuværende tråd kan se denne tabel og andre tråde vil kunne oprette en tabel med samme navn, uden at data bliver blandet sammmen.

Hvis du bruger mysql 3.22 kan du oprette en normal tabel, evt som heap-tabel og bruge lock tables til at begrænse adgangen til denne tabel til en tråd af gangen.
Avatar billede jd Nybegynder
19. november 2000 - 20:06 #25
defrost-> Det var vist ligepræcist distinct jeg ikke kunne huske...tester...
Avatar billede jd Nybegynder
21. november 2000 - 17:22 #26
defrost-> jepper... det var lige præcist den jeg ikke kunne huske! Så er det fedt at have eksperten!! :)

/Jon@z
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