Avatar billede heavybreezer Nybegynder
26. juni 2004 - 19:53 Der er 12 kommentarer og
2 løsninger

Finde gentagelser og lægge til

Hvis jeg vil smide en tekst i min min database, og finder ud af at den samme tekst allerede eksisterer der, hvordan lægger jeg så 1 til i min counter?

Det kan lyde lidt uoverskueligt, men sådan ser min database ud:

id      tekst        counter



så hvis jeg fx. indsætter teksten "hej" i min DB og den allerede eksister og har 1 i "counter", hvordan lægger jeg så en til?
Hvis teksten ikke eksisterer skal den selvfølgelig bare smides ind i databasen med counter til "1".
jeg arbejder i php.

Håber VIRKELIG i kan hjælpe......
Avatar billede arne_v Ekspert
26. juni 2004 - 19:59 #1
Kan du ikke bare lavet noget logik a la:

SELECT COUNT(*) AS n FROM tabel WHERE tekst='...'

hvis n > 0 så
  UPDATE tabel SET counter = counter + 1 WHERE tekst = '...'
ellers
  INSERT INTO tabel (tekst, counter) VALUES ('...', 1)

[og jeg gør ikke i PHP]

NB: Den er iøvrigt ikke flerbruger sikker.
Avatar billede arne_v Ekspert
26. juni 2004 - 19:59 #2
Hvis du skal lave den flerbruger sikker skal du lave et unikt index på
tekst, forsøge en INSERT og hvis den fejler så lave en UPDATE
Avatar billede dennismp Nybegynder
26. juni 2004 - 20:00 #3
noget i stil med?

<?php

$dintekst = 'hej';

$res = mysql_query("SELECT id FROM tabel WHERE tekst = '$dintekst'") or die(mysql_error());
if( $row = mysql_fetch_array($res)) {
  // fundet
  mysql_query("UPDATE tabel SET counter=counter+1 WHERE id={$row['id']}") or die(mysql_error());
}
else {
  mysql_query("INSERT INTO tabel(id,tekst,counter) VALUES(null,'$dintekst',1)") or die(mysql_error());
}
?>
Avatar billede dennismp Nybegynder
26. juni 2004 - 20:01 #4
Ignorer mit indlæg :)
Avatar billede heavybreezer Nybegynder
26. juni 2004 - 20:09 #5
Idéen er nemlig at lave et script, hvor jeg kan se, hvilke adresser mine besøgende kommer fra, i min database.

Jeg vil bruge $_SERVER["HTTP_REFERER" til at smide ind i database, og hvis adressen så eksisterer så blir der bare lagt 1 til i counter
Avatar billede heavybreezer Nybegynder
26. juni 2004 - 20:09 #6
Kunne jeg evt. få noget kode, som jeg kan sætte ind?
arne_v>> Kan jeg så stadig bruge dit?
Avatar billede arne_v Ekspert
26. juni 2004 - 20:17 #7
Det mener jeg. Mit første forslag og dennis's forslags er iøvrigt stort
set identisk.

Hvis du vil have noget kode til mit andet forslag, så spørg dennis - jeg mener
nemlig at han i modsætning til mig gør i PHP.
Avatar billede erikjacobsen Ekspert
26. juni 2004 - 20:30 #8
Kan du ikke bare sætte oplysningerne ind i hver sin række, og så ved udtræk lave
optællinger. Så kan du have flere oplysninger med, og kunne lave flere statistikker.
Ja, jeg ved, det fylder...
Avatar billede heavybreezer Nybegynder
26. juni 2004 - 20:33 #9
Det virker perfekt!! Tak, drenge!! :-)
Smid svar, så skal points regne ned over jer... hehe.

Tak
Avatar billede dennismp Nybegynder
26. juni 2004 - 20:33 #10
if( mysql_query("INSERT INTO tabel(id,tekst,counter) VALUES(null,'$dintekst',1)") == false ) {
  mysql_query("UPDATE tabel SET counter=counter+1 WHERE tekst='$dintekst'") or die(mysql_error());
}

Husk at så skal tekst være en unik-kolonne
Avatar billede dennismp Nybegynder
26. juni 2004 - 20:34 #11
ah for langsom :)
Avatar billede arne_v Ekspert
26. juni 2004 - 20:44 #12
ok
Avatar billede heavybreezer Nybegynder
26. juni 2004 - 20:46 #13
dennis >> læg du også et svar
Avatar billede dennismp Nybegynder
26. juni 2004 - 20:50 #14
joda
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
Computerworld tilbyder specialiserede kurser i database-management

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