webForumDet fria alternativet

Addera 1 och skicka vidare...

12 svar · 265 visningar · startad av BeaR123

BeaR123Medlem sedan aug. 200190 inlägg
#1

Tjena, jag skulle behöva lite hjälp.

Jag har ett script som ska änvändas så här genom länkarna:

visa.php?sida=start

och koden ser ut så här:

<?
if ($sida == "start")
{
	Header ("Location: start.php");
}

elseif ($sida == "start2")
{
	Header ("Location: start2.php");
}

else
{
	Header ("Location: error.php");
}
?>

Men jag vill lägga till en funktion, så om det blir det första altenativet "start" så ska den skicka besökaren iväg besökaren till rätt sida men även lägga till 1 i en counter fil. Så att jag sedan kan kolla statistiken på alla klicks (vilken undersida som är populärast)

Helst ska den spara i en mySQL databas men det går bra med andra förslag oxå.

FlashXMedlem sedan nov. 19991 033 inlägg
#2
<?
if ($sida == "start")
{
$sql = "UPDATE tabellen SET fält=fält + 1 WHERE id='start'";
mysql_query("$sql");
Header ("Location: start.php");
}

elseif ($sida == "start2")
{
$sql = "UPDATE tabellen SET fält=fält + 1 WHERE id='start2'";
mysql_query("$sql");
Header ("Location: start2.php");
}

else
{
$sql = "UPDATE tabellen SET fält=fält + 1 WHERE id='else'";
mysql_query("$sql");
Header ("Location: error.php");
}
?>
BeaR123Medlem sedan aug. 200190 inlägg
#3

Tack så mycket, jag hade just hittat en kod jag kunde göra likadant med fast den var typ 3 gånger större...

Tack så mycket det här behövde jag :D

En fråga bara ;

Om jag vill ha exakt så som där uppe fast tabellen ska se ut så här och ID ska 1 sen nästa 2 sen tredje 3 typ

ID | Namn | Visningar
1 | start | 13

och en sak till :D
Finns det någon kod som skapar nya rows`? alltså om t.ex. inte start (ID1) rown hade funnits nu så skulle den skapas och uppdateras med 1. ?

// Björn

[Redigerat av BeaR123 den 14 aug 2001]

Mats95Medlem sedan juli 200143 inlägg
#4
<?
if ($sida == "start")
{
$sql_update = "UPDATE tabellen SET visningar=visningar + 1 WHERE id=1";
mysql_query("$sql");
if (mysql_affected_rows() == 0)
$sql_insert = "INSERT INTO tabellen(ID, Namn, Visningar) VALUES(1,'start',1)";
mysql_query("$sql_insert");
Header ("Location: start.php");
}
elseif ($sida == "start2")
{
$sql_update = "UPDATE tabellen SET visningar=visningar + 1 WHERE id=2";
mysql_query("$sql");
if (mysql_affected_rows() == 0)
$sql_insert = "INSERT INTO tabellen(ID, Namn, Visningar) VALUES(2,'start2',1)";
mysql_query("$sql_insert");
Header ("Location: start2.php");
}
else
{
$sql_update = "UPDATE tabellen SET visningar=visningar + 1 WHERE id=3";
mysql_query("$sql");
if (mysql_affected_rows() == 0)
$sql_insert = "INSERT INTO tabellen(ID, Namn, Visningar) VALUES(3,'error',1)";
mysql_query("$sql_insert");
Header ("Location: error.php");
}
?>

Borde funka, i värsta fall så händer inget alls men du kan ju skriva ut ett felmeddelande under utvecklingsfasen så du ser vad som skiter sig!

printf("MySQL-Error: %s", mysql_error());

:00 Have fun!

------------------
TOTD: RTFM and THINK!

[Redigerat av Mats95 den 14 aug 2001]

BeaR123Medlem sedan aug. 200190 inlägg
#5

Jag vet inte om jag e du i huvudet eller om koden inte fungerar eller om det är min uppsättning av tabellen som strular, men det fungerar inte.

Så här ser min *.sql fil ut:

CREATE TABLE counter (
   id int(15) NOT NULL auto_increment,
   namn varchar(15) DEFAULT '0',
   visningar varchar(15) DEFAULT '0',
   PRIMARY KEY (id)
);

och sjävla scriptet ser ut så här:

<?
$server = "localhost";  
$databas = "xxxxxxxxx";   
$anvandare = "xxxxxx";   
$losen = "xxxxxxxxx";

mysql_connect ("$server","$anvandare","$losen");
mysql_select_db ("$databas");

if ($id == "1")
{
$sql_update = "UPDATE counter SET visningar=visningar + 1 WHERE id=1";
mysql_query("$sql");
if (mysql_affected_rows() == 0){
$sql_insert = "INSERT INTO counter(id, namn, visningar) VALUES(1,'start',1)";
mysql_query("$sql_insert"); }
	Header ("Location: internet.php");
}

elseif ($id == "2")
{
$sql_update = "UPDATE counter SET visningar=visningar + 1 WHERE id=2";
mysql_query("$sql");
if (mysql_affected_rows() == 0) {
$sql_insert = "INSERT INTO counter(id, namn, visningar) VALUES(2,'radio',1)";
mysql_query("$sql_insert"); }
	Header ("Location: internet_radio.php");
}

else
{
	Header ("Location: tempmain.php");
}
mysql_close();
?>

Vet någon vad som kan vara fel?

Jag vill alltså uppdatera det aktiva ID med 1 och om row:en inte finns så ska den skapa den.

Mats95Medlem sedan juli 200143 inlägg
#6

Stora och småbokstäver e noga!! Vad får du för felmeddelande??

Åsså ska det va "else if", med mellanslag!!

------------------
TOTD: RTFM and THINK!

BeaR123Medlem sedan aug. 200190 inlägg
#7

Det är just det, jag får inget felmeddelande. Den skickar bara vidare till rätt sida men den skapar eller uppdaterar inte... :(

Mats95Medlem sedan juli 200143 inlägg
#8

Okej, eftersom du inte kan skriva ut nåt innan du skickar Header så kan du testa att göra såhär: Header ("Location: internet.php?sqltest=".mysql_affected_rows());

Åsså kollar du va det står för värde när den nya sidan laddas, skriv likadant på alla sidor som ska laddas, bara för att kolla att det inte blir en nolla (det RIMMADE) ;)

------------------
TOTD: RTFM and THINK!

BeaR123Medlem sedan aug. 200190 inlägg
#9

hmmm. Jag ska testa. Får se om jag fattar ;)

BeaR123Medlem sedan aug. 200190 inlägg
#10

Så här blev det:

Ingen row uppdaterades eller skapades, sidan laddades so vanligt och adressen blev så här:
http://localhost/internet.php?sqltest=-1

Mats95Medlem sedan juli 200143 inlägg
#11

"If the last query failed, this function will return -1."

Du borde få ett felmeddelande!

Header ("Location: internet.php?sqltest=".urlencode(mysql_error()));

Skriv sen ut det på sidorna!
Såg att du gjort visningar till varchar(15), du måste ändra till int(11) annras vette fan hur det går med "visningar=visningar+1" ....
------------------
"A different point of view is worth a thousand points of IQ"

Didier Martin

[Redigerat av Mats95 den 14 aug 2001]

2basMedlem sedan juni 2001181 inlägg
#12

Ett helt ovidkommande inlägg bara:

varför är visningar varchar() överhuvudtaget?? Typiskt fall där integer borde vara perfekt ;)

/edit
Ojsan, det var ju det som Mats sa. Läste fel där.

------------------
Gratis hemsideadress och email => http://www.has.it

[Redigerat av 2bas den 14 aug 2001]

BeaR123Medlem sedan aug. 200190 inlägg
#13

hehe, ok.

Jag har precis börjat med mySQL och PHP så jag vet inte så mycket. Men jag ska testa det här. Jag återkommer :D Tack alla!

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