TestMax.dk Paster
  • Forside
  • Print
  • Bookmark
  • Kontakt
  • SiteMap


infobox infobox
 

statistik.

19-08-2007 23:06:12
 
 
Muligheder (Anmeld)
Skrevet af jordz
Kliks 629
Kategori PHP Guide's
hej har hørt fra noqex han gerne ville se noget php så folk kunne forstå det.

Jeg vil først springe ud i at lave et statistik system og jeg vil bygge det ovenpå grunks gamle side script: http://www.testmax.dk/For.....ead/208/id-site.aspx
da dette egentlig var enkelt og nemt at forstå.

jeg starter med at lave siderne ligesom grunk:


<?
/* Php Load og dette skal gemmes som index.php filen.*/
$page = $_GET['p']; // vi henter forst variablen p fra URL'en ved hjalp af $_GET variablen.
$page = strtolower($page); //for at sikre at brugeren ikke bare har skrevet HOME med stort laver vi lige en funktion til at lave alt skrift i lilleskrift
if($page == 'home'){ // hvis $p er home vil dette blive loaded der kunne evt hentes en ny side ligesom grunk vedhjalp af include funktionen.
echo 'dette er siden home';
} // hvis p ikke er home vil scriptet forsatte.
elseif($page == 'news'){ // hvis $p er news vil dette blive loaded.
echo 'dette er siden news';
} // ellers vil den forsatte
elseif($page == 'statistik'){ // hvis $p er statistik vil dette blive loaded.
include('statistik.php');
} // ellers vil den forsatte
elseif(isset($page)){ //til sidst inden vi lukker checker vi lige om brugeren har provet at satte $_GET['p'] i URL'en men ikke har ramt nogle sider, for hvis dette er tilfaldet burde han ledes til en 404 error side.
{
echo 'Error 404: Siden blev ikke fundet.';
} else { //tilsidst laver vi sa forsiden hvis brugeren er ny pa vores side og $p ikke er sat blevet brugt endnu.
echo 'Velkommen til siden.';
} // og lukker hele vores side loadnings system.
echo '<br /><br /><a href="?p=Home">Hjem</a>-<a href="?p=Statistik">Statistik</a>-<a href="?p=News">Login</a>'; // tilsidst echoer vi ogsa lige menuen sadan at uanset hvilken side du lander pa sa har du menuen og kan trykke rundt.
?>


Som i kunne se lavede jeg en funktion ligesom grunks nemlig 'include('filnavn');'
denne funktion går ind og henter filen og loader den direkte på stedet og er meget smart hvis du har store sciprt du skal bruge midt i fx en index fil.

Nu skal vi så have sat vores database tabel op hvor vores statistik skal gemmes.

håber i har lidt kendskab til det for jeg vil springe hurtigt over det.
vi laver tabel kaldet statistik, med 3 felter: id, page, nr.
id INT auto_increment og primær nøgle.
page TINYTEXT.
nr INT.

hvis i ikke forstår dette så prøv alligevel så svært er det ikke.
nu skal vi så have sat vores 3 sider ind, dette gør vi på knappen indsæt som er en funktion i phpmyadmin. (HUSK SKRIV MED LILLE.)
her vil da så komme 3 felter hvor du hver af dem kun udfylder punktet page med navnet news, statistik og home.
så skulle du gerne have 3 linjer i din tabel med de 3 sider.
derefter skal vi lave 2 forespørgsel som vi kommer til at bruge i vores php system.
den første er en hvor vi skal have alt information ud af tabellen, den mySQL funktion vi bruger hedder SELECT, dog er funktionen til dette så simpel så jeg vil bare skrive den op så i forstår:
SELECT * FROM `statistik` ORDER BY `id` DESC;
oversat: marker ALT fra statistik sæt i orden efter id lavest først højest tilsidst.
den anden er når der er en bruger der har trykket så skal vi helst opdatere feltet nr med en denne funktion hedder UPDATE og forespørgelsen ser sådan ud:
UPDATE `statistik` SET `nr` = `nr` + 1 WHERE `page` = \''.$page.'\';
oversat: opdater statistik sæt nr til nr+1 hvor page er lig med variablen page.

så opdatere vi lige vores index.php fil.


<?
/* Php Load og dette skal gemmes som index.php filen.*/
// først skal vi lige have åbnet databasen her er variablerne som skal udfyldes:
$server = '';
$username = 'localhost';
$password = 'admin';
$database = 'database';
$link = mysql_connect($server, $username, $password); //laver foresp til mysql connect.
if ($link){
mysql_select_db($database, $link); //laver foresp til databasen.
}
$page = $_GET['p']; // vi henter forst variablen p fra URL'en ved hjalp af $_GET variablen.
$page = strtolower($page); //for at sikre at brugeren ikke bare har skrevet HOME med stort laver vi lige en funktion til at lave alt skrift i lilleskrift
if($page == 'home'){ // hvis $p er home vil dette blive loaded der kunne evt hentes en ny side ligesom grunk vedhjalp af include funktionen.
$sql = 'UPDATE `statistik` SET `nr` = `nr` + 1 WHERE `page` = \''.$page.'\';'; //indsætter vores sql.
mysql_query($sql); //køre forespørgelsen.
echo 'dette er siden home';
} // hvis p ikke er home vil scriptet forsatte.
elseif($page == 'news'){ // hvis $p er news vil dette blive loaded.
$sql = 'UPDATE `statistik` SET `nr` = `nr` + 1 WHERE `page` = \''.$page.'\';'; //indsætter vores sql.
mysql_query($sql); //køre forespørgelsen.
echo 'dette er siden news';
} // ellers vil den forsatte
elseif($page == 'statistik'){ // hvis $p er statistik vil dette blive loaded.
$sql = 'UPDATE `statistik` SET `nr` = `nr` + 1 WHERE `page` = \''.$page.'\';'; //indsætter vores sql.
mysql_query($sql); //køre forespørgelsen.
include('statistik.php');
} // ellers vil den forsatte
elseif(isset($page)){ //til sidst inden vi lukker checker vi lige om brugeren har provet at satte $_GET['p'] i URL'en men ikke har ramt nogle sider, for hvis dette er tilfaldet burde han ledes til en 404 error side.
{
echo 'Error 404: Siden blev ikke fundet.';
} else { //tilsidst laver vi sa forsiden hvis brugeren er ny pa vores side og $p ikke er sat blevet brugt endnu.
echo 'Velkommen til siden.';
} // og lukker hele vores side loadnings system.
echo '<br /><br /><a href="?p=Home">Hjem</a>-<a href="?p=Statistik">Statistik</a>-<a href="?p=News">Login</a>'; // tilsidst echoer vi ogsa lige menuen sadan at uanset hvilken side du lander pa sa har du menuen og kan trykke rundt.
?>


nu mangler vi blot at lave vores statistik side for at se hvor mange som har trykket på hver side:


<?php
/* Php Load og dette skal gemmes som statistik.php filen og skal ligge i samme mappe som index.php.*/
echo '<table>'; //starter tabellen.
echo '<tr><td>Side:</td><td>Antal clicks:</td></tr>'; //laver toppen.
$sql = 'SELECT * FROM `statistik` ORDER BY `id` DESC;'; //indsætter vores foresp.
$result = mysql_query($sql); //laver query.
if ($result){ //hvis query går godt henter vi resten og laver et array.
       while($række = mysql_fetch_array($result)) { //for hver række sætter vi et resultat og tømmer den med funktionen mysql_fetch_array.
              $data[] = $række; //indsætter vi dem i data array.
       }
}
for($i=0;$i<count($data);$i++){ //$i = 0, når i bliver lig eller over antal data stopper den, hvergang bliver der lagt en til i.
       extract($data[$i]); //extracter dataen fra array nr $i (0, 1, 2, 3 osv).
       echo '<tr><td>'.$page.'</td><td>'.$nr.'</td></tr>'; //echoer output hvergang for er.
}
echo '</table>'; //slutter tabellen.
?>


og så skulle systemet gerne virke.

dog har jeg ikke testet det så hvis i finder fejl er i velkommen til lige at skrive for det blev sku lidt sent denne søndag jeg sad og lavede det :D
Sprog: PHP - HTML - CSS - Javascript - MSL
Hjemeside: [url]http://www.Webcomfort.dk[/url]
 
infobox infobox


infobox infobox
 
#1phanion(Anmeld) 19-08-2007 23:32:53
 
 
Du kunne også lave en mere simpel "id-site"..
<?php
$page = $_GET['page'];
if(empty($page)){ require("forside.php"); }
if(file_exists("$page.php")){ require("$page.php"); }
if(!file_exists("$page.php") && !empty($page)){ print "Error 404: Siden kan ikke vises!"; }
?>

- Gem dine filer som fx. fil.php, også linker du til : dinside.dk/?page=fil, dette vil require(inkludere) din fil.php, dog skal filerne ligge i samme mappe, ellers kan du smide "mappe/" ind for $page i file_exists() & empty().
i qm yh4 b54e5 you nioirew
 
infobox infobox

infobox infobox
 
#2kar(Anmeld) 19-08-2007 23:37:16
 
 
kan ikke forstå hvorfor folk smider noget ud som guide hvis det ikke virke?

men du har da lidt felj.

mysql_select_db($database, $link); //laver foresp til databasen. <-- $link har du da ikke nogle steder ? :P

index.php filen kunne godt laves på en meget smart måde..
du burger bare

if ($page == "home") { $sql = "bla"; }
if ($page == "mormor") { $sql = "bla"; }
mysql_query($sql);


men nice nok med guides i php
90% af alle teenagere ville dø hvis Arto havde en systemfejl og blev permanent lukket. Hvis du er en af de 10% der ville grine, copy & paste dette til din signatur.
 
infobox infobox

infobox infobox
 
#3kar(Anmeld) 20-08-2007 00:27:55
 
 
#1 > ne0n nej for det er ikke alle der bruger under sider.

så skulle man lave det med p´s id

$id = $_GET['p'];
$sql = "SELECT * FROM statiks WHERE navn='$id'";
$q = mysql_query($sql);
if (mysql_num_rows($q) == 1) {
$r = mysql_fetch_array($q);
$sql = "UPDATE statiks set clicks='($r['clicks'] + 1)' WHERE id='".$r['id']."'";
}
else {
$sqls = "INSERT INTO statiks ('navn','clicks') VALUES ('$id','1')";
mysql_query($sqls);
}

på den måde for du et meget kort script
90% af alle teenagere ville dø hvis Arto havde en systemfejl og blev permanent lukket. Hvis du er en af de 10% der ville grine, copy & paste dette til din signatur.
 
infobox infobox

infobox infobox
 
#4phanion(Anmeld) 20-08-2007 01:04:07
 
 
kar, jeg mente ikke med statestik, noqex nævnte kun "id-site" ikke noget statestik oveni det :)
i qm yh4 b54e5 you nioirew
 
infobox infobox

infobox infobox
 
#5jordz(Anmeld) 20-08-2007 18:02:28
 
 
#2 #1 > alt kan laves smartere og også kun min metode, dog giver denne metode nok det bedste fremvisning i hvordan man kan lave det som noqex bad om nemlig statistik over sider som er blevet set antal gange.

#2 > fejlen er ændret. fordi jeg havde kappet det ud fra et gammelt script.
Sprog: PHP - HTML - CSS - Javascript - MSL
Hjemeside: [url]http://www.Webcomfort.dk[/url]
 
infobox infobox

infobox infobox
 
#6noqex(Anmeld) 22-08-2007 10:08:48
 
 
LÆKKERT jordz :)
 
infobox infobox

Påmindelse ved nyt svar

Ved at tilmelde dig automatisk påmindelse, modtager du en email så snart denne tråd bliver besvaret, dog sender vi kun en mail til dig, også selvom der er kommet flere svar, simpelthen for at spare dig for spam i din indbakke.


infobox infobox
  Svar på tråden  
   
 
 
infobox infobox

infobox infobox
  Læs dette før du sender dit indlæg!  
 
Ved tryk på send knappen accepterer du vores regelsæt som kan læses her
Praktiske informationer
Type Eksempel Resultat
Fed [b]din tekst[/b] din tekst
Kursiv [k]din tekst[/k] din tekst
Understreg [u]din tekst[/u] din tekst
Kode felt [code]din tekst[/code]
din tekst
infobox infobox