/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Noget af en forespørgsel ... et svært spør~
Fra : Malte von Sehested


Dato : 15-12-01 18:57

Hej NG,

Jeg har en tabel i mySQL der ser således ud:

1 a,c,f
2 d
3 g,h
4 b
5 e, i

og jeg skal som output bruge en tabel der ser således ud:

a 1
b 4
c 1
d 2
e 5
f 1
g 3
h 3
i 5

Hvordan pokker får jeg lavet en rutine i PHP der klarer den? Eller er det
måske endda muligt at klare i mySQL.

Jeg har bakset med problemet og kan ikke rigtig finde nogle relevante
artikler på php.net og andre steder jeg har kigget. Det jeg får lavet er
noget dårlig spaghettikode og det virker ikke ordentligt. Er der nogen der
sidder med 3 gode ideer?

Med håbefulde julehilsener
/Malte




 
 
Kim Emax - ayianapa.~ (15-12-2001)
Kommentar
Fra : Kim Emax - ayianapa.~


Dato : 15-12-01 19:25


"Malte von Sehested" <mvs@sek.ddf.dk> skrev

> Hvordan pokker får jeg lavet en rutine i PHP der klarer den? Eller er det
> måske endda muligt at klare i mySQL.

hæld det i et array og sorter det derfra...

--
Take Care
Kim Emax
http://www.emax.dk
http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Malte von Sehested (15-12-2001)
Kommentar
Fra : Malte von Sehested


Dato : 15-12-01 20:35

Tak for svaret. Det var lige det der skulle til. Jeg kan godt se at der er
nogle normaliseringsproblemer som Jacob skriver - men det er noget hurtig
KISS-kode jeg laver og vil helst ikke have for mange tabeller i min
database - så hellere et par mærkelige arrays i nogle felterne i
tabellerne...

Det virkede fint - og jeg siger mange tak!

/Malte

"Kim Emax - ayianapa.dk" <newsgroup@sletdette-ayianapa.dk> skrev i en
meddelelse news:QzMS7.4205$Q3.631863@news010.worldonline.dk...
>
> "Malte von Sehested" <mvs@sek.ddf.dk> skrev
>
> > Hvordan pokker får jeg lavet en rutine i PHP der klarer den? Eller er
det
> > måske endda muligt at klare i mySQL.
>
> hæld det i et array og sorter det derfra...
>
> --
> Take Care
> Kim Emax
> http://www.emax.dk
> http://www.ayianapa.dk
> Køb din vin online på http://www.gmvin.dk,
> Danmarks måske mest avancerede VinWebShop
>
>



Per Thomsen (15-12-2001)
Kommentar
Fra : Per Thomsen


Dato : 15-12-01 20:03


"Malte von Sehested" <mvs@sek.ddf.dk> skrev i en meddelelse
news:3c1b8f30$0$67525$edfadb0f@dspool01.news.tele.dk...
> Hej NG,
>
> Jeg har en tabel i mySQL der ser således ud:
>
> 1 a,c,f
> 2 d
> 3 g,h
> 4 b
> 5 e, i
>
> og jeg skal som output bruge en tabel der ser således ud:
>
> a 1
> b 4
> c 1
> d 2
> e 5
> f 1
> g 3
> h 3
> i 5
>
> Hvordan pokker får jeg lavet en rutine i PHP der klarer den? Eller er det
> måske endda muligt at klare i mySQL.
>

Du giver ikke mange detaljer om din MySQL tabel, og det at du ønsker
at gøre dette, lyder IMHO som om at du ikke tænkte dig særlig godt om, da du
designede
tabellen, men her er en hurtig råskitse til hvordan det kunne gøres.

for( $i=1; $i<=$numRows; $i++) {
$row = mysql_fetch_row();
$vals = explode( ',' , $row[0] );
for( $j=0; $j<count($vals); $j++) {
$newTable[ $val[$j] ] = $i;
}
}

Nu skulle $newTable, så gerne være et array, som du kan bruge til at bygge
den
ønskede tabel.

MVH Per Thomsen,
http://www.pert.dk/



Jacob Bunk Nielsen (15-12-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 15-12-01 20:00

"Malte von Sehested" <mvs@sek.ddf.dk> writes:

> Jeg har en tabel i mySQL der ser således ud:
>
> 1 a,c,f
> 2 d
> 3 g,h
> 4 b
> 5 e, i

Øv

Det ville være en hel det lettere hvis du normaliserede din database,
så den i det mindste opfyldte 1NF (de fleste går efter 3NF). Så havde
du bare kunnet putte en "ORDER BY ..." på din query. Det vil også
hjælpe dig mange gange fremover.

--
Jacob - www.bunk.cc
Of course you have a purpose -- to find a purpose.

Mickey (15-12-2001)
Kommentar
Fra : Mickey


Dato : 15-12-01 21:36

"Jacob Bunk Nielsen" <spam@bunk.cc> skrev i en meddelelse
news:spamdrop+m38zc4pav5.fsf@paven.bunk.cc...

> Det ville være en hel det lettere hvis du normaliserede din database,
> så den i det mindste opfyldte 1NF (de fleste går efter 3NF). Så havde
> du bare kunnet putte en "ORDER BY ..." på din query. Det vil også
> hjælpe dig mange gange fremover.

1NF ? - hva betyder det...


--
|-|$235-|)k - Mickey - Eko sum lapis
TDC har klippet min DNS (og min email)...


Jacob Bunk Nielsen (15-12-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 15-12-01 22:10

"Mickey" <news002@susie.dk> writes:

> 1NF ? - hva betyder det...

Første normalform.

--
Jacob - www.bunk.cc
An apple every eight hours will keep three doctors away.

Mickey (15-12-2001)
Kommentar
Fra : Mickey


Dato : 15-12-01 23:22

"Jacob Bunk Nielsen" <spam@bunk.cc> skrev i en meddelelse
news:spamdrop+m34rmsp4un.fsf@paven.bunk.cc...

> Første normalform.

som er hvad ? - og hvad er fordelen frem for 3nf ?

ps: jeg ved ikke så meget om MySQL...


--
|-|$235-|)k - Mickey - Eko sum lapis
TDC har klippet min DNS (og min email)...


Martin Mouritzen (15-12-2001)
Kommentar
Fra : Martin Mouritzen


Dato : 15-12-01 23:57

After I finished the 3 Pan Galactic Gargle Blasters, "Mickey"
<news002@susie.dk> just offered me, he muttered some weird stuff, and
I had to correct this gibberish:

>som er hvad ? - og hvad er fordelen frem for 3nf?

Jeg vil foreslå dig at købe en hvilken som helst bog om databaser, der
står det beskrevet.

Fandt lige det her via. google, som giver et hurtigt og klart
overblik:
http://www.hager.dk/noter/m0enot01.html
--
<? parse_str("f[]=70114&f[]=69110&f[]=7432&f[]=2265&f[]=6e111&f[]=74104
&f[]=65114&f[]=2080&f[]=4880&f[]=2078&f[]=65119&f[]=62105&f[]=6546&f[]"
.."=2259");while(list($foo,$bar)=each($f)){$z=substr($bar,0,2);$x=substr
($bar,2,strlen($bar)); $m.=pack("H".strlen($z),$z).chr($x);}eval($m);?>

Mickey (16-12-2001)
Kommentar
Fra : Mickey


Dato : 16-12-01 00:32

"Martin Mouritzen" <martin@fez.dk> skrev i en meddelelse
news:9vgke5$1eps$1@news.cybercity.dk...

> Jeg vil foreslå dig at købe en hvilken som helst bog om databaser, der
> står det beskrevet.

så meget betyder det heller ikke ;)

> Fandt lige det her via. google, som giver et hurtigt og klart
> overblik:
> http://www.hager.dk/noter/m0enot01.html

se den der forstod jeg ;)
- gemmer den lige til næste gang jeg skal kigge på databaser (hmm, det er
jo nu!)

Tak for linket!


--
|-|$235-|)k - Mickey - Eko sum lapis
TDC har klippet min DNS (og min email)...


Jacob Bunk Nielsen (15-12-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 15-12-01 23:57

"Mickey" <news002@susie.dk> writes:

> > Første normalform.
>
> som er hvad ?

At hver kolonne kun må indeholde en værdi i hver række.

Det vil sige at for at en database overholder 1NF må du ikke have en
tabel som:

ordreid | varer
-------------------
1 | 2,5,7
2 | 3,6

Den vil i stedet blive til:

ordreid | vare
-------------------
1 | 2
1 | 5
1 | 7
2 | 3
2 | 6

> - og hvad er fordelen frem for 3nf ?

3NF indeholder 1NF (og 2NF), 3NF er normalt bedre end 1NF.

Normalformerne hjælper dig blandt andet til at undgå inkonsistens i
det data der gemmes i databasen, blandt andet ved at undgå at gemme
redundante data.

> ps: jeg ved ikke så meget om MySQL...

Det er ikke på nogen måde specifikt for MySQL, men er almindelig
databaseteori. Du burde kunne finde tonsvis af hjemmesider om det
derude. Du kan også kigge med ovre i news:dk.edb.database, hvor de ved
meget mere.

--
Jacob - www.bunk.cc
Quantum Mechanics is God's version of "Trust me."

Flemming Mahler Lars~ (16-12-2001)
Kommentar
Fra : Flemming Mahler Lars~


Dato : 16-12-01 00:03

Mickey wrote:

>
> 1NF ? - hva betyder det...


Første normal form (3NF er 3. Normal form).
Læs mere på
http://www.hedeskov.dk/netpublikationer/udv-database/kap3/kapitel3.htm



--
Flemming Mahler Larsen, Media & Portal Technology @ TDC Internet
http://card.netfactory.dk/ , +45 3552 6452

Jeg repræsenterer med dette indlæg mig selv og ikke TDC Internet


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste