29. juni 2004 - 14:09
Der er
53 kommentarer og 1 løsning
Hjælp til en database for denne kode
Hej allesammen ! Jeg sider med denne Counter, men kan sku ikke finde ud af at lave en Mysql over den. >>>>>>Koden>>>>>>>> <? include("include/config.php"); ?> <?php function subtractDays( $days, $timestamp ) { $time = $timestamp - ( ( $days ) * 24 * 60 * 60 ); return date( "Y-m-d" , $time ); } $besoegendeSamlet = 0; $besoegendeDag = 0; $besoegendeUge = 0; $besoegendeMaaned = 0; $besoegendePrDag = 0; $query = "SELECT count( * ) as visits FROM visitor"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeSamlet = $row["visits"]; $now = getdate(); $now = mktime( $now["hours"], $now["minutes"], $now["seconds"], $now["mon"], $now["mday"], $now["year"] ); $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 0, $now ) . " 00:00:00' AND now()"; $result = mysql_query( $query ); //$row = mysql_fetch_array( $result ); $besoegendeDag = $row["visits"]; $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 7, $now ) . " 00:00:00' AND '" . subtractDays( 1, $now ) . " 23:59:59'"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeUge = $row["visits"]; $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 30, $now ) . " 00:00:00' AND '" . subtractDays( 1, $now ) . " 23:59:59'"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeMaaned = $row["visits"]; $query = "SELECT TO_DAYS( now() ) - TO_DAYS( min( dato ) ) as days From visitor"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendePrDag = round( $besoegendeSamlet / ( $row["days"] + 1 ), 1 ); $query = "SELECT count(*) AS antal FROM onlineusers"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $onlineusers = $row["antal"]; $ownvisits = 1; if( isset( $_COOKIE["ownvisits"] ) ) $ownvisits = $_COOKIE["ownvisits"]; ?> <table style="font-size: 10px; color: #C5C5C5;" id="tabel" onmouseover="movein( this );" onmouseout="moveout( this );" cellspacing="1" cellpadding="0"> <tr> <th colspan="2" style="border-bottom: 2px solid #C5C5C5;">Besøgende</th> </tr> <tr> <td align="left" width="125px">Besøgende:</td> <td align="right"><?= $besoegendeSamlet; ?>.0</td> </tr> <tr> <td align="left">I dag:</td> <td align="right"><?= $besoegendeDag; ?>.0</td> </tr> <tr> <td align="left">7 dage:</td> <td align="right"><?= $besoegendeUge; ?>.0</td> </tr> <tr> <td align="left">30 dage:</td> <td align="right"><?= $besoegendeMaaned; ?>.0</td> </tr> <tr> <td align="left">Gennemsnit/dag:</td> <td align="right"><?= ( strpos( $besoegendePrDag, "." ) ? $besoegendePrDag : $besoegendePrDag . ".0" ); ?></td> </tr> <tr> <td align="left">Dine besøg:</td> <td align="right"><?= $ownvisits . ".0"; ?></td> </tr> <tr> <td align="left">Brugere online:</td> <td align="right"><?= $onlineusers . ".0"; ?></td> </tr> </table>
Annonceindlæg fra HP
Har du oprettet den tabel og de felter der skal til?
Du kan også prøve: $result = mysql_query( $query ) or die(mysql_error()); det vil måske give lidt bedre output af den fejl der opstår...
hmm, misforstår nok igen... Du vil have de tabeller og felter der skal til, ikke? Men er der ikke en fil der skal skrive noget til den database? Den ovenstående kode, udhenter da bare de data der er/ikke er i tabellen...
Ja ikke er i tabelen, Jeg mangler en MySql db til det
Jeg fik en php kode, Men jeg fik ikke MySql databasen til den :-( Derfor spøre jeg om hjælp til dette.... Håber du / i forstår mig
Ja, men har du ikke en fil hvor der er noget med INSERT INTO visitor ? For ellers får du jo ikke særlig meget ud af den database...
30. juni 2004 - 01:16
#10
Så tror jeg ikke du kan få særlig meget ud af det dér... Når du ikke putter noget i databasen, kan du jo heller ikke hente noget ud... Men du vil have en counter der kan vise alt dét der? Altså både 7 dage, 49 dage, lige nu, gennemsnit og hvad der ellers er?
30. juni 2004 - 01:25
#11
Jeg vil gerne hjælpe dig med det, hvis du vil, men så vil jeg dele den op i små bider. Først kan jeg paste en online-viser til dig: <? //connect db $ip = $_SERVER['REMOTE_ADDR']; $tjek_antal = mysql_query("SELECT * FROM online WHERE ip = '$ip'") or die(mysql_error()); $mig_online = mysql_num_rows($tjek_antal); if($mig_online) == 0) { mysql_query("INSERT INTO online (tid, ip) VALUES (NOW(),'$ip')") or die(mysql_error()); } else { mysql_query("UPDATE online SET tid=NOW() WHERE ip='$ip'") or die(mysql_error()); } mysql_query("DELETE FROM online WHERE date_add(tid,interval 5 MINUTE) < NOW()") or die(mysql_error()); $online = mysql_query("SELECT * FROM online") or die(mysql_error()); $antal_online = mysql_num_rows($online); echo "Online: " . $antal_online; mysql_close(); ?> Så opretter du en tabel der hedder: online, og indeholder felterne: id - int(11) autoincrecement og unik tid - datetime ip - varchar(32) Den burde funke...
30. juni 2004 - 01:26
#12
Den vil så vise alle dem der er online, og slette dem igen hvis de ikke har foretaget sig noget på din side de sidste 5 minutter...
30. juni 2004 - 01:55
#13
Det lyder godt du vil hjælpe mig, Ja der skal være det hele på den eller så meget man nu kan få :-) Takker
30. juni 2004 - 01:59
#14
Ser denne ok ud til MySql CREATE TABLE online ( ip varchar(32) not null, tid datetime not null, id int(11) not null, );
30. juni 2004 - 02:01
#15
Du kan jo prøve den :) Måske der skal nogen (`) rundt om... CREATE TABLE online ( `ip` varchar(32) not null, `tid` datetime not null, `id` int(11) not null, );
30. juni 2004 - 02:06
#16
Sådan ligger inde i db nu!
30. juni 2004 - 02:07
#17
Ok, så prøv at opret en fil, f.eks. online.php, der indeholder det jeg pastede og se om den så ikke registrer 1 bruger online...
30. juni 2004 - 02:08
#18
Er gjort, Får en fejl på line 11 <? include("include/config.php"); $ip = $_SERVER['REMOTE_ADDR']; $tjek_antal = mysql_query("SELECT * FROM online WHERE ip = '$ip'") or die(mysql_error()); $mig_online = mysql_num_rows($tjek_antal); if($mig_online) == 0) { mysql_query("INSERT INTO online (tid, ip) VALUES (NOW(),'$ip')") or die(mysql_error()); } else { mysql_query("UPDATE online SET tid=NOW() WHERE ip='$ip'") or die(mysql_error()); } mysql_query("DELETE FROM online WHERE date_add(tid,interval 5 MINUTE) < NOW()") or die(mysql_error()); $online = mysql_query("SELECT * FROM online") or die(mysql_error()); $antal_online = mysql_num_rows($online); echo "Online: " . $antal_online; mysql_close(); ?>
30. juni 2004 - 02:12
#19
if($mig_online) == 0) { <-- lige en ) for meget i den der: if($mig_online == 0) {
30. juni 2004 - 02:14
#20
30. juni 2004 - 02:18
#21
Perfekt jo :) Så er det bare, hvordan vi skal gøre med det andet... Skal den tjekke for unikke brugere? Altså at en bruger kun kan blive registreret een gang? Det må den næsten skulle, kan også se på det du pastede i starten, at den tilsyneladende sætter en cookie hos brugeren når vedkommende er registreret...
30. juni 2004 - 02:20
#22
Unikke Besøgende Besøgende total = Alle I dag 7 dage 30 dage Gennemsnit/dag Dine besøg Brugere online
30. juni 2004 - 02:21
#23
Det er sådan meget gerne skulle ene ud, vis alt går som det skal :-)
30. juni 2004 - 02:24
#24
Så kan du starte med at lave en tabel, og lad os bare kalde den visitor som i din paste, med felterne: id int(11) autoincrecement unik dato datetime ip varchar(32) Ip'en er nok ikke så vigtig, men lad os bare tage den med... Og så skal jeg lige have et par minutter for mig selv og teste det :) Ellers ender vi vist med at rette fejl resten af natten :)
30. juni 2004 - 02:26
#25
autoincrecement unik <<<< Skal det oxo med i mysql
30. juni 2004 - 02:28
#26
Ja, skal det faktisk... autoincrecement gør, at id-feltet automatisk stiger, altså: 1, 2, 3, 4, 5 etc.
30. juni 2004 - 02:29
#27
ok nu skal jeg lade dig kode i fred *G*
30. juni 2004 - 02:31
#28
Jeg får fejl på denne CREATE TABLE visitor ( id int(11) autoincrecement unik not null, dato datetime not null, ip int(11) not null, );
30. juni 2004 - 02:33
#29
Prøv den her så: CREATE TABLE visitor ( id int(11) not null auto_increment, dato datetime not null, ip int(11) not null, UNIQUE KEY `id` (`id`) ); ...og så meget for at lade mig kode i fred?! :)
30. juni 2004 - 02:56
#30
Sååååådan... Alle udhentningerne har jeg taget fra det du selv pastede, og det ser faktisk ikke helt tosset ud, så prøv: //connect $ip = $_SERVER['REMOTE_ADDR']; if(!isset( $_COOKIE["ownvisits"])) { mysql_query("INSERT INTO visitor(id, dato, ip) VALUES('',NOW(),'$ip')"); setcookie("ownvisits", "1", time()+15552000); } function subtractDays( $days, $timestamp ) { $time = $timestamp - ( ( $days ) * 24 * 60 * 60 ); return date( "Y-m-d" , $time ); } $besoegendeSamlet = 0; $besoegendeDag = 0; $besoegendeUge = 0; $besoegendeMaaned = 0; $besoegendePrDag = 0; $query = "SELECT count( * ) as visits FROM visitor"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeSamlet = $row["visits"]; $now = getdate(); $now = mktime( $now["hours"], $now["minutes"], $now["seconds"], $now["mon"], $now["mday"], $now["year"] ); $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 0, $now ) . " 00:00:00' AND now()"; $result = mysql_query( $query ); //$row = mysql_fetch_array( $result ); $besoegendeDag = $row["visits"]; $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 7, $now ) . " 00:00:00' AND '" . subtractDays( 1, $now ) . " 23:59:59'"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeUge = $row["visits"]; $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 30, $now ) . " 00:00:00' AND '" . subtractDays( 1, $now ) . " 23:59:59'"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeMaaned = $row["visits"]; $query = "SELECT TO_DAYS( now() ) - TO_DAYS( min( dato ) ) as days From visitor"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendePrDag = round( $besoegendeSamlet / ( $row["days"] + 1 ), 1 ); echo " <table width=300> <tr> <td>Besøgende:</td> <td>" . $besoegendeSamlet . "</td> </tr> <tr> <td>I dag:</td> <td>" . $besoegendeDag . "</td> </tr> <tr> <td>7 dage:</td> <td>" . $besoegendeUge ."</td> </tr> <tr> <td>30 dage:</td> <td>" . $besoegendeMaaned . "</td> </tr> <tr> <td>Gennemsnit/dag</td> <td>" . $besoegendePrDag . "</td> </tr> </table>"; ... i f.eks. visitor.php
30. juni 2004 - 03:03
#31
30. juni 2004 - 03:04
#32
<? include("include/config.php"); $ip = $_SERVER['REMOTE_ADDR']; if(!isset( $_COOKIE["ownvisits"])) { mysql_query("INSERT INTO visitor(id, dato, ip) VALUES('',NOW(),'$ip')"); Line12>>>>>>> setcookie("ownvisits", "1", time()+15552000); } function subtractDays( $days, $timestamp ) { $time = $timestamp - ( ( $days ) * 24 * 60 * 60 ); return date( "Y-m-d" , $time ); } $besoegendeSamlet = 0; $besoegendeDag = 0; $besoegendeUge = 0; $besoegendeMaaned = 0; $besoegendePrDag = 0;
30. juni 2004 - 03:05
#33
Hmmm, sender du et html-output eller lign. før linien med setcookie?
30. juni 2004 - 03:06
#34
Tror næsten der er noget i din config.php så... Prøv at connecte manuelt i filen for at se, altså: mysql_connect("host", "user", "pass"); mysql_select_db("database"); i stedet for: include("include/config.php");
30. juni 2004 - 03:06
#35
Nej ikke andet en det du ser foran dig
30. juni 2004 - 03:07
#36
Vil du have hele koden som der ser ud lige nu
30. juni 2004 - 03:08
#37
Nah, medmindre der er noget længere oppe i filen før <?, ellers synes jeg du skal prøve at connecte på den anden måde... Har du evt. kommet til at få et <mellemrum> før "<?" ?
30. juni 2004 - 03:12
#38
Hele filen som den ser ud nu, men fejl på line 13 <? mysql_connect("localhost", "dvddatabasen_dk", "XXXXXX"); mysql_select_db("dvddatabasen_dk"); $ip = $_SERVER['REMOTE_ADDR']; if(!isset( $_COOKIE["ownvisits"])) { mysql_query("INSERT INTO visitor(id, dato, ip) VALUES('',NOW(),'$ip')"); setcookie("ownvisits", "1", time()+15552000); Line13>>>>> } function subtractDays( $days, $timestamp ) { $time = $timestamp - ( ( $days ) * 24 * 60 * 60 ); return date( "Y-m-d" , $time ); } $besoegendeSamlet = 0; $besoegendeDag = 0; $besoegendeUge = 0; $besoegendeMaaned = 0; $besoegendePrDag = 0;
30. juni 2004 - 03:13
#39
UPS Hele koden kommer her , Undskyld <? mysql_connect("localhost", "dvddatabasen_dk", "XXXXXX"); mysql_select_db("dvddatabasen_dk"); $ip = $_SERVER['REMOTE_ADDR']; if(!isset( $_COOKIE["ownvisits"])) { mysql_query("INSERT INTO visitor(id, dato, ip) VALUES('',NOW(),'$ip')"); setcookie("ownvisits", "1", time()+15552000); Line13>>>>> } function subtractDays( $days, $timestamp ) { $time = $timestamp - ( ( $days ) * 24 * 60 * 60 ); return date( "Y-m-d" , $time ); } $besoegendeSamlet = 0; $besoegendeDag = 0; $besoegendeUge = 0; $besoegendeMaaned = 0; $besoegendePrDag = 0; $query = "SELECT count( * ) as visits FROM visitor"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeSamlet = $row["visits"]; $now = getdate(); $now = mktime( $now["hours"], $now["minutes"], $now["seconds"], $now["mon"], $now["mday"], $now["year"] ); $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 0, $now ) . " 00:00:00' AND now()"; $result = mysql_query( $query ); //$row = mysql_fetch_array( $result ); $besoegendeDag = $row["visits"]; $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 7, $now ) . " 00:00:00' AND '" . subtractDays( 1, $now ) . " 23:59:59'"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeUge = $row["visits"]; $query = "SELECT count( * ) as visits FROM visitor WHERE dato BETWEEN '" . subtractDays( 30, $now ) . " 00:00:00' AND '" . subtractDays( 1, $now ) . " 23:59:59'"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendeMaaned = $row["visits"]; $query = "SELECT TO_DAYS( now() ) - TO_DAYS( min( dato ) ) as days From visitor"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $besoegendePrDag = round( $besoegendeSamlet / ( $row["days"] + 1 ), 1 ); echo " <table width=300> <tr> <td>Besøgende:</td> <td>" . $besoegendeSamlet . "</td> </tr> <tr> <td>I dag:</td> <td>" . $besoegendeDag . "</td> </tr> <tr> <td>7 dage:</td> <td>" . $besoegendeUge ."</td> </tr> <tr> <td>30 dage:</td> <td>" . $besoegendeMaaned . "</td> </tr> <tr> <td>Gennemsnit/dag</td> <td>" . $besoegendePrDag . "</td> </tr> </table>";
30. juni 2004 - 03:15
#40
Jeg har prøvet at klikke på din visitor.php og før var der fejl på linie 82 og ikke 13, og nu går den helt amok, så sig lige til når den har "stabiliseret" sig :)
30. juni 2004 - 03:16
#41
Sådan, jeg prøvet bare lige nådet af :-)
30. juni 2004 - 03:20
#42
Og <? står på linie 1? Og INGEN mellemrum OVERHOVEDET før <? ?
30. juni 2004 - 03:22
#43
Nu stå <? på line 1 ingen ting over det
30. juni 2004 - 03:23
#44
Sådan nu er der ingen fejl ( Stort smil )
30. juni 2004 - 03:31
#45
Perfekt :) Og det ser faktisk også ud som om den registrerer at vi har besøgt den een gang... Det der med antallet af egne besøg, den sprang jeg altså over... den må vi lege med, hvis du plager tilstrækkelig længe, ellers synes jeg den er dum :)
30. juni 2004 - 04:01
#46
Ja det ser godt ud må jeg sige Besøgende: = Er dette Unikke bruger I dag: 7 dage: 30 dage: Gennemsnit/dag
30. juni 2004 - 04:02
#47
Det er allesammen unikke brugere... Skal det ikke være det? Der er ingen brugere der optræder mere end eet sted...
30. juni 2004 - 04:04
#48
ok,
30. juni 2004 - 04:10
#49
Nå, men nu vil jeg hoppe i køjen... Tillader mig lige at smide et lille svar, så kan du jo gøre med det (næsten) hvad du vil :) Kan jo være der kommer nogen, der har en kommentar til hvordan det kan laves mere snedigt. Jeg har ikke rigtigt lavet sådan et system før, så det var kun udfra hvad jeg selv mener der er smartest... Godnat, sov godt ! :)
30. juni 2004 - 04:11
#50
Og jeg sagde "svar" !
30. juni 2004 - 04:41
#51
Du skal sku have mere en tak for alt din hjælp Næste gang du kommer til Søborg giver jeg sku en øl
30. juni 2004 - 04:43
#52
Lyder sku godt, men du skal nok lige sende et kort der viser vejen til Søborg først :) Nat igen... /Jaw
30. juni 2004 - 09:37
#53
G`Morgen Søborg ligger tæt ved København.
30. juni 2004 - 15:11
#54
Ohh, ja selvfølgelig - Radiobyen, 2860 Søborg :)
Vi tilbyder markedets bedste kurser inden for webudvikling