/ 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
det må kunne gøres mere elegant
Fra : Tonny Jørgensen


Dato : 31-01-03 00:12

først min kode

<?
print "<div class=\"kategori\">Arkiv - " . date("d\. M Y") . "</div>";

$katresult = mysql_query("select distinct kategori from news");
while ($rowkat = mysql_fetch_array($katresult)) {

$queryantal = mysql_query("select id from news where kategori =
'$rowkat[kategori]'");
$antal = mysql_num_rows($queryantal);

print "<table class=\"main\" \n>";
print "<tr><td> \n";
print "<a class=\"big\">$rowkat[kategori] - $antal artikler</a>\n";
print "</td></tr></table>\n";
print "<table width=\"100%\" class=\"main\">\n";

$arkiv = mysql_query("select id, overskrift, navn, dato from news
where kategori = '$rowkat[kategori]' order by dato");
while ($rowarkiv = mysql_fetch_array($arkiv)) {

print "<tr onmouseover=\"style.backgroundColor='B0AA9E';\"
onmouseout=\"style.backgroundColor='E7DFD2';\" bgcolor=\"E7DFD2\">\n";
print "<td onmouseover=\"style.backgroundColor='B0AA9E';\"
onmouseout=\"style.backgroundColor='E7DFD2';\" bgcolor=\"E7DFD2\"
width=\"100%\"><a
href=\"index.gud?option=visnyhed&amp;id=$rowarkiv[id]\">$rowarkiv[overskrift
]</a></td>\n";
print "<td class=\"newstext\"
nowrap>$rowarkiv[dato]</td>\n";
print "</tr>\n";

}
print "</table>\n";
print "<hr class=\"arkiv\">\n";
}
?>

som i kan se laver jeg nogle træk inde i nogle while løkker baseret på andre
træk.

denne side er lige lovlig længe om at parse og smide output til min browser

ville det være mere optimalt at bare hive allesammen og lave sorteringen i
php på HELE tabellen istedet for at lade mysql om sorteringen, og evt
hvordan ?

outputtet af filen kan forresten ses her

http://www.jegergud.dk?option=arkiv

- Tonny, www.jegergud.dk





 
 
Dennis T. Holm (31-01-2003)
Kommentar
Fra : Dennis T. Holm


Dato : 31-01-03 19:01

Det er altid hurtigst at lave sorteringen i selve SQL statement.

Mvh Dennis


"Tonny Jørgensen" <hest@aub.dk> wrote in message
news:b1cbgq$k3e$1@news.cybercity.dk...
> først min kode
>
> <?
> print "<div class=\"kategori\">Arkiv - " . date("d\. M Y") . "</div>";
>
> $katresult = mysql_query("select distinct kategori from news");
> while ($rowkat = mysql_fetch_array($katresult)) {
>
> $queryantal = mysql_query("select id from news where kategori =
> '$rowkat[kategori]'");
> $antal = mysql_num_rows($queryantal);
>
> print "<table class=\"main\" \n>";
> print "<tr><td> \n";
> print "<a class=\"big\">$rowkat[kategori] - $antal
artikler</a>\n";
> print "</td></tr></table>\n";
> print "<table width=\"100%\" class=\"main\">\n";
>
> $arkiv = mysql_query("select id, overskrift, navn, dato from news
> where kategori = '$rowkat[kategori]' order by dato");
> while ($rowarkiv = mysql_fetch_array($arkiv)) {
>
> print "<tr onmouseover=\"style.backgroundColor='B0AA9E';\"
> onmouseout=\"style.backgroundColor='E7DFD2';\" bgcolor=\"E7DFD2\">\n";
> print "<td onmouseover=\"style.backgroundColor='B0AA9E';\"
> onmouseout=\"style.backgroundColor='E7DFD2';\" bgcolor=\"E7DFD2\"
> width=\"100%\"><a
>
href=\"index.gud?option=visnyhed&amp;id=$rowarkiv[id]\">$rowarkiv[overskrift
> ]</a></td>\n";
> print "<td class=\"newstext\"
> nowrap>$rowarkiv[dato]</td>\n";
> print "</tr>\n";
>
> }
> print "</table>\n";
> print "<hr class=\"arkiv\">\n";
> }
> ?>
>
> som i kan se laver jeg nogle træk inde i nogle while løkker baseret på
andre
> træk.
>
> denne side er lige lovlig længe om at parse og smide output til min
browser
>
> ville det være mere optimalt at bare hive allesammen og lave sorteringen i
> php på HELE tabellen istedet for at lade mysql om sorteringen, og evt
> hvordan ?
>
> outputtet af filen kan forresten ses her
>
> http://www.jegergud.dk?option=arkiv
>
> - Tonny, www.jegergud.dk
>
>
>
>



Jesper Juul-Mortense~ (01-02-2003)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 01-02-03 00:54

On Fri, 31 Jan 2003 00:11:52 +0100, "Tonny Jørgensen" <hest@aub.dk>
wrote:

[snip kode]

>som i kan se laver jeg nogle træk inde i nogle while løkker baseret på andre
>træk.

Argh!

>ville det være mere optimalt at bare hive allesammen og lave sorteringen i
>php på HELE tabellen istedet for at lade mysql om sorteringen, og evt
>hvordan ?

Det hurtigste er at lade MySQL ordne sorteringen...

Problemet er dine queries. Du smider om dig med data du aldrig bruger.
Du henter f.eks. samtlige id's i en kategori udelukkende for at tælle
dem og smide dem væk igen. En "SELECT COUNT(*)" ville kun returnere en
enkelt række og dermed spare dig for en del.

Ydermere kan du samle de 2 første queries i 1 simpel query, f.eks.:

SELECT DISTINCT kategori, COUNT(*) AS antal FROM news GROUP BY
kategori


Håber det hjælper...

/Jesper

Peter Brodersen (01-02-2003)
Kommentar
Fra : Peter Brodersen


Dato : 01-02-03 01:28

On Sat, 01 Feb 2003 00:53:51 +0100, Jesper Juul-Mortensen
<na@na.invalid> wrote:

>SELECT DISTINCT kategori, COUNT(*) AS antal FROM news GROUP BY
>kategori

DISTINCT er dog ikke nødvendig her, idet man alligevel udfører GROUP
BY på kategori.

--
- Peter Brodersen

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

Månedens bedste
Årets bedste
Sidste års bedste