Avatar billede mads1987 Nybegynder
30. august 2004 - 19:16 Der er 21 kommentarer og
1 løsning

Ide til mysql query

Jeg har brug for en lidt speciel mysql query.

Jeg har nogle spørgsmål liggende i en database, disse sprøgsmål har hver en kategori.

Databasen ser altså sådan ud:
------
spr
kategori
------

Jeg ønsker et output som udskriver således:

"Kategori_1"
+ alle spr som har denne kategori

"Kategori_2"
+ alle spr som har denne kategori

osv.

Kan dette lade sig gøre?
Avatar billede pita- Nybegynder
30. august 2004 - 19:39 #1
Ja... Giv hvert spr et KatID som peger på en kategori og brug så en WHERE til det eks:

mysql_query("SELECT * FROM spr WHERE katID='1'") or die(mysql_error());


Så skal du self loope de forskellige og hente fra kategori databasen imens.
Avatar billede mads1987 Nybegynder
30. august 2004 - 20:32 #2
Kommer nok til at bruge et eksempel , det vil ikke rigtig lykkes.

Jeg har forsøgt mig med dette:

<?
$hent = mysql_query("select kategori from kategori where kode='$_SESSION[user]'") or die(mysql_error());
while ($ud = mysql_fetch_array($hent)) {

$hent2 = mysql_query("select spr from skema where kode='$_SESSION[user]' AND kategori='$ud[kategori]'") or die(mysql_error());
while ($ud2 = mysql_fetch_array($hent2)) {
echo "$ud[kategori]<br>";
echo "$ud2[spr]";
}}
?>

Som det ses har jeg yderligere lavet en tabel med:

kategori
--------
id (Kategoriens id)
kategori (Kategoriens navn)
--------

skema
--------
spr (sprøgsmålet som jeg stå under de forskellige kategorier, der kan forekomme flere)
kategori (indeholder nummeret på den kategori spørgsmålet tilhører)
--------

I det eks. jeg har lavet, sker der absolute ingenting.
Avatar billede sukos Juniormester
30. august 2004 - 20:34 #3
eller

$cats = mysql_query("SELECT DISTINCT `kategori` FROM `db`") or die (mysql_error());

while($list = mysql_fetch_object($cats)) {
echo $list->kategori;

$spm = mysql_query("SELECT `spr` FROM `db` WHERE `kategori` = '". $list->kategori ."`") or die (mysql_error());
while($visspm = mysql_fetch_object($spm)) {
echo"<br>\n". $visspm->spr;
}
mysql_free_result($spm);
echo"<hr>\n";
}
mysql_free_result($cats);
Avatar billede sukos Juniormester
30. august 2004 - 20:36 #4
hmm,

$cats = mysql_query("SELECT DISTINCT `kategori` FROM `db` WHERE `kode` = '". $_SESSION["user"] ."'") or die (mysql_error());
Avatar billede mads1987 Nybegynder
30. august 2004 - 20:45 #5
Jeg får denne:
serviceYou have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''service`' at line 1
Avatar billede pita- Nybegynder
30. august 2004 - 20:53 #6
Jeg ser ingen grund til at have skema tabellen, hvis du nu byggede det sådan her:

spr(id, tekst, katID)
kategori(id, tekst, noget)

id (spr) hænger sammen med KatID.

Hvis du så bare skal udskrive Kategori, og så de ting der går under denne kategori ville det være en nem sag...

Men hvis forskellige brugere skal kunne hente forskellige ting så skal du indføre endu en tabel, med bruger og et reference til spg og kategori.
Avatar billede pita- Nybegynder
30. august 2004 - 20:55 #7
Rettelse til ovenover det er self KatID der hænger sammen med id(kategori) :-)
Avatar billede sukos Juniormester
30. august 2004 - 21:01 #8
Dette:
''service`'
er nok fordi du skriver
'service`

men skal nok være

`service`
Avatar billede mads1987 Nybegynder
30. august 2004 - 21:07 #9
Det virker desværre stadig ikke, og jeg forstår ikke helt hvad du mener pita-
Avatar billede sukos Juniormester
30. august 2004 - 21:12 #10
Hvad er det som ikke virker? :O)
Eller, hvordan ser den kode ud som ikke virker?
Avatar billede mads1987 Nybegynder
30. august 2004 - 21:18 #11
:-)

Dette:

<?
$cats = mysql_query("SELECT DISTINCT 'kategori' FROM 'CMS_kategori_tilfreds' WHERE 'firmakode' = '". $_SESSION["user"] ."'") or die (mysql_error());

while($list = mysql_fetch_object($cats)) {
echo $list->kategori;

$spm = mysql_query("SELECT 'spr' FROM 'CMS_skema_tilfreds' WHERE 'kategori' = '". $list->kategori ."'") or die (mysql_error());
while($visspm = mysql_fetch_object($spm)) {
echo"<br>\n". $visspm->spr;
}
mysql_free_result($spm);
echo"<hr>\n";
}
mysql_free_result($cats);

?>
Avatar billede sukos Juniormester
30. august 2004 - 21:22 #12
Skift alle dine ' ud med ` de steder hvor det er navne på db og felter, men ikke de steder hvor det er =

$cats = mysql_query("SELECT DISTINCT `kategori` FROM `CMS_kategori_tilfreds` WHERE `firmakode` = '". $_SESSION["user"] ."'") or die (mysql_error());

while($list = mysql_fetch_object($cats)) {
echo $list->kategori;

$spm = mysql_query("SELECT `spr` FROM `CMS_skema_tilfreds` WHERE `kategori` = '". $list->kategori ."'") or die (mysql_error());
while($visspm = mysql_fetch_object($spm)) {
echo"<br>\n". $visspm->spr;
}
mysql_free_result($spm);
echo"<hr>\n";
}
mysql_free_result($cats);
Avatar billede mads1987 Nybegynder
30. august 2004 - 21:33 #13
Så skete der noget, nu ser jeg min kategori, og en HR. Men mit spørgsmål udebliver stadig.
Avatar billede sukos Juniormester
30. august 2004 - 21:36 #14
Så kan jo prøve:

$spm = mysql_query("SELECT `spr` FROM `CMS_skema_tilfreds` WHERE `kategori` = '". $list->kategori ."'") or die (mysql_error());
if(mysql_num_rows($spm) != 0) {

while($visspm = mysql_fetch_object($spm)) {
echo"<br>\n". $visspm->spr;
}

}else{
echo"Ingen rows i DB som matcher forespørgsel! Evt. usernavnet???";
}

mysql_free_result($spm);
Avatar billede mads1987 Nybegynder
31. august 2004 - 07:49 #15
Ja, så var det ikke scriptet der var noget i vejen med :) Den siger: Ingen rows i DB som matcher forespørgsel! Evt. usernavnet???
Men jeg kan simpelthen stadig ikke gennemskue hvad der er galt, i får lige min database med data:

CMS_skema_tilfreds
------
spr
kategori
firmakode
------

DATA
------
Hvordan har du det?
1
DAW

CMS_kategori_tilfreds
--------
id 
kategori         
firmakode
--------

DATA
--------
1
service
DAW
--------
Avatar billede sukos Juniormester
31. august 2004 - 08:15 #16
Hvis nu det sættes op så'n:

CMS_skema_tilfreds:

    spr                    kategori            firmakode
Hvordan har du det            1                  DAW


CMS_kategori_tilfreds:

    id                    kategori            firmakode
    1                      service              DAW

I query'en, hentes først "service", og da den vises, skal så hentes "spr" fra CMS_skema_tilfreds hvor kategori == service
Men her er den jo 1, altså ingen rows som svarer til forespørgsel
Avatar billede sukos Juniormester
31. august 2004 - 08:43 #17
Du kan jo lave to tables, "kategorier", "spm", hvor kategorier kun har felterne "id" og "kategori"
id er autoincrement, primary, og skal bruges som ref til den anden table, "spm"

"spm" med felterne id, spr, firmakode og ref

så ville det blive:

kategorier:

    id        kategorier
    1        service
    2        sport

spm:

    id          spr            ref        firmakode
    1  Hvordan har du det?    1            daw
    2  Er du træt i dag?      1            daw
    3  Hvem er fruelund        2            daw
    4  Hvem fik bronze ved ol  2            daw



$cats = mysql_query("SELECT * FROM `kategorier`") or die (mysql_error());
while($list = mysql_fetch_object($cats)) {
echo $list->kategori;

$spm = mysql_query("SELECT `spr` FROM `spm` WHERE `ref` = '". $list->id ."' AND `firmakode` = '". $_SESSION["user"] ."'") or die (mysql_error());
while($visspm = mysql_fetch_object($spm)) {
echo"<br>\n". $visspm->spr;
}
mysql_free_result($spm);
echo"<hr>\n";
}
mysql_free_result($cats);
Avatar billede sukos Juniormester
31. august 2004 - 08:45 #18
Du kan også la' det hele ligge i en table, men er ikke lige helt klar over præcis hvad du vil, m.h.t. til firmakode
Avatar billede mads1987 Nybegynder
01. september 2004 - 16:32 #19
Det virker perfekt nu! Mange tak, du må gerne svare.
Avatar billede sukos Juniormester
02. september 2004 - 12:25 #20
Ok :O)
Avatar billede mads1987 Nybegynder
14. september 2004 - 18:28 #21
Du kom til at lægge en kommentar :)
Avatar billede sukos Juniormester
14. september 2004 - 20:01 #22
Ja sgu!
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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