/ 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
Hente data
Fra : Søren


Dato : 09-09-03 20:33

Jeg skal hente data fra en MySQL tabel og indsætte det i en tabel på en
hjemmeside. I tabellen hentes data ud hvor type = s og indsættes i en
tabel og derefter hentes data ud hvor type = w og indsættes i sin egen
tabel. Jeg kunne godt tænke mig kun at lave eet kald til databasen og så
indsætte data i tabeller alt efter hvilken type, data tilhører. Den
kode, jeg har lavet indtil nu, og som fungere, kan ses på

http://www.nyolo.dk/kode.txt

men jeg kunne godt tænke mig, at der kun skulle laves eet kald til
databasen hvor alt data hentes ud og placees i de rigtige tabeller. Er
der nogen i NG, der kan fortælle mig hvordan det gøres ?

/Søren


 
 
Mikkel Andreasen (11-09-2003)
Kommentar
Fra : Mikkel Andreasen


Dato : 11-09-03 09:51

"Søren" <sorenh@gmx.net> skrev i en meddelelse
news:3f5e2ac1$0$97224$edfadb0f@dread12.news.tele.dk...
> Jeg skal hente data fra en MySQL tabel og indsætte det i en tabel på en
> hjemmeside. I tabellen hentes data ud hvor type = s og indsættes i en
> tabel og derefter hentes data ud hvor type = w og indsættes i sin egen
> tabel. Jeg kunne godt tænke mig kun at lave eet kald til databasen og så
> indsætte data i tabeller alt efter hvilken type, data tilhører. Den
> kode, jeg har lavet indtil nu, og som fungere, kan ses på
>
> http://www.nyolo.dk/kode.txt
>
> men jeg kunne godt tænke mig, at der kun skulle laves eet kald til
> databasen hvor alt data hentes ud og placees i de rigtige tabeller. Er
> der nogen i NG, der kan fortælle mig hvordan det gøres ?

Du kan vel bare lave et kald hvor du henter alle data ud og så derefter får
php til at sortere dataene ud i to array's.
Dette kan jo gøres rimeligt simpelt med en if sætning. Se følgende
pseudokode:

$result = mysql_query("SELECT * FROM link")
or trigger_error(mysql_error());

while ($row = mysql_fetch_array($result))
{
if($row['type']=='s')
indsæt i s array;
else
indsæt i w array;
}

Udskriv s array i tabel;

Udskriv w array i tabel;

Mvh.

Mikkel Andreasen



Benny Nissen (11-09-2003)
Kommentar
Fra : Benny Nissen


Dato : 11-09-03 10:11


"Mikkel Andreasen" <news@mikkel-andreasen.com> skrev i en meddelelse
news:3f60377c$0$29909$edfadb0f@dread11.news.tele.dk...
> > men jeg kunne godt tænke mig, at der kun skulle laves eet kald til
> > databasen hvor alt data hentes ud og placees i de rigtige tabeller. Er
> > der nogen i NG, der kan fortælle mig hvordan det gøres ?
>
> Du kan vel bare lave et kald hvor du henter alle data ud og så derefter
får
> php til at sortere dataene ud i to array's.

Det vil virke fint, men hvorfor skulle man gøre det ?
Lad da SQL klare det den er god til, bl.a. vælge de data man skal bruge og
ikke en masse andet.

> while ($row = mysql_fetch_array($result))
> {
> if($row['type']=='s')
> indsæt i s array;
> else
> indsæt i w array;
> }

Forestil dig, at der er 100000 rækker i tabellen. De 4 af dem er type s og
de 6 af dem er type w. Resten er af en anden type.
Ovenstående php-script vil stadig loope 100000 gange, til ingen verdens
nytte.
Resultatet er stadig kun 10 rækker, men der spildes en masse tid med at
loope igennem + der hentes enorme mængder data med select *, som blot fylder
op i hukommelsen på serveren (= unødig belastning).


--
Benny Nissen
http://web.bennynissen.dk



Jesper Brunholm (11-09-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 11-09-03 10:39

Benny Nissen wrote:

> "Mikkel Andreasen" <news@mikkel-andreasen.com> skrev i en meddelelse
> news:3f60377c$0$29909$edfadb0f@dread11.news.tele.dk...
>
>>>men jeg kunne godt tænke mig, at der kun skulle laves eet kald til
>>>databasen hvor alt data hentes ud og placees i de rigtige tabeller. Er
>>>der nogen i NG, der kan fortælle mig hvordan det gøres ?

>>Du kan vel bare lave et kald hvor du henter alle data ud og så derefter
> får php til at sortere dataene ud i to array's.

> Det vil virke fint, men hvorfor skulle man gøre det ?
> Lad da SQL klare det den er god til, bl.a. vælge de data man skal bruge og
> ikke en masse andet.

> Forestil dig, at der er 100000 rækker i tabellen. De 4 af dem er type s og
> de 6 af dem er type w. Resten er af en anden type.

så er det jo bare at SELECTE i MySQL med WHERE type IN('w','s')

Det er stadig en fordel at kunne nøjes med et kald

> Resultatet er stadig kun 10 rækker, men der spildes en masse tid med at
> loope igennem + der hentes enorme mængder data med select *, som blot fylder
> op i hukommelsen på serveren (= unødig belastning).

Det _er_ vigtigt at være obs på ikke at hente en masse unødigt ud - helt
enig.

mvh

Jesper Brunholm

--
Phønix - dansk folk-musik i front - <http://www.phonixfolk.dk/>
H.C. Andersen-Centret: <http://www.andersen.sdu.dk/>
Vi har killinger på Garion.dk: <http://garion.dk/>


Mikkel Andreasen (11-09-2003)
Kommentar
Fra : Mikkel Andreasen


Dato : 11-09-03 14:59

"Benny Nissen" <news@bennynissen.dk> skrev i en meddelelse
news:3f603c29$0$54838$edfadb0f@dread11.news.tele.dk...
>
> "Mikkel Andreasen" <news@mikkel-andreasen.com> skrev i en meddelelse
> news:3f60377c$0$29909$edfadb0f@dread11.news.tele.dk...
> > > men jeg kunne godt tænke mig, at der kun skulle laves eet kald til
> > > databasen hvor alt data hentes ud og placees i de rigtige tabeller. Er
> > > der nogen i NG, der kan fortælle mig hvordan det gøres ?
> >
> > Du kan vel bare lave et kald hvor du henter alle data ud og så derefter
> får
> > php til at sortere dataene ud i to array's.
>
> Det vil virke fint, men hvorfor skulle man gøre det ?
> Lad da SQL klare det den er god til, bl.a. vælge de data man skal bruge og
> ikke en masse andet.
>
> > while ($row = mysql_fetch_array($result))
> > {
> > if($row['type']=='s')
> > indsæt i s array;
> > else
> > indsæt i w array;
> > }
>
> Forestil dig, at der er 100000 rækker i tabellen. De 4 af dem er type s og
> de 6 af dem er type w. Resten er af en anden type.
> Ovenstående php-script vil stadig loope 100000 gange, til ingen verdens
> nytte.
> Resultatet er stadig kun 10 rækker, men der spildes en masse tid med at
> loope igennem + der hentes enorme mængder data med select *, som blot
fylder
> op i hukommelsen på serveren (= unødig belastning).

Er jeg helt klar over. Men nu spurgte Søren om ikke man kunne nøjes med et
kald. Så gav jeg ham noget pseudokode, så han kunne få en ide om hvordan man
kunne nøjes med et kald til databasen.

Som Jesper siger, bør man selvfølgelig nøjes med at hente relevante data ud
aaf databasen. Jeg genbrugte bare så meget af Sørens kode som jeg kunne.

Mvh.

Mikkel



Søren (11-09-2003)
Kommentar
Fra : Søren


Dato : 11-09-03 16:38

Tak for dit forslag og også de andre indlæg, der er kommet ... jeg leger
lidt videre og finder en optimal løsning.

/Søren



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste