Avatar billede thesaint Nybegynder
20. december 2006 - 23:47 Der er 7 kommentarer og
1 løsning

MySQL opdateres ikke når der klikkes på et link

Jeg har en side, hvor der vises skiftende links, afhængigt af, hvornår denne side besøges. Jeg vil gerne måle, hvilke af disse links der er mest populære og har derfor forsøgt, at indpasse det i MySQL. Normalt en simpel ting, men jeg kan p.t. ikke se skoven for træerne.

Følgende tabel er oprettet:

CREATE TABLE Klik (
id INT NOT NULL AUTO_INCREMENT ,
Navn VARCHAR( 255 ) NOT NULL ,
AntalKlik VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( id )
) TYPE = MYISAM ;


PHP er som følger:

<?php
$Navn = $x;

$Db = mysql_connect("xxxxxxxxx", "xxxxxxx", "xxxxx");
mysql_select_db("xxxxxxx", $Db);

// test om der allerede er en post for $Navn i tabellen...
$SQL = "SELECT count(*) FROM Klik WHERE Navn='$Navn'";
$Res = mysql_query($SQL, $Db);

$Row = mysql_fetch_row($Res);
if ($Row[0] == 0)
{
    // Hvis der ikke var en post så oprettes en med et antal klik lig med 1
    $SQL = "INSERT INTO Klik (Navn, AntalKlik) VALUES ('$Navn', 1)";
}
else
{
    // hvis der er en post så lægges 1 til værdien af AntalKlik
    $SQL = "UPDATE Klik SET AntalKlik=AntalKlik+1 WHERE Navn='$Navn'";
}

// INSERT eller UPDATE
$Res = mysql_query($SQL, $Db);

mysql_close($Db);

?>


I PHP hvor jeg har anført:
$Navn = $x;

har jeg gjort dette ud fra, at $x reelt er et navn ( eksempelvis Thomas ), idet selve det link, der er klikket på lyder:
http://www.mitdomæne.dk/visnavne.php?x=Thomas

Jeg får ingen fejlmeddelelser, men der sker ingen opdatering.
Underforstået så bliver Thomas ikke oprettet.

Hvad har jeg overset?
Avatar billede michaeltryl Seniormester
20. december 2006 - 23:57 #1
er ikke sikker, men
$SQL = "UPDATE Klik SET AntalKlik=AntalKlik+1 WHERE Navn='$Navn'";
burde den ikke se sådan ud
$SQL = "UPDATE Klik SET AntalKlik= $AntalKlik+1 WHERE Navn='$Navn'";
og så skal du inden sætte væriablen $AntalKlik til det som er i databsen
Avatar billede thesaint Nybegynder
21. december 2006 - 00:04 #2
Hmm. Det prøvede jeg også, men det gav samme resultat, eller rettere mangel på samme.
Avatar billede thesaint Nybegynder
21. december 2006 - 00:19 #3
Det er blevet lidt sent. Sover på det og kan måske se træerne i morgen formiddag ;) men vil sætte pris på enhver mulig hjælp.
Avatar billede michaeltryl Seniormester
21. december 2006 - 00:20 #4
prøv nedstående istedet for
    $SQL = "UPDATE Klik SET AntalKlik=AntalKlik+1 WHERE Navn='$Navn'";

--------------
$klik = mysql_query("SELECT AntalKlik FROM Klik WHERE Navn ='$navn");
while($a = mysql_fetch_array($klik))
$antal= $a['AntalKlik'];
$nyantal = "$antal+1";

mysql_query("UPDATE Klik SET AntalKlik = '$nyantal' WHERE Navn='$Navn'") or die(mysql_error());
-----------------------------
Avatar billede wordwrap Nybegynder
21. december 2006 - 00:23 #5
har lige prøvet at copy/paste din kode.. og her virker den fint..

hvis du retter: $Res = mysql_query($SQL, $Db);
til
$Res = mysql_query($SQL, $Db) or die(mysql_error());

får du så stadig ingen fejl ?
Avatar billede thesaint Nybegynder
21. december 2006 - 00:32 #6
Ups. Jo.
Table 'xxxxxxx.Klik' doesn't exist - alså noget galt med:
mysql_select_db("xxxxxxx", $Db);

Forstår jeg godt nok ikke. Den skule skam være der.
Prøver at se hvad dælen jeg har gjort galt. Tror pointene er dine Strange ;)
Avatar billede wordwrap Nybegynder
21. december 2006 - 00:40 #7
du får et svar så.. :)
Avatar billede thesaint Nybegynder
21. december 2006 - 00:44 #8
OK. Tak. Det var sådan set træerne og skoven. Anede mig. Jeg vil sove roligt nu.
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