Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Group by [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Group by


 
MaxP0W3R
23-03-2004, 10:43 
 
Hi,

ich hab eben feststellen müssen dass ich doch der totale SQL Noob bin, ich steh gerade mit group by etwas auf dem schlauch.

Ich hab folgende Tabelle :

id linkid rubrik zeit

id ist die auto_increment id des Klicks
link id ist eine id des links um ihn zu identifizieren anhand einer anderen tabelle, rubrik ist der referer, von wo aus drauf geklickt wurde, kann auch leer sein
zeit ist timestamp (atm nicht wichtig)

Ich möchte nun abfragen, welcher link in welcher rubrik wie oft geklickt wurde + gesamtzahl

also z.B. linkid 1 wurde 15 mal von index.php aus heklickt, 10 mal von suche.php und 20 mal war der referer leer, und insgesamt 45 mal geklickt.

mit was für einer abfrage kann man das geschickt lösen ?

 
asp2php
23-03-2004, 10:47 
 
und wie sieht dein Ansatz aus?

 
MaxP0W3R
23-03-2004, 10:49 
 
Naja bis jetzt hab ich es mit Bruteforce gemacht, ich rufe alle ab mit einer id, dann zähle ich die anzahl der rubriken, dann zähle ich die anzahl der klicks pro rubrik und dann kommt die ausgabe :rolleyes:

 
Innuendo
23-03-2004, 10:50 
 
http://www.mysql.com/doc/de/Counting_rows.html

 
MaxP0W3R
23-03-2004, 10:53 
 
danke :D

 
Innuendo
23-03-2004, 10:58 
 
Meint er das jetzt ironisch?

 
MaxP0W3R
23-03-2004, 11:14 
 
Nein, nicht Ironisch. War genau das was ich gesucht habe. hier das Ergebnis :


$linkid = $_REQUEST['id'];
$query = "select rubrik, count(*) from counter_klicks where linkid=$linkid";

$nowtag = date("d");
$nowmonat = date("n");
$nowjahr = date("Y");
$nowstunde = date("G");
$nowminute = date("i");


if(isset($_REQUEST['zeitraum']))
{
$vontag = $_POST['vontag'];
$vonmonat = $_POST['vonmonat'];
$vonjahr = $_POST['vonjahr'];
$vonstunde = $_POST['vonstunde'];

$bistag = $_POST['bistag'];
$bismonat = $_POST['bismonat'];
$bisjahr = $_POST['bisjahr'];
$bisstunde = $_POST['bisstunde'];

$zeitstempelvon = mktime($vonstunde,0,0,$vonmonat, $vontag,$vonjahr);
$zeitstempelbis = mktime($bisstunde,0,0,$bismonat, $bistag,$bisjahr);
$query .= " && zeit > $zeitstempelvon && zeit < $zeitstempelbis";


}
if(!isset($_REQUEST['id'])) die('Unerlaubter Aufruf !');
$aktueller_monat = date('n', time());

if(!isset($_REQUEST['monat'])) $monat = $aktueller_monat;
else $monat = $_REQUEST['monat'];

require('zeitraum.inc.php'); // Formular zum AUswählen des Zeitraums

// echo('<br><br>Query: '.$query);
$query .= " group by rubrik";
$ergebnis = mysql_query($query, $db_handle) or die('Fehler bei der Datenbankabfrage');
if($ergebnis == false) die('Fehler bei der Datenbankabfrage');
echo("<table width='90%' border='1' align='center'><tr><td align='left'>Kategorie</td><td align='center' width='100'>Anzahl der Klicks</td></tr>");
while($liste = mysql_fetch_row($ergebnis))
{
$rubrik = $liste[0];
if(trim($rubrik)=='') $rubrik = 'Leerer Referrer';
echo("<tr><td align='left'>$rubrik</td><td align='center' width='100'>$liste[1]</td></tr>");

}
$query = "select count(*) from counter_klicks where linkid=$linkid";
$ergebnis = mysql_query($query, $db_handle);
$liste = mysql_fetch_row($ergebnis);
echo("<tr><td align='left'>Insgesamt</td><td align='center' width='100'>$liste[0]</td></tr></table>");


Das Programm list aus der tabelle 'counter_klicks' alle Klicks eines Links auf, sortiert nach der aufrufenden seite, die auch leer sein kann (ist so wenn der referrer warum auch immer leer ist)

thx für die Hilfe, ich hab zwar gesucht aber naja, ihr kennt das ja, wenn man die lösung nicht kennt sucht man meistens nach dem falschen bzw sieht nicht dass es die Lösung ist.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:41 Uhr.