Jetzt kostenlos Anmelden!

philosapiens Männlich

Hilfologe

Beiträge: 657

Geschlecht: Männlich

Wohnort: Berlin

PHPKIT Version: 1.6.1

1

Mittwoch, 28. Mai 2008, 09:13

Herkunft zählen

Hi,

ich möchte gerne in einer Tabelle darstellen, aus welchem Land die meisten User kommen. Dazu dachte ich mir, erstelle ich eine Datenbankabfrage ähnlich der Abfrage nach der Anzahl der Forenbeiträge. Nun werden die Forenbeiträge jedoch schon beim Erstellen in die Datenbank-Spalte Pärfix_forumcat / forumcat_postcount in gezählter Forum abgelegt. Das geschieht bei der Angabe der Herkunft leider nicht. Nun wollte ich dieses auch nicht nachträglich umfummeln, sondern überlege gerade, ob man nicht mit der Angabe aus Präfix_user / user_country das trotzdem erreichen kann. Man könnte ja einfach alle user_country - Einträge in einer neuen Tabelle Präfix_usercountry_count in der alle möglichen Angaben als Zeilen vorhanden sind um pro Aufruf jeweils einen Zähler erhöht ablegen und diese neue Tabelle dann zur Anzeige auslesen. Das wäre nun mein Plan B, Gibt es eine php/sql - Formulierung, damit ich mir die neue Extratabelle sparen könnte und trotzdem die TOP10 der Herkunftsangaben bekomme?

?(
Leider nutze ich das phpkit immer weniger und bastele mehr Eigenes: ^^
  • Zum Seitenanfang
  • Zum Seitenende

Dirk Kántor Männlich

aká Dooki

Beiträge: 2 074

Geschlecht: Männlich

PHPKIT Version: keine

2

Mittwoch, 28. Mai 2008, 14:38

ich denke das könnte mir GROUP BY gehen.. in der sql anweisung..

habe damit aber ehr selten gearbeitet.. sollte aber klappen.. so sortierst du die ausgabe nach country..


ähm müsste man testen ^^

EDIT:

Beispielcode:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
<?php
$query $DB->query("SELECT COUNT(`user_id`) as anzahl,`user_country` as country FROM `".$db_tab['user']."` WHERE `user_activate`='1' GROUP BY `user_country`");
while($ergebnis=$DB->fetch_assoc($query)) {
  $ausgabe[$ergebnis['anzahl']] = $ergebnis['country'];
}
krsort($ausgabe);
echo "<pre>";
print_r($ausgabe);
echo "</pre><hr>";
?>


Beispielausgabe:

Quellcode

1
2
3
4
5
6
7
8
Array
(
    [497] => def
    [215] => ger
    [4] => aut
    [3] => ch
    [1] => oth
)


vielleicht kannste damit weiter arbeiten.. ^^

thx an maXus :love:
:thumbsup:    :thumbsup:       *tc*       :thumbsup:    :thumbsup:
8o           Achtung: Dirk Kántor ist unterwegs!           8o
Er verteilt gerne Verwarnungen ohne vorher darüber diskutiert zu haben.
  • Zum Seitenanfang
  • Zum Seitenende

philosapiens Männlich

Hilfologe

Beiträge: 657

Geschlecht: Männlich

Wohnort: Berlin

PHPKIT Version: 1.6.1

3

Mittwoch, 28. Mai 2008, 21:23

Hi,

ich sag mal DANKE für Eure Gedanken! Leider bekomme ich es nicht so ganz zu Ende formuliert. ;(

Wenn ich Euren/Deinen php-Code nutze, dann bekomme ich es nicht so formuliert, dass ich $ausgabe im template aufrufen kann. Außerdem würde sich ja auch noch das nächste Problem ergeben, dass ich zwar die "Kürzel" hätte, also beispielsweise "ger", aber noch nicht "Deutschland". Könnte man das mit "include inc/lang/de/profile.php" machen, wobei auch noch aus "'origin_ger'=>'Deutschland'" "Deutschland heraus gelöst werden.
Dann hätte ich da auch noch das rechnerische Problem:
Bei meinem Testkit habe ich aktuell:

Zitat

5 Keine Angabe
2 Deutschland
1 Östereich
1 Schweiz
0 Niederlande
0 Anderes Land

Nutze ich jedoch den Code, so erhalte ich:

Zitat

Array
(
[4] => def
[3] => ger
[1] => ch
)

Hmm, ich habe da zwar eine andere Lösung, doch die würde, um auch mein Mega-Herkunft-Addon abbilden zu können, ziemlich lang werden.

Ich rufe erst folgendes in der php-Datei auf:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php

 if (isset($_POST['action'])) $ACTION=$_POST['action'];
 else $ACTION='view';

$countcountrydef $DB->fetch_array($DB->query("select count(user_country) from ".$db_tab['user']." where user_country='def' "));
$countcountrydef $countcountrydef[0];
$countcountryger $DB->fetch_array($DB->query("select count(user_country) from ".$db_tab['user']." where user_country='ger' "));
$countcountryger $countcountryger[0];
$countcountryaut $DB->fetch_array($DB->query("select count(user_country) from ".$db_tab['user']." where user_country='aut' "));
$countcountryaut $countcountryaut[0];
$countcountrych $DB->fetch_array($DB->query("select count(user_country) from ".$db_tab['user']." where user_country='ch' "));
$countcountrych $countcountrych[0];
$countcountrynl $DB->fetch_array($DB->query("select count(user_country) from ".$db_tab['user']." where user_country='nl' "));
$countcountrynl $countcountrynl[0];
$countcountryoth $DB->fetch_array($DB->query("select count(user_country) from ".$db_tab['user']." where user_country='oth' "));
$countcountryoth $countcountryoth[0];
  
 if ($ACTION==$_POST['aufruf']) {

$DB->query("UPDATE ".$db_tab['msb_count']." SET msb_count= ".$countcountrydef." WHERE msb_kuerzel = 'def'");
$DB->query("UPDATE ".$db_tab['msb_count']." SET msb_count= ".$countcountryger." WHERE msb_kuerzel = 'ger'");
$DB->query("UPDATE ".$db_tab['msb_count']." SET msb_count= ".$countcountryaut." WHERE msb_kuerzel = 'aut'");
$DB->query("UPDATE ".$db_tab['msb_count']." SET msb_count= ".$countcountrych." WHERE msb_kuerzel = 'ch'");
$DB->query("UPDATE ".$db_tab['msb_count']." SET msb_count= ".$countcountrynl." WHERE msb_kuerzel = 'nl'");
$DB->query("UPDATE ".$db_tab['msb_count']." SET msb_count= ".$countcountryoth." WHERE msb_kuerzel = 'oth'"); 
} 

$getmsb_herkunft_anzahl=$DB->query("SELECT * FROM ".$db_tab['msb_config']." WHERE msb_config_id=26 ");
while($msb_herkunft_anzahl=$DB->fetch_array($getmsb_herkunft_anzahl)) {
  $herkunft_anzahl   htmlentities($msb_herkunft_anzahl['msb_config_anzahl']);
  $max_herkunft_title   htmlentities($msb_herkunft_anzahl['msb_config_max_title']); }
$getherkunftinfo=$DB->query("SELECT * FROM ".$db_tab['msb_count']." WHERE msb_kriterium = 'country' ORDER by msb_count DESC LIMIT ".$herkunft_anzahl."");
while($herkunftinfo=$DB->fetch_array($getherkunftinfo)) {
  $herkunft_views   htmlentities($herkunftinfo['msb_count']);
  $herkunft_title   cutstring($herkunftinfo['msb_name'], $max_herkunft_title);
  $herkunft_titlemo htmlentities($herkunftinfo['mab_name']);  
  eval("\$msb_top_herkunft_row .= \"".getTemplate("msb/msb_top_herkunft_row")."\";");
}
eval("\$msb_top_herkunft .= \"".getTemplate("msb/msb_top_herkunft")."\";");

?>


Was ich dann in den templates auslesen kann:
msb_top_herkunft

Quellcode

1
2
3
4
5
6
7
8
9
10
<table align="center" width="97%" cellpadding="4" cellspacing="1" class="standard" border="0">
 <tr>
  <td class="heads" colspan="2"><b>Top $herkunft_anzahl Herkunftsorte</b></td>
 </tr>
  <td class="even">Anzahl</td>
  <td class="even">Ort</td>
 </tr>
 	$msb_top_herkunft_row
</table>
<br>


msb_top_herkunft_row

Quellcode

1
2
3
4
 <tr>
  <td class="even">$herkunft_views</td>
  <td class="even">$herkunft_title</td>
 </tr>


Das benötigt natürlich eine Extra-Datenbank-Tabelle und ein einmaliges Aufrufen der Datei mit der Post [aufruf] - Übergabe.
Außerdem müßte ich ja diese Tabelle erstmals komplett anlegen. Da mein Mega-HerkunftsAddon knapp 200 Länder umfasst, würde ich mir diese Schreiberei gerne sparen.
Das geht aber leider nicht ohne Eure Hilfe! ;(
Leider nutze ich das phpkit immer weniger und bastele mehr Eigenes: ^^
  • Zum Seitenanfang
  • Zum Seitenende