Avatar billede Morten Professor
24. april 2015 - 20:31 Der er 27 kommentarer og
1 løsning

Slet feks billeder fra dato til dato

Hej

Jeg vil høre om hvordan, jeg kan lave sådan jeg kan slette feks. billeder fra dato til dato.

Det ligger på en mysql database.

Med venlig hilsen
Morten
Avatar billede Morten Professor
24. april 2015 - 21:20 #1
"DELETE FROM billeder WHERE dato < DATE_SUB(NOW(), INTERVAL 7 DAY)"
Har fundet en løsning men.

Jeg ville gerne have den lader dem som har, solgt under solgt ikke bliver slettet.
Er det muligt?
Avatar billede olsensweb.dk Ekspert
24. april 2015 - 21:30 #2
>Jeg ville gerne have den lader dem som har, solgt under solgt ikke bliver slettet.
>Er det muligt?
ja du sætter bare en betingelse mere på din delete sætning

du må have et solgt_antal og min_solgt felt i tabellen noget ale


$sql = "DELETE FROM billeder WHERE dato < DATE_SUB(NOW(), INTERVAL 7 DAY) AND solgt_antal > min_solgt";
Avatar billede Morten Professor
25. april 2015 - 13:43 #3
Hej ronols

Det vil jeg lige prøve :o)

Med venlig hilsen
Morten
Avatar billede Morten Professor
25. april 2015 - 14:54 #4
Øv det virkede desværre ikke.
Prøvede lidt af hvert.
Avatar billede olsensweb.dk Ekspert
25. april 2015 - 15:19 #5
>Øv det virkede desværre ikke.
hvad fejl får du ??
har du rettet den sql fejl der opstår som følge af en parates slut for meget i din oprindelige sql ??

$sql = "DELETE FROM billeder WHERE dato < DATE_SUB(NOW(), INTERVAL 7 DAY AND solgt_antal > min_solgt";


hvordan ser din tabel billeder ud ??

afprøv evt din sql direkte i phpmyadmin først, før du blander php ind i det.
Avatar billede Morten Professor
25. april 2015 - 15:27 #6
Ja jeg har rettet det:

$deleteSQL = sprintf("DELETE FROM billeder WHERE dato < DATE_SUB(NOW(), INTERVAL 7 DAY) AND solgt > Solgt");
hmm jeg har også prøvet med 'Solgt' i linjen.
Avatar billede Morten Professor
25. april 2015 - 15:33 #7
Jeg prøvede det i phpmyadmin, men så slettede den alle dem med solgt.
Avatar billede olsensweb.dk Ekspert
25. april 2015 - 16:05 #8
hvordan ser din billeder tabel ud ??
lav en sql dump af den. så vi har nogle test data


hvilke format er dato ?? (kan jeg også se ud fra sql dumpet)

min_solgt og solgt må være et heltal

solgt kan evt godt stå i en anden tabel
Avatar billede Morten Professor
25. april 2015 - 16:32 #9
Dato er efter database 2015-04-25.

Hvordan laver jeg en sql dumpet
Avatar billede Morten Professor
25. april 2015 - 16:37 #10
-- Struktur-dump for tabellen `billeder`
--

CREATE TABLE IF NOT EXISTS `billeder` (
  `billedid` int(100) NOT NULL AUTO_INCREMENT,
  `arkiv` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL,
  `billednavn` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL,
  `solgt` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci DEFAULT NULL,
  `dato` date NOT NULL,
  `tid` time DEFAULT NULL,
  `solgtdato` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci DEFAULT NULL,
  PRIMARY KEY (`billedid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 CHECKSUM=1 AUTO_INCREMENT=4744 ;

--
Avatar billede olsensweb.dk Ekspert
25. april 2015 - 17:50 #11
det var godt nok et stor tal 100 cifre
`billedid` int(100) NOT NULL AUTO_INCREMENT,

dette skal være en anden datatype
`solgtdato` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci DEFAULT NULL,

dette skal da være et heltal
`solgt` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci DEFAULT NULL,


hvor har du definered minimun solgt antal henne  ??



kig på dette sql dump og sql sætning
div]

CREATE TABLE IF NOT EXISTS `tbl_billeder` (
`billedid` int(10) NOT NULL,
  `arkiv` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL,
  `billednavn` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL,
  `solgt` int(5) DEFAULT NULL,
  `dato` date NOT NULL,
  `tid` time DEFAULT NULL,
  `solgtdato` date DEFAULT NULL
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 CHECKSUM=1;

--
-- Data dump for tabellen `tbl_billeder`
--

INSERT INTO `tbl_billeder` (`billedid`, `arkiv`, `billednavn`, `solgt`, `dato`, `tid`, `solgtdato`) VALUES
(1, '', 'dummy1', 5, '2015-03-24', '12:00:00', '2015-04-15'),
(2, '', 'dummy2', 2, '2015-03-24', '12:00:00', '2015-04-15');
[/div]

div]
  
DELETE FROM tbl_billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) AND (solgt> 3);
[/div]


kig på
http://stackoverflow.com/questions/15633653/mysql-date-subnow-interval-1-day-24-hours-or-weekday
http://stackoverflow.com/questions/7341658/selecting-the-last-7-days-from-now-in-mysql
BETWEEN  kunne også være værd at overveje
Avatar billede olsensweb.dk Ekspert
25. april 2015 - 17:51 #12
prøver igen med retted BB tag

det var godt nok et stor tal 100 cifre
`billedid` int(100) NOT NULL AUTO_INCREMENT,

dette skal være en anden datatype
`solgtdato` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci DEFAULT NULL,

dette skal da være et heltal
`solgt` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci DEFAULT NULL,


hvor har du definered minimun solgt antal henne  ??



kig på dette sql dump og sql sætning

CREATE TABLE IF NOT EXISTS `tbl_billeder` (
`billedid` int(10) NOT NULL,
  `arkiv` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL,
  `billednavn` varchar(255) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL,
  `solgt` int(5) DEFAULT NULL,
  `dato` date NOT NULL,
  `tid` time DEFAULT NULL,
  `solgtdato` date DEFAULT NULL
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 CHECKSUM=1;

--
-- Data dump for tabellen `tbl_billeder`
--

INSERT INTO `tbl_billeder` (`billedid`, `arkiv`, `billednavn`, `solgt`, `dato`, `tid`, `solgtdato`) VALUES
(1, '', 'dummy1', 5, '2015-03-24', '12:00:00', '2015-04-15'),
(2, '', 'dummy2', 2, '2015-03-24', '12:00:00', '2015-04-15');


  
DELETE FROM tbl_billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) AND (solgt> 3);



kig på
http://stackoverflow.com/questions/15633653/mysql-date-subnow-interval-1-day-24-hours-or-weekday
http://stackoverflow.com/questions/7341658/selecting-the-last-7-days-from-now-in-mysql
BETWEEN  kunne også være værd at overveje
Avatar billede Morten Professor
25. april 2015 - 18:00 #13
Jeg prøver lige
Avatar billede Morten Professor
25. april 2015 - 18:47 #14
ronols har du fået det til at virke?
Avatar billede olsensweb.dk Ekspert
25. april 2015 - 20:38 #15
#14
Ja


sletter alle records der er ældre en 7 dage gamle og der er solgt mere end 3 stk
DELETE FROM tbl_billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) AND (solgt> 3);


sletter alle records der er ældre en 7 dage gamle
DELETE FROM tbl_billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) );
Avatar billede Morten Professor
25. april 2015 - 21:00 #16
Bare så du kan se hvad jeg arbejder med http://www.odderloppetorv.dk/index_solgt_fornyeligt.php?id=7&mainid=7

Det er der hvor der ikke skal slettes noget.
Avatar billede Morten Professor
25. april 2015 - 21:22 #17
Det der lidt mærkeligt når jeg har den anden funktion på "AND" virker det anede ikke altså det med at slette dem efter 7 dage.
kan der være en skrive fejl eller er min kodning helt ude i hampen.
Avatar billede Morten Professor
25. april 2015 - 21:32 #18
Okay så prøver jeg noget andet.
Kan jeg gøre sådan at alle mine solgte mister deres dato?
Avatar billede Morten Professor
25. april 2015 - 21:33 #19
Ja det med redigering i indlæg :o)
uden at skulle lave dem om hver enkelt i databasen
Avatar billede olsensweb.dk Ekspert
25. april 2015 - 21:56 #20
#17
>kan der være en skrive fejl eller er min kodning helt ude i hampen.
ja, det virker i phpmyadmin, på tbl_billeder og med de rettelse til felterne i databasen jeg angav, men det kan se i sql dumpet jeg har vist

#18
>Kan jeg gøre sådan at alle mine solgte mister deres dato?
lav en SELECT og en UPDATE i sql
noget ala
SELECT id FROM tbl_billeder WHERE solgt>1;
UPDATE  tbl_billeder SET dato='' WHERE id = $row['id'];
Avatar billede olsensweb.dk Ekspert
25. april 2015 - 22:03 #21
man må kunne slå de 2 sætninger sammen til en sql
http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server
Avatar billede Morten Professor
26. april 2015 - 14:31 #22
Så fik jeg det til at virke tak for hjælpen:

("DELETE FROM billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) and dato >'00:00:00'; ")

Vil du lave et svar så du kan få dine point ronols.

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
26. april 2015 - 15:18 #23
får du her.
husk at slette det fysiske billed også, så det ikke ligger og fylder på serveren
Avatar billede Morten Professor
26. april 2015 - 16:25 #24
Ved godt det ikke er lige nået i denne tråd, men har du en god måde til det.
Har når jeg sletter enkelte billeder.
Eller skal jeg oprette en ny tråd, ved bare det er svært at forstå for andre hvad jeg taler om.
Avatar billede olsensweb.dk Ekspert
26. april 2015 - 16:48 #25
meget kort kan det siges:
del din DELETE op

DELETE FROM billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) and dato >'00:00:00';

skal laves om til

SELECT billedid, billednavn FROM billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) and dato >'00:00:00

resulttet af dette looper du igennem, unlinker billednavnet, og sletter id i databasen

Pseudocode

$sql = "SELECT billedid, billednavn FROM billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) and dato >'00:00:00";
loop begin
unlink($row['billednavn']);
$sql1 = "DELETE FROM billeder WHERE billedid = $row['billedid']";
loop end

http://php.net/manual/en/function.unlink.php
Avatar billede Morten Professor
28. april 2015 - 11:27 #26
Den bliver ved med at sige "Query was empty"
Avatar billede Morten Professor
28. april 2015 - 11:58 #27
Jeg får tom side?

$deleteSQL = "SELECT billedid, billednavn FROM billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) and dato >'00:00:00'";
loop begin;
unlink($row_rsDelete['billednavn']);
$deleteSQL1 = "DELETE FROM billeder WHERE billedid = ".$row_rsDelete['billedid'];
loop end;
Avatar billede Morten Professor
28. april 2015 - 11:59 #28
rettelse men stadig tom side.

$deleteSQL = "SELECT billedid, billednavn FROM billeder WHERE DATE(dato) < DATE(DATE_SUB( NOW(), INTERVAL 7 DAY) ) and dato >'00:00:00'";
loop begin
unlink($row_rsDelete['billednavn']);
$deleteSQL1 = "DELETE FROM billeder WHERE billedid = ".$row_rsDelete['billedid'];
loop end
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

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