Avatar billede clausga Nybegynder
03. januar 2005 - 17:46 Der er 32 kommentarer og
1 løsning

Indkøbskurv i PHP, ip, cookie, autoslet

Jeg er ved at lave et indkøbssystem i php/mysql, når man lægger noget i indkøbskurven bliver det lagt i tabel i mysql....

men hvordan gør jeg så at indkøbskurven automatisk bliver tømt hvis folk bare lægger noget der i og ikke gør meget....altså noget med noget autoslet efter en time eller noget ???

Og hvordan er det jeg får fat i ip adressen ????
Avatar billede coderdk Praktikant
03. januar 2005 - 18:07 #1
IP: $_SERVER['REMOTE_ADDR']

SQL: DELETE FROM indkoebskurv WHERE ( NOW() - INTERVAL 2 HOUR ) > sidst_opdateret_timestamp

Kunne være en løsning :)
Avatar billede coderdk Praktikant
03. januar 2005 - 18:07 #2
(sletter alle rows i indkøbskurven ældre end 2 timer)
Avatar billede clausga Nybegynder
03. januar 2005 - 18:12 #3
timestamp så finder den selv tiden ik ?
Avatar billede coderdk Praktikant
03. januar 2005 - 18:18 #4
nemlig :)
Avatar billede clausga Nybegynder
03. januar 2005 - 18:20 #5
echo $_server


giver ip så ?
Avatar billede coderdk Praktikant
03. januar 2005 - 18:57 #6
echo $_SERVER['REMOTE_ADDR'];

giver IP på brugeren
Avatar billede clausga Nybegynder
03. januar 2005 - 19:11 #7
den sletter alle de nye også den linie du har lavet
Avatar billede coderdk Praktikant
03. januar 2005 - 19:12 #8
Du kan teste ved at lave DELETE om til SELECT *:

SELECT * FROM indkoebskurv WHERE ( NOW() - INTERVAL 2 HOUR ) > sidst_opdateret_timestamp

Det er disse den gerne vil slette
Avatar billede clausga Nybegynder
03. januar 2005 - 19:13 #9
ja det er jeg med på.....men opretter jeg en nu og kører den så bliver den slettet... ??
Avatar billede coderdk Praktikant
03. januar 2005 - 19:15 #10
Hvis du kigger i databasen, hvad står dit timestamp så til ved en ny?
Avatar billede clausga Nybegynder
03. januar 2005 - 19:20 #11
20050103191133
Avatar billede coderdk Praktikant
03. januar 2005 - 19:22 #12
Jeg kan ikke lige regne det ud, prøv med:

SELECT * FROM indkoebskurv WHERE DATE_SUB( NOW(), INTERVAL 2 HOUR ) > sidst_opdateret_timestamp
Avatar billede clausga Nybegynder
03. januar 2005 - 19:24 #13
nu jeg lige har dig..... hvordan er det jeg for php til at tælle sammmen hvor mange enheder der er i tabel... så jeg kan vise hvor mange antal der er i indkøbskurven...


prøver lige det andet
Avatar billede clausga Nybegynder
03. januar 2005 - 19:28 #14
ser ud til det sidste du skrev virkede.... nu mangler jeg bare det med at regne sammen hvor meget der er i tabelen
Avatar billede coderdk Praktikant
03. januar 2005 - 19:31 #15
SELECT count(felt) AS antal FROM tabel ?
eller
SELECT SUM(talfelt) AS summen FROM tabel WHERE entype = 'noget'

?
Avatar billede clausga Nybegynder
03. januar 2005 - 21:41 #16
virker stadig ikke den sletter ikke....skal der ikke stå timestamp et sted ?
Avatar billede coderdk Praktikant
03. januar 2005 - 23:43 #17
Eh? Har du ændret:

SELECT * FROM indkoebskurv WHERE DATE_SUB( NOW(), INTERVAL 2 HOUR ) > sidst_opdateret_timestamp

til

DELETE FROM indkoebskurv WHERE DATE_SUB( NOW(), INTERVAL 2 HOUR ) > sidst_opdateret_timestamp

? :)
Avatar billede clausga Nybegynder
04. januar 2005 - 10:58 #18
hvordan for jeg den til at skrive ??? timestamp der hvor der skal stå sidst_opdateret_timestamp
Avatar billede coderdk Praktikant
04. januar 2005 - 11:00 #19
Ikke forstået? Du skal erstatte sidst_opdateret_timestamp med det sidst opdateretfelt du har i din tabel...
Avatar billede clausga Nybegynder
04. januar 2005 - 11:50 #20
hvordan får jeg så det sidste felt frem ???
Avatar billede coderdk Praktikant
04. januar 2005 - 11:51 #21
Jeg tror ikke jeg er helt med :) Forklar!
Avatar billede clausga Nybegynder
04. januar 2005 - 12:03 #22
Du skal erstatte sidst_opdateret_timestamp med det sidst opdateretfelt du har i din tabel...

hvordan for jeg det felt frem ?
Avatar billede coderdk Praktikant
04. januar 2005 - 12:06 #23
Øøøøh, hvis dit felt i databasen hedder sidstopdateret skriver skal den bare:

DELETE FROM indkoebskurv WHERE DATE_SUB( NOW(), INTERVAL 2 HOUR ) > sidstopdateret

:)
Avatar billede clausga Nybegynder
04. januar 2005 - 19:01 #24
kan godt være jeg er dum, men dette her virker ikke

mysql_query("DELETE FROM kurv WHERE DATE_SUB( NOW(), INTERVAL 2 HOUR ) > tid)");
Avatar billede coderdk Praktikant
04. januar 2005 - 19:11 #25
Hmm den burde ellers slette rækker i "kurv", hvor feltet "tid" er over to timer gammelt...

Se om den finder nogen:

$q = mysql_query("SELECT * FROM kurv WHERE DATE_SUB( NOW(), INTERVAL 2 HOUR ) > tid)");
if ( mysql_num_rows( $q ) > 0 )
{
  echo "<pre>";
  while ( $row = mysql_fetch_assoc( $q ) )
  {
    var_dump( $row );
  }
  echo "</pre>";
}
else
{
  echo "Fandt ingen...";
}
Avatar billede clausga Nybegynder
04. januar 2005 - 19:33 #26
fandt ingen
Avatar billede coderdk Praktikant
04. januar 2005 - 19:35 #27
Uhm ok, og der *er* nogen hvor "tid" (et TIMESTAMP) er mere end 2 timer gammelt?
Avatar billede clausga Nybegynder
04. januar 2005 - 19:44 #28
ja
Avatar billede coderdk Praktikant
04. januar 2005 - 19:50 #29
Kan du paste et par linjer af outputtet fra denne:

$q = mysql_query("SELECT tid, DATE_SUB( NOW(), INTERVAL 2 HOUR ) AS checktid FROM kurv LIMIT 10");
if ( mysql_num_rows( $q ) > 0 )
{
  echo "<pre>";
  while ( $row = mysql_fetch_assoc( $q ) )
  {
    var_dump( $row );
  }
  echo "</pre>";
}
else
{
  echo "Fandt ingen...";
}
Avatar billede clausga Nybegynder
05. januar 2005 - 09:03 #30
array(2) {
  ["tid"]=>
  string(14) "20050104210044"
  ["checktid"]=>
  string(19) "2005-01-05 07:03:14"
}
array(2) {
  ["tid"]=>
  string(14) "20050104210054"
  ["checktid"]=>
  string(19) "2005-01-05 07:03:14"
}

Dette er testet kl. 09.03 d. 5/1-04
Avatar billede coderdk Praktikant
05. januar 2005 - 18:51 #31
Ja, så skal den nok være:

DELETE FROM indkoebskurv WHERE TIMESTAMP( DATE_SUB( NOW(), INTERVAL 2 HOUR ) ) > sidst_opdateret_timestamp
Avatar billede coderdk Praktikant
05. januar 2005 - 18:54 #32
Hmm eller vent:

DELETE FROM indkoebskurv WHERE ( DATE_SUB( NOW(), INTERVAL 2 HOUR ) + 0 ) > sidst_opdateret_timestamp
Avatar billede clausga Nybegynder
23. januar 2005 - 13:43 #33
lukker her, men takker for svarene, de virkede, da ingen har smidt et svar kan jeg jo ikke give jer point
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