Avatar billede bigtime Nybegynder
19. august 2010 - 08:48 Der er 11 kommentarer og
1 løsning

UPDATE db eller INSERT i db

ville lige høre om jeg er helt ude i hampen med det her eller om jeghar lavet lidt rigtigt hehe, den kommer med fejl.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' TO_DAYS(dato)='TO_DAYS(now()')'


$res = mysql_query("select * from ReklameStatestik where type='$type' AND http='$http' , TO_DAYS(dato)='TO_DAYS(now()')") or die(mysql_error());
if(mysql_num_rows($res)==1)
mysql_query("UPDATE ReklameStatestik SET click = click+1 WHERE type='$type' AND http='$http' , TO_DAYS(dato)='TO_DAYS(now()')") or die(mysql_error());


if(mysql_num_rows($res)==0){
$indset = mysql_query("INSERT INTO ReklameStatestik (type,http,dato) VALUES ('$type','$http','now())") or die(mysql_error());
header("Location:$http");
}
}
Avatar billede repox Seniormester
19. august 2010 - 09:00 #1
Mon ikke du mener to_date() og ikke til to_days()?
Avatar billede bigtime Nybegynder
19. august 2010 - 09:14 #2
desværre har ændret det hele til to_date og der kom samme fejl.
det virkede inden jeg skiftede server,
Avatar billede repox Seniormester
19. august 2010 - 09:22 #3
Hmm... Det er også to_days() du skal bruge...
Jeg tror det er fordi du anvender et komma som kriterie-seperator.
Jeg tror der skal stå:
select * from ReklameStatestik where type='$type' AND http='$http' AND TO_DAYS(dato)='TO_DAYS(now()'
Avatar billede bigtime Nybegynder
19. august 2010 - 09:42 #4
nope det virker heller ikke, hvordan kan man ellers lave det, den skal bare se om det er under 24 timer siden at den er sat ind og hvis det er det så skal den bare plusse 1 til click og hvis det er over 24 timer skal den bare lave en ny
Avatar billede repox Seniormester
19. august 2010 - 09:59 #5
Hvis dataformatet i feltet 'dato' eller er velformateret, kan du gøre noget ala:
select * from ReklameStatestik where type='$type' AND http='$http' AND DATE(dato)=CURDATE()
Avatar billede bigtime Nybegynder
19. august 2010 - 10:28 #6
lavede det sådan her så virker det :D
if($_GET['type']){
$type = $_GET['type'];
$http = $_GET['http'];
$today = date('Y-m-d');

$res = mysql_query("select * from ReklameStatestik where type='$type' AND http='$http' AND dato='$today'") or die(mysql_error());
if(mysql_num_rows($res)==1){
mysql_query("UPDATE ReklameStatestik SET click = click+1 WHERE type='$type' AND http='$http' AND dato='$today'") or die(mysql_error());
header("Location:$http");
}

if(mysql_num_rows($res)==0){
$indset = mysql_query("INSERT INTO ReklameStatestik (type,http,dato) VALUES ('$type','$http','$today')") or die(mysql_error());
header("Location:$http");
}
}
Avatar billede ggxdg Nybegynder
19. august 2010 - 10:50 #7
$res = mysql_query("select * from ReklameStatestik where type='$type' AND http='$http' , TO_DAYS(dato)='TO_DAYS(now()')") or die(mysql_error());
if(mysql_num_rows($res)==1)

mysql_query("UPDATE ReklameStatestik SET click = click+1 WHERE type='$type' AND http='$http' , TO_DAYS(dato)='TO_DAYS(now()')") or die(mysql_error());

Dine glyffer i ovenstående, ser lidt funky ud...

prøv med:

$res = mysql_query("select * from ReklameStatestik where type='$type' AND http='$http' , TO_DAYS(dato)='TO_DAYS(now())'") or die(mysql_error());
if(mysql_num_rows($res)==1)

mysql_query("UPDATE ReklameStatestik SET click = click+1 WHERE type='$type' AND http='$http' , TO_DAYS(dato)='TO_DAYS(now())'") or die(mysql_error());
Avatar billede ggxdg Nybegynder
19. august 2010 - 10:51 #8
Ah... for sent :P
Avatar billede showsource Seniormester
19. august 2010 - 11:20 #9
CURDATE() vil også gi' YYYY-MM-DD

Og jeg ville bruge:

if(isset($_GET['type'],$_GET['http'])){

Og har du ikke et id på hvert row som er unikt? (primary, autoincrement)
Så kan du nøjes med at vælge det, og bruge det som refer ved UPDATE
Avatar billede bigtime Nybegynder
19. august 2010 - 11:28 #10
grunden til jeg bruger $today = date('Y-m-d'); er fordi man kan risikere at den rammer lige hvor den skifter dato :D og det risikere man ikke rigtig med $today = date('Y-m-d');.
i kommer bare med svar så får i pointen alligevel
Avatar billede ggxdg Nybegynder
19. august 2010 - 18:13 #11
Jeg skal ikke have nogen point... jeg var lidt for langsom :P
Avatar billede bigtime Nybegynder
01. september 2010 - 20:01 #12
så napser jeg pointene :D
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