WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Samla värde från stort dynamiskt antal tabeller? (https://www.wn.se/forum/showthread.php?t=24226)

FredrikNas 2007-10-11 05:52

Hejsan, jag har gått in lite i väggen på en fråga här:

Jag har en sida med 223 användare, alla användare har ett eget table som heter wp_"user-ID"_post, varje utav dessa innehåller ett antal inlägg.
user-ID är ju då alltså användarens ID

hur skulle en kodsnutt för att gå igenom dessa (just nu) 223 tables och samla ihop antalet rader i varje table se ut? Sen addera alla dessa värden till en variabel?

Mycket tacksam för hjälp med den här frågan!

MVH Fredrik Näs

jonny 2007-10-11 08:36

Det luktar lite feldesign av databasen; egentligen, men om det är Wordpress MU kan du ju inte påverka så mycket.

Är det antalet inlägg i alla bloggar du vill få fram?

Daniel.st 2007-10-11 11:33

Ojoj, låter som databasen inte riktigt är normaliserad på rätt sätt. Om jag var du skulle jag ta mig en ordentlig funderare kring att designa om databasen innan jag gjorde något annat.

Vad kör du för db?

FredrikNas 2007-10-11 13:57

Ja precis jonny, jag försöker hämta sammanlagda antalet blogginlägg, sen göra samma med kommentarer.

Ja precis det är wordpressMu som är platformen,

DanielSt det är Mysql, lättare sagt än gjort att designa om databasen

Daniel.st 2007-10-11 16:34

Citat:

Originally posted by Novocain@Oct 11 2007, 13:57
Ja precis jonny, jag försöker hämta sammanlagda antalet blogginlägg, sen göra samma med kommentarer.
Ja precis det är wordpressMu som är platformen,
DanielSt det är Mysql, lättare sagt än gjort att designa om databasen

Då förstår jag bättre :) Tyvärr är jag ingen stjärna på MySQL. I SQL Server finns det en systemtabell man kan hämta alla tabellnamn ur, detta i kombination med en select union eller något liknande hade säkert fungerat. Går det inte att göra något liknande i MySQL?

Jake.Nu 2007-10-11 21:04

Man kan ordna så den slipper göra en fråga för varje tabell genom att gå igenom $tables och bygga upp en JOIN (inte vad jag gör nedan).

Kod:

$postcount = 0;
$tables = array();

$sql = mysql_query("SHOW TABLE STATUS FROM wordpress")or die(mysql_error());

while ($r = mysql_fetch_row($sql))
{
  if (preg_match("/wp_([0-9]+)_post/", $r[0], $match))
  {
    $tables[] = $match[1];
  }
}

foreach ($tables as $key => $id)
{
  $query = sprintf("SELECT COUNT(*) FROM wp_%u_post", $id);
  $sql  = mysql_query($query)or die(mysql_error());
 
  $postcount += mysql_result($sql, 0);
}

echo "Totalt: ", $postcount;



Alla tider är GMT +2. Klockan är nu 13:03.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson