Avatar billede Slettet bruger
13. januar 2004 - 00:04 Der er 9 kommentarer og
1 løsning

at resette en kolonne i en tabel hver dag..

top.php:

<?PHP

include ("config.php");
$db = mysql_connect("$server","$userid","$pw");
mysql_select_db("$dbase",$db);

$getdata=mysql_query("SELECT data FROM misc WHERE navn='taeller'",$db);
$tal=mysql_fetch_row($getdata);

$talgl=$tal[0];
$talny=$tal[0]+1;

mysql_query("update misc SET data=$talny WHERE navn='taeller'") ;

?>

adminstyr.php:

<?PHP
$db = mysql_connect("$server","$userid","$pw");
mysql_select_db("$dbase",$db);

$getdata=mysql_query("SELECT data FROM misc WHERE navn='taeller'",$db);
$tal=mysql_fetch_row($getdata);

echo "Besøgscounter: $tal[0] <BR>";

?>

Jeg vil gerne have at mySQL automatisk hver dag kl 00:00 resetter $tal. Hvordan gør jeg det?

Har kun 5 points at give af nu. Flere points senere
Avatar billede kagehuset Nybegynder
13. januar 2004 - 00:28 #1
Hey

Det skal du nok ha' et cronjob til at gøre for dig eller noget... Tror ikke man kan få SQL til at gøre det auto... Men så skal dit webhotel give adgang til cronjobs - og det gør de vidst sjældent...

mvh
Mads
Avatar billede Slettet bruger
13. januar 2004 - 00:28 #2
Noget andet man kan bruge? i stedet for mySQL eller cronjobs?
Avatar billede stingbat Nybegynder
13. januar 2004 - 00:38 #3
Den første del af koden:
> $getdata=mysql_query("SELECT data FROM misc WHERE navn='taeller'",$db);
> $tal=mysql_fetch_row($getdata);
>
> $talgl=$tal[0];
> $talny=$tal[0]+1;
>
> mysql_query("update misc SET data=$talny WHERE navn='taeller'");

Ændre det til:
mysql_query("update misc SET data = data + 1 WHERE navn = 'taeller'");

Det andet er lidt spild af ressourcer ;-)

Mht. at nulstille, bliver du nødt til at have en sted hvor du gemmer en "sidst nulstillet" dato - og så checke i forhold til den, og nulstille, når der er én dags forskel.

Hvis du tilføjer en et dato-felt til "misc", sådan at hver tæller får en "sidst ændret" dato, så bliver det nemmere...

Men - du vil så kun tælle pr. dag? Hvad med "totalt"?
Avatar billede Slettet bruger
13. januar 2004 - 00:41 #4
Har tænkt mig at kunne se per dag og totalt. Nøjagtigt som du siger.. Men jeg skal oprette en række mere i min tabel. Men hvordan får jeg den daglige til at resette? Det er det der er spørgsmålet.
Avatar billede stingbat Nybegynder
13. januar 2004 - 00:50 #5
Vil være nemmere at gøre følgende:
@mysql_query("UPDATE `misc` SET `data` = `data` + 1 WHERE `navn` = 'taeller' AND `dato` = CURDATE();", $db);
if (!@mysql_affected_rows())
    @mysql_query("INSERT INTO `misc` (`navn`, `dato`, `data`) VALUES ('taeller', CURDATE(), 1);", $db);

samt indsætte et ekstra felt i tabellen kaldet "dato" (som et dato felt, of course)

Det som scriptet så vil gøre, er at opdatere den enkelte dato - og hvis det skulle ske at datoen ikke eksistere (ergo, når vi er nået til en ny dag), jamen, så tilføjer den automatisk en ny :)
Avatar billede Slettet bruger
13. januar 2004 - 00:53 #6
jeg har jo ingen tabel som hedder dato. Min tabel hedder misc.
Avatar billede Slettet bruger
13. januar 2004 - 00:55 #7
$mysql_query("UPDATE `misc` SET `data` = `data` + 1 WHERE `navn` = 'taeller' AND `dato` = CURDATE();", $db);

Den kommer med fejl i denne linje
Avatar billede Slettet bruger
13. januar 2004 - 00:57 #8
Feltnavn  Datatype Attributter Nulværdi Standardværdi Ekstra Handling
  navn  varchar(50)  Ja  NULL               
  data  int(11)  Ja  NULL             

Det er det jeg har i min tabel misc
Avatar billede stingbat Nybegynder
13. januar 2004 - 01:09 #9
Nej, var ikke det jeg mente... Sorry, fik vidst skrevet det til tvetydigt ;)

Tabellen misc:
navn    varchar(50)
data    int(11)
dato    date

:)
Avatar billede stingbat Nybegynder
13. januar 2004 - 01:11 #10
Hvis du bruger koden som jeg har skrevet den, skulle den meget gerne virke - når du ellers har tilføjet den dato.

Bemærk at du SKAL have @ med - er ikke en "fejl" at den er der, men er til for at "ignorere" evt. fejl, så disse ikke bliver vist til brugeren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester