webForumDet fria alternativet

Addera räknare "manuelt".

PHPur PHP

19 svar · 830 visningar · startad av Dwarfen

Medlem sedan jan. 2002241 inlägg
Frågan#1

Sitter här och fick för mig att få igång lite php så här på kvällskvisten.
Tänkte göra ett väldigt simpelt "system".
Tänkte lägga ut några filer på min hemsida, och vill gärna se hur många gånger varje fil har blivit nerladdad.

Jag har tänkt som såhär, varje fil läggs in i en databas (sökvägen till filen samt namnet), id skapas direkt, samt en manuel räknare.
I Databasen är alltså: Id, namn, plats samt räknaren.
OCh länken som leder till filen är:

echo ('<BR><a href="admin/ung?id=' . $array['plats'] . '" TARGET=_BLANK>a</a><BR>');

Nu är bara problemet hur jag ska göra på sidan som den hänvisas till.
Hur ska jag göra? För nu skickas ju information om vilken "fil" det är som är klickad på, hur gör jag för att addera i "räknaren"?

Medlem sedan aug. 20002 975 inlägg
#2

Skicka id-numret med länken.

I skriptet gör du sedan en uppräkning av räknaren, hämtar 'plats' samt skickar vidare till 'plats' med en header("Location: ").

Medlem sedan jan. 2002241 inlägg
#3

Nu följer id med länken i form av:

echo ('<a href="ung.php?id=' . $array['id'] . '" TARGET=_BLANK>Filen</a> <HR>');

Hur ska jag sedan gå tillväga, det ska ju vara en addering som ska skötas själv, så INSERT INTO kan jag väl inte använda mig av?

Medlem sedan aug. 20002 975 inlägg
#4

Något i stil med:

$sql = "UPDATE tabell SET raknare = raknare + 1 WHERE Id = ".intval($_GET['id']);
mysql_query($sql);

if (mysql_affected_rows() == 0) {
   echo "Filen fanns inte!";
   exit;
}

$sql = "SELECT plats FROM tabell WHERE Id = ".intval($_GET['id']);
$result = mysql_query($sql);
$location = mysql_result($result, 0, 'plats');

header("Location: $location");
exit;
Medlem sedan jan. 2002241 inlägg
#5

Vad gör: header("Location: $location");
igentligen?

Medlem sedan aug. 20002 975 inlägg
#6

Den skickar webbläsaren vidare till filen.

Medlem sedan jan. 2002241 inlägg
#7

Innan kunde jag se sidan som tog imot id, nu blir det: sidan kan en visas.
Provade med din kod och då blev allt kaj

<?php
session_start();?>
<?php
	//Ställ in användarnamn och lösenord för databasen
	$username = '';
	$password = '';
	$dbName = '';
	mysql_connect('localhost', $username, $password) or die (mysql_error());
	mysql_select_db($dbName) or die (schyse());

$sql = "UPDATE filnamn SET visitor = visitor + 1 WHERE Id = ".intval($_GET['id']); 
mysql_query($sql); 

if (mysql_affected_rows() == 0) { 
   echo "Filen fanns inte!"; 
   exit; 
} 

$sql = "SELECT plats FROM filnamn WHERE Id = ".intval($_GET['id']); 
$result = mysql_query($sql); 
$location = mysql_result($result, 0, 'plats'); 

header("Location: $location"); 
exit; 
?>
Medlem sedan aug. 20002 975 inlägg
#8

Vad har du lagrat i kolumnen `plats` ?
Hur stämmer sökvägarna från detta skript till filen som ska hämtas ?

Medlem sedan jan. 2002241 inlägg
#9

I plats har jag lagrat: d:\filnamn.
Sökvägarna ska stämma, iallafall vad jag kan se.
Problemet är nu att jag inte kan öppna "mål filen", alltså sidan med den koden som är ovan.

Medlem sedan aug. 20002 975 inlägg
#10

Inte ligger väl din fil på diskroten ?

Hur ligger filen i förhållande till skriptet ?
Ligger den överhuvudtaget så det går att nå den från webben direkt, utan att gå över detta skript ?

Medlem sedan jan. 2002241 inlägg
#11

Den ligger inte i diskroten, skrev bara in den vägen pga slöheten...
Den ligger så den går att nå utan att gå genom scriptet.

Medlem sedan aug. 20002 975 inlägg
#12

Får du en 404 så betyder det att dina sökvägar är fel utifrån skriptet.

Medlem sedan jan. 2002241 inlägg
#13

Det är det som är så mysko, för sökvägen är korrekt, sidan som den hänvisas till finns. Men inte när jag följer länken.
Manuel inskrivning funkar fint.

Medlem sedan aug. 20002 975 inlägg
#14

Vad står det i adressfältet på webbläsaren när du får 'sidan kan inte visas' ?

Medlem sedan jan. 2005110 inlägg
#15

Som vanligt är den bästa lösningen - FELSÖK. print() och print_r() är till för att användas.

Vad får du ut om du ändrar detta i ditt skript? Du lägger alltså till raden med PRINT mellan 5:e och 3:e raden nerifrån i skriptet du skrev senast. Sedan kommenterar du bort 3:e raden nerifrån med //. Då skriver du ut $location, och kan alltså se vad som har gått fel.

$location = mysql_result($result, 0, 'plats');

print $location;

//header("Location: $location");
exit;
?>

Medlem sedan jan. 2002241 inlägg
#16

Matte: http://localhost/ung.php?id=2
Så länkningen stämmr, sidan ung.php finns.

mmmMange: Provade att lägga till print $location och // header...
Detta fick sidan att vissas och fungera som det var tänkt. Mysko?

Edit:
Tillochmed räknaren fungerar som det är tänkt. Men varför blir det på detta viset för?

Medlem sedan aug. 20002 975 inlägg
#17

Det var tänkt att den skulle visa/hämta en fil, och det gör den väl inte om du avmarkerar headern ?

Vad gav din utskrift av $location ?

Hur fungerar det om du istället för header() har en länk, och klickar på denna länk:

// header("Location: $location");
echo "<a href='$location'>Till fil</a>";

Vad står det då i webbläsarens adressfält ?

Medlem sedan jan. 2002241 inlägg
#18

Utskriften av $location gav inget mer än hänvisning till filens plats. d:\fil.exe, funkade med andra ord som jag ville.

Och gör jag som du föreslog blir det:
http://dwarfen.myftp.org/default12.php

Medlem sedan aug. 20002 975 inlägg
#19

Och d:\file kommer fortfarande inte att fungera.

Vad jag menade var, vad står det i webbläsarens fönster när du klickat på länken som genererades ? Med din beskrivning skulle det stå http://dwarfen.myftp.org/d:\fil.exe
Vad står det för länken i den genererade HTML-koden ?

Istället för att bara antyda och skriva om kan du väl visa exakt det du får fram, och vad du har.
Är omöjligt att hjälpa dig annars.

Medlem sedan jan. 2002241 inlägg
#20

Nej, det står: http://83.248.186.146/ung.php?id=4 nu.

Och som jag skrev ovan så funkar funktionen som det var tänkt, men tack för all din hjälp.

137 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)