Hits gestern realisieren

Du machst einfach eine Datenbank Abfrage wo du nach dem Datum von gestern suchst. Aber am besten guckst du dir den Code mal an, wie das Datum in die Tabelle gespeichert wird.
 
Ja so kann ich das für die Besucher machen so hab ich das auch gemacht:
PHP:
$sql = "SELECT * FROM $onlinetable WHERE DATE_FORMAT(`datum`,'%d') = DATE_FORMAT(NOW(), '%d') - 1;"; 
$result = mysql_query($sql); 
$user_gestern = mysql_num_rows($result);
aber die hits werden in dem turorial ja nur gezählt
 
Ich habe das Tutorial nicht bei mir ausprobiert etc. aber zeig mal bitte den Inhalt deiner hits Tabelle an.
 
Tabelle: Hits
hit_id hit_name hit_tag hit_anz
1 heute das datum bei jedem aufruf mit now() Hits halt (zahl)
2 total das datum beim ersten script aufruf "
3 monat das datum bei jedem aufruf mit now() "

im script die Updates:
PHP:
$sql = "UPDATE $hitstable set hit_anz = '0' WHERE DATE_FORMAT(hit_tag, '%d') <> DATE_FORMAT(NOW(), '%d') AND hit_name = 'heute';"; 
$result = mysql_query($sql); 

$sql = "UPDATE $hitstable set hit_anz = '0' WHERE DATE_FORMAT(hit_tag, '%m') <> DATE_FORMAT(NOW(), '%m') AND hit_name = 'monat';"; 
$result = mysql_query($sql);

im script hits zählen:
PHP:
$sql = "UPDATE $hitstable set hit_anz = hit_anz + 1, hit_tag = NOW() WHERE hit_name ='heute';"; 
$result = mysql_query($sql); 

$sql = "UPDATE $hitstable set hit_anz = hit_anz + 1 WHERE hit_name ='total';"; 
$result = mysql_query($sql);

$sql = "UPDATE $hitstable set hit_anz = hit_anz + 1, hit_tag = NOW() WHERE hit_name ='monat';"; 
$result = mysql_query($sql);

so und die ausgabe der hits
PHP:
// hit-total: 
$sql = "SELECT hit_anz AS anz, DATE_FORMAT(hit_tag,'%d.%m.%Y') as beginday  FROM $hitstable WHERE hit_name = 'total';"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
$hits_total = $row['anz']; 
$hits_begin = $row['beginday']; 

// hit-heute: 
$sql = "SELECT * FROM $hitstable WHERE hit_name = 'heute';"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
$hits_heute = $row['hit_anz']; 

// hit-monat
$sql = "SELECT * FROM $hitstable WHERE hit_name = 'monat';"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
$hits_monat = $row['hit_anz'];
soo das zum script und wie bekomm ich jzz die hits gesamt hin?
 
Zuletzt bearbeitet:
Aber du musst doch eigentlich nur nach dem Tag von gestern suchen, oder löscht das Programm alle Hits von vorherigen Tagen? Und fasst sie als Total zusammen?
 
ja also am anfang wird monat und heute ja wieder auf 0 gesetzt:
PHP:
$sql = "UPDATE $hitstable set hit_anz = '0' WHERE DATE_FORMAT(hit_tag, '%d') <> DATE_FORMAT(NOW(), '%d') AND hit_name = 'heute';";  
$result = mysql_query($sql);  

$sql = "UPDATE $hitstable set hit_anz = '0' WHERE DATE_FORMAT(hit_tag, '%m') <> DATE_FORMAT(NOW(), '%m') AND hit_name = 'monat';";  
$result = mysql_query($sql);
soo und total nicht aber die zugriffe werden ja nicht gespeichert mit datum oder so sonder einfach nur auf gesamt draufgerechnet also auf hit_anz in der tabelle +1 gerechnet:
PHP:
$sql = "UPDATE $hitstable set hit_anz = hit_anz + 1, hit_tag = NOW() WHERE hit_name ='heute';";  
$result = mysql_query($sql);  

$sql = "UPDATE $hitstable set hit_anz = hit_anz + 1 WHERE hit_name ='total';";  
$result = mysql_query($sql); 

$sql = "UPDATE $hitstable set hit_anz = hit_anz + 1, hit_tag = NOW() WHERE hit_name ='monat';";  
$result = mysql_query($sql);
 
PHP:
$sql = "UPDATE $hitstable set hit_anz = '0' WHERE DATE_FORMAT(hit_tag, '%d') <> DATE_FORMAT(NOW(), '%d') AND hit_name = 'heute';";
$result = mysql_query($sql);

Dü müsstest einfach den Stand von "gestern" bevor er gelöscht wird, in eine Datensatz speichern der als hit_name Feld das wort gestern hat.
 
ja so hab ich mir das auch gedacht
ich hab da auch schon in bisschen probiert aber es funktioniert nicht
ich weiss nicht ob das die endversion war aber ich hatte das schon wieder gelöscht weils net ging aber so in der art
PHP:
$sql = "SELECT * FROM $hitstable WHERE hit_name = 'heute';"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
$hit_anzz = $row['hit_anz'] +1; 

$sql = "SELECT * FROM $hitstable WHERE hit_name = 'gestern';"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result);
$hit_tagg = $row['hit_tagg']; 

if("DATE_FORMAT(NOW(), '%d') -1  == DATE_FORMAT(`$hit_tagg`, '%d');")
{
$sql = "UPDATE $hitstable set hit_anz = '$hit_anzz', hit_tag = 'NOW()' WHERE hit_name = 'gestern';"; 
$result = mysql_query($sql); 
}
aber so geht es halt nicht... wie kann man das machen?
 
Zuletzt bearbeitet:
Probiere dies mal

PHP:
$sql = "SELECT DATE_FORMAT(hit_tag, '%d') as hit_tag, hit_anz, hit_tag as tag_complete FROM $hitstable WHERE hit_name = 'heute';";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$date_stamp = date("d");
if($row[hit_tag]<>$date_stamp) { 
$sql = "UPDATE $hitstable set hit_anz = '$row[hit_anz]', hit_tag = '$row[tag_complete]' WHERE hit_name = 'gestern';";
$result = mysql_query($sql);
$sql = "UPDATE $hitstable set hit_anz = '0' WHERE DATE_FORMAT(hit_tag, '%d') <> DATE_FORMAT(NOW(), '%d') AND hit_name = 'heute';";
$result = mysql_query($sql);
}

Diesen Code könnte man bestimmt kürzer schreiben, aber ich weiß jetzt wie, und habe auch keine Lust darauf, du musst nur in deine Datenbank eine Zeile hinzufügen die gestern heißt, und so kannst du abfragen:

PHP:
$sql = "SELECT * FROM $hitstable WHERE hit_name = 'gestern';";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$hits_gestern = $row['hit_anz'];
 
Zurück