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 ????
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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 :)
03. januar 2005 - 18:07
#2
(sletter alle rows i indkøbskurven ældre end 2 timer)
03. januar 2005 - 18:12
#3
timestamp så finder den selv tiden ik ?
03. januar 2005 - 18:18
#4
nemlig :)
03. januar 2005 - 18:20
#5
echo $_server giver ip så ?
03. januar 2005 - 18:57
#6
echo $_SERVER['REMOTE_ADDR']; giver IP på brugeren
03. januar 2005 - 19:11
#7
den sletter alle de nye også den linie du har lavet
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
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... ??
03. januar 2005 - 19:15
#10
Hvis du kigger i databasen, hvad står dit timestamp så til ved en ny?
03. januar 2005 - 19:20
#11
20050103191133
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
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
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
03. januar 2005 - 19:31
#15
SELECT count(felt) AS antal FROM tabel ? eller SELECT SUM(talfelt) AS summen FROM tabel WHERE entype = 'noget' ?
03. januar 2005 - 21:41
#16
virker stadig ikke den sletter ikke....skal der ikke stå timestamp et sted ?
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 ? :)
04. januar 2005 - 10:58
#18
hvordan for jeg den til at skrive ??? timestamp der hvor der skal stå sidst_opdateret_timestamp
04. januar 2005 - 11:00
#19
Ikke forstået? Du skal erstatte sidst_opdateret_timestamp med det sidst opdateretfelt du har i din tabel...
04. januar 2005 - 11:50
#20
hvordan får jeg så det sidste felt frem ???
04. januar 2005 - 11:51
#21
Jeg tror ikke jeg er helt med :) Forklar!
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 ?
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 :)
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)");
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..."; }
04. januar 2005 - 19:33
#26
fandt ingen
04. januar 2005 - 19:35
#27
Uhm ok, og der *er* nogen hvor "tid" (et TIMESTAMP) er mere end 2 timer gammelt?
04. januar 2005 - 19:44
#28
ja
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..."; }
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
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
05. januar 2005 - 18:54
#32
Hmm eller vent: DELETE FROM indkoebskurv WHERE ( DATE_SUB( NOW(), INTERVAL 2 HOUR ) + 0 ) > sidst_opdateret_timestamp
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
Vi tilbyder markedets bedste kurser inden for webudvikling