Avatar billede Mik2000 Professor
09. marts 2010 - 22:05 Der er 6 kommentarer og
1 løsning

Database - dobbel data skal vises

Hej

Jeg har en database med felterne
id, nr, adresse, person, billede, link

Denne kan der ikke laves om i (dvs ikke tilføjes felter eller andre strukturting), og der kan ikke laves nye tabeller med data.

Jeg skal nu have vise alle poster på en side.
Så langt så godt - ingen problemer

Men de skal være inddelt i nogle kategorier, her blot kaldet kategori1, kategor2 og kategori3 for nemhedens skyld.

Nogle af posterne i dabasen skal stå under 2 af kategorierne.
Jeg ved præcis hvilke numre der hører til de forskellige og hvilke der skal stå 2 steder.

Men hvordan får man dem til det, når man ikke kan gemme kategorierne i databasen?

Laver man et array hvor der er et kategorinr der viser kategorien eller hvad gør man.

Håber du forstår ellers sriv endelig :)
Avatar billede majbom Novice
10. marts 2010 - 07:52 #1
altså hvis ikke du kan ændre/tilføje i databasestrukturen, kan du f.eks. bruge en xml-fil, et hardcoded array, eller en text-fil...
10. marts 2010 - 08:12 #2
(Jeg haaber ikke dette kommer dobbelt.  Jeg sendte det, men det synes at vaere gaaet tabt.)

Det synes at virke ved at definere dine kategorier ved at putte numrene i arrays.

Jeg testede det saaledes:  Jeg lavede en simpel mysql tabel kun med nr og item og kaldte tabellen mik2001.  Der var 20 items.

Jeg definerede saa en enkel kategory, de numre der var primtal.  Jeg placerede de numre i en array $kat1.  De data jeg hev ind fra mysql placerede jeg foerst i en array $table hvor hvert element var et resultat, $row.

Derefter undersoegte jeg for hvert element i $table om nummeret hoerte til kat1 og hvis saa placerede den paagaeldende raekke i en ny array.  Til slut skrev jeg den nye array ud og fik saa numrene og items fra primtallene.

Du kan saa definere yderligere kategorier, og der er ikke noget i vejen for at et nummer kan forekomme i mere end en kategory.

Her er koden:

<?
$kat1 = array(2,3,5,7,11,13,17,19);
$link = mysql_connect ('xxxx', 'yyyy', 'zzzz') or die(mysql_erorr());
mysql_select_db('qqqq') or die('Could not select database');
$result = mysql_query("SELECT nr, item FROM mik2001");
while($row = mysql_fetch_array($result))
$table[]=$row;
foreach ($table as $value)
{
  if(in_array($value['nr'], $kat1)) $type1[]=$value;
}
foreach ($type1 as $a)
echo $a['nr']. " - ".$a['item']. "<br/>";
mysql_close($link); 
?> 

og her er resultatet jeg fik:
2 - item2
3 - item3
5 - item5
7 - item7
11 - item11
13 - item13
17 - item17
19 - item19
Avatar billede majbom Novice
10. marts 2010 - 12:00 #3
-> #0 - "Jeg ved præcis hvilke numre der hører til de forskellige og hvilke der skal stå 2 steder." - hvordan? ud fra noget bestemt i felterne, eller er det bare noget du ved?
12. marts 2010 - 17:58 #4
mik2000, fik du mit indlaeg?  Hvad er din reaktion?  Jeg tillader mig at sende dette som et svar idet jeg mener at have besvaret dit spoergsmaal.  Hvis jeg har misforstaaet dig saa forklar videre, saa kan jeg kikke paa det igen.
Avatar billede Mik2000 Professor
14. marts 2010 - 12:59 #5
Hej
Sorry jeg ikke har svaret. Jeg er lige på rejse, men er tilbage i morgen og ser om jeg ikke kan nå at prøve det der. Men har ikke glemt det :)
Avatar billede Mik2000 Professor
16. marts 2010 - 21:38 #6
Undskyld det meget sene svar. Der var lige et hav af ting da jeg kom tilbage.

Jeg takker for tålmodigheden og svaret :)

Jeg har nu kigget nærmere på det.
Jeg tror det virker til det er inde på noget af det rigtige, men er ikke sikker på jeg helt forstår det.

Så hvis nu jeg tager et eksempel og siger jeg har en tabel med følgende:
id, nr, adresse, person, billede, link
1, 5, Testvej 1, Peter, img.jpg, side.php
2, 3, Testvej 1, Peter, img.jpg, side.php
3, 3, Testvej 1, Peter, img.jpg, side.php
4, 2, Testvej 1, Peter, img.jpg, side.php
5, 7, Testvej 1, Peter, img.jpg, side.php
6, 5, Testvej 1, Peter, img.jpg, side.php
7, 11, Testvej 1, Peter, img.jpg, side.php
8, 12, Testvej 1, Peter, img.jpg, side.php
9, 23, Testvej 1, Peter, img.jpg, side.php

Derudover har jeg 3 kategorier
Kategori 1
Kategori 2
Kategori 3

Jeg ved så at
- dem med id 1,3,4,5,6 og 7 hører til kategori 1
- dem med id 2 og 8 hører til kategori 2
- dem med id 1,2,3, 6 og 9 hører til kategori 3
Her er id 1,2,3 og 6 i 2 kategorier.
Dvs det er bare noget jeg ved (har fået at vide inden, men det kan ikke bygges ind i tabellen/databasen)

----------------------------------------------

Nu vil jeg så gerne have vist det således i browseren:

Kategori 1 (overskrift)
Alle dem der høre til kategori 1 dvs id 1,3,4,5,6,7 med alle oplysninger dvs. id, nr, adresse, person, billede, link

Kategori 2 (overskrift)
Alle dem der høre til kategori 2 dvs. 2 og 8 med alle oplysninger dvs. id, nr, adresse, person, billede, link

Kategori 3 (overskrift)
Alle dem der høre til kategori 3 dvs. 1,2,3,6 og 9 med alle oplysninger dvs. id, nr, adresse, person, billede, link

----------------------------------------------

Jeg beklager endnu engang det sene svar, og takker mange gange for svarene :)
17. marts 2010 - 07:13 #7
Det var jo det jeg haabede du selv ville fylde ind i mit eksempel i #2.  Nu har jeg gjort det for dig:

Udbredt tabellen mik2001 med de felter og vaerdier du siger, og
udbredt php koden med to mere kategorier.  Jeg fik foelgende resultat:

Kategory 1
1 5 Testvej 1 Peter img.jpg side.php
3 3 Testvej 1 Peter img.jpg side.php
4 2 Testvej 1 Peter img.jpg side.php
5 7 Testvej 1 Peter img.jpg side.php
6 5 Testvej 1 Peter img.jpg side.php
7 11 Testvej 1 Peter img.jpg side.php

Kategory 2
2 3 Testvej 1 Peter img.jpg side.php
8 12 Testvej 1 Peter img.jpg side.php

Kategory 3
1 5 Testvej 1 Peter img.jpg side.php
2 3 Testvej 1 Peter img.jpg side.php
3 3 Testvej 1 Peter img.jpg side.php
6 5 Testvej 1 Peter img.jpg side.php
9 23 Testvej 1 Peter img.jpg side.php

Jeg har det siddende i http://christianjorgensen.be/mik2001.php hvor du kan proeve det af.  Php koden er nu den foelgende:

<?
$kat1 = array(1,3,4,5,6,7);
$kat2 = array(2,8);
$kat3 = array(1,2,3,6,9);
$link = mysql_connect ('xxxx', 'yyyy', 'zzzz') or die(mysql_erorr());
mysql_select_db('qqqq') or die('Could not select database');
$result = mysql_query("SELECT * FROM mik2001") or die(mysql_error());
while($row = mysql_fetch_array($result))
$table[]=$row;
foreach ($table as $value)
{
  if(in_array($value['id'], $kat1)) $type1[]=$value;
  if(in_array($value['id'], $kat2)) $type2[]=$value;
  if(in_array($value['id'], $kat3)) $type3[]=$value;
}
echo "<br/>Kategory 1<br/>";
foreach ($type1 as $a)
echo $a['id']. " ".$a['nr']. " " . $a['adresse'] . " " . $a['person'] . " " . $a['billede'] . " " . $a['link'] .  "<br/>";
echo "<br/>Kategory 2<br/>";
foreach ($type2 as $a)
echo $a['id']. " ".$a['nr']. " " . $a['adresse'] . " " . $a['person'] . " " . $a['billede'] . " " . $a['link'] .  "<br/>";
echo "<br/>Kategory 3<br/>";
foreach ($type3 as $a)
echo $a['id']. " ".$a['nr']. " " . $a['adresse'] . " " . $a['person'] . " " . $a['billede'] . " " . $a['link'] .  "<br/>";
mysql_close($link);
?>
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