omdøb feltet date i din db eller set backtick omkring date feltet i din sql sætning
prøv dette først $billede_sql = "SELECT billede FROM tabel WHERE `date` < $idag AND id='$id'"; .... $sqla = mysql_query("DELETE FROM tabel WHERE `date` < $idag AND id='$id'");
det er iøvrigt en god ide altid at omgive felt navne med backtick bare som vane
Som ronols prøver at lede dig hen til, er at date er et reserveret ord, når du laver MySQL forespørgsler, derfor kalder man normalt ikke sine felter disse navne, hvis man vælger at gøre dette, skal man sætte "backtick's" omkring ordet, som du kan se i nederstående forespørgsler.
$billede_sql = "SELECT billede FROM tabel WHERE `date` < $idag AND id = '$id'";
$sqla = mysql_query("DELETE FROM tabel WHERE `date` < $idag AND id = '$id'");
Synes godt om
Slettet bruger
02. april 2012 - 18:14#7
Når jeg sætter det ind, viser den intet overhovede. Den viser ingen events? hmm
Hvorfor skriver du koden i #11? Du skulle jo bruge backticks rundt om dine navne:
$sqla = mysql_query("DELETE FROM `tabel` WHERE `date` < $idag AND `id`='$id'");
// - og:
$billede_sql = "SELECT `billede` FROM `tabel` WHERE `date` < $idag AND `id`='$id'";
Så forklarer du, hvad du mener med "så virker det ikke". Hvad er det, som ikke virker? Bliver det fysiske billede ikke slettet? Bliver der ikke slettet noget i din DB - flækker din skærm - eller er det noget helt fjerde, der ikke virker?
Hvis det er dit DB-kald, der ikke virker, kan du ganske kortvarigt prøve at se, om du får skrevet SQL-fejl ud med:
$result = mysql_query($billede_sql) or die (mysql_error());
/mvh </bole>
Synes godt om
Slettet bruger
03. april 2012 - 15:00#14
Hør nu her. Det virker fint at den sletter i databasen, men jeg vil gerne have at den også sletter billede i mappen images/fotos på serveren så de ikke fylder og optager en masse plads når eventen jo er overstået og slettet fra db.
Det andet virker fint uden '' rundt om så det er ikke det som gør forskellen i hvert fald :-)
Hør nu selv her: Hvis du ikke vil lære god kodeskik, så fortsætter du bare med din hjemmestrikkede stil - uagtet, du af erfarne udviklere får at vide, at du skyder dig selv i foden. Er du for klog til at lære, er der ikke noget at gøre ved det!
Vi ved stadig ikke, hvad det er, du prøver at gøre. Udfra de kodestumper, du har bidraget med, er det ikke til at gætte, hvor det går galt.
Gør du tingene i den rækkefølge, du viser i spørgsmålet - eller i den, du viser i #11? Der er en verden til forskel.
Skrives stien ud til det billede, der skal slettes?
Det lyder meget mærkeligt, at du ikke får fejl, hvis unlink ikke virker. Prøv kortvarigt at skrive:
error_reporting(E_ALL);
- som det allerførste i dokumentet. Så vil du formodentlig få en fejl, der fortæller, hvad du gør galt.
Under alle omstændigheder ville lidt mere kode og en tydelig forklaring være gavnligt =)
Synes godt om
Slettet bruger
03. april 2012 - 15:35#16
Jeg skriver det som jeg har skrevet det i spørgsmålet øverst. det der undre mig er at den godt vil slette i databsen men den vil ikke unlinke og slette billedet fra /fotos mappen :-(
jeg har brugt koden før på et link som kunne slette og der virkede det, men nu når jeg sætter den ind i en if virker det ikke :-(
den skriver ikke noget når jeg sætter den der error ind?
"Du skrev jeg skulle sætte error_reporting(E_ALL); ind" >> Ja, og det har intet med en error at gøre =)
Det lyder sært, du ikke får noget ud af det. unlink kaster en warning, når den ikke lykkes. Altså virker den - eller også fortæller PHP dig, hvorfor den ikke virker.
$id=$_GET['id']; $billede_sql = "SELECT `billede` FROM `tabel` WHERE `date` < $idag AND `id`='$id'";
Nej det ved jeg godt, men sidder med en masse koder, så derfor fatter jeg mig kort, med små hints -> ligesom error (hint). hehe
Hmm jeg fik ikke nogen fejl da jeg smed error_reporting(E_ALL); ind men når jeg sætter #0(spørgsmålet) ind i koden så fjerner den faktisk alt det den skulle echo ud?! :-= meget underligt, så der må jo være en fejl, men den skriver ikke hvad.
Jeg fatter simpelthen ikke, hvad du skriver. Det er muligt, du gerne vil 'fatte dig kort', men hvis du ikke bruger mere energi på at forklare dig tydeligt, fatter vi andre intet
Synes godt om
Slettet bruger
03. april 2012 - 16:32#22
Jamen jeg ved ikke hvordan jeg ellers skal forklare det. jeg forstår jo ikke selv hvad der er galt?! Jeg har skrevet det her i min kode og det virker fint
<?php $idag= time();
include ('db.php'); $sql = "SELECT * FROM tabel WHERE godkendt='1' ORDER BY date ASC LIMIT 15"; $result = mysql_query($sql);
if ($row[date]<$idag){ $sqla = mysql_query("DELETE FROM tabel WHERE date < $idag AND id='$id'"); } while ($row = mysql_fetch_array($result)) { echo 'hej'; } ?>
Når jeg så tilføjer nedenstående så virker det ikke
$idag= time(); include ('databasen.php');
if ($row[date]<$idag){ $id=$_GET['id']; $billede_sql = "SELECT billede FROM tabel WHERE date < $idag AND id='$id'";
$result = mysql_query($billede_sql); $billede = mysql_fetch_array($result); unlink("images/fotos/" . $billede['billede']); unlink("images/fotos/thumb_" . $billede['billede']); $sqla = mysql_query("DELETE FROM tabel WHERE date < $idag AND id='$id'"); }
Jeg ved ikke hvorfor det ikke virker men det den skal er at slette det billede der høre med til fra images/fotos mappen når den sletter i databasen når $idag er overkskredet. Hvis du / i ikke forstår det så må jeg droppe det for kan ikke forklare det anderledes.
Det kan ikke passe, hvad du skriver. Det her kan ikke virke:
<?php $idag= time();
include ('db.php'); $sql = "SELECT * FROM tabel WHERE godkendt='1' ORDER BY date ASC LIMIT 15"; $result = mysql_query($sql);
if ($row[date]<$idag){ $sqla = mysql_query("DELETE FROM tabel WHERE date < $idag AND id='$id'"); } while ($row = mysql_fetch_array($result)) { echo 'hej'; } ?>
Du sætter jo ikke $id noget sted.
Synes godt om
Slettet bruger
03. april 2012 - 16:43#24
OKay, men så er det vel problemet, grunden til jeg skriver her er jo fordi jeg ikke selv ved det, så må du jo fortælle mig hvad der er galt :-)
if ($row[date]<$idag){ echo 'SQL: '."DELETE FROM tabel WHERE date < $idag AND id='$id'"; $sqla = mysql_query("DELETE FROM tabel WHERE date < $idag AND id='$id'"); }
Synes godt om
Slettet bruger
03. april 2012 - 16:53#27
så skriver den:
SQL: DELETE FROM tabel WHERE date < 1333464744 AND id=''
Vi kommer tilbage til det spørgsmål, jeg efterhånden har stillet nogle gange: Hvad skal $id - hvor kommer den fra - og hvad forventes den at indeholde?
Synes godt om
Slettet bruger
03. april 2012 - 17:16#32
Hm måske skal jeg slet ikke bruge id? Den skal jo bare teste om daten som er sat i db er overskredet med datoen idag og hvis ja så slet + unlink images :-)
Jamen, i det andet eksempel sætter du jo $id. Jeg fatter hat af det her! Hvad får du ud af dette i det andet eksempel:
if ($row[date]<$idag){ $id=$_GET['id']; echo 'SQL: '."SELECT billede FROM tabel WHERE date < $idag AND id='$id'"; $billede_sql = "SELECT billede FROM tabel WHERE date < $idag AND id='$id'";
Synes godt om
Slettet bruger
03. april 2012 - 17:32#34
Jeg får nok ikke noget ud af det, det var en gammel kode jeg havde brugt før så troede den virkede igen, men kan godt se at i det gamle blev $id sendt med fra et link, og det gør det ikke nu så bare glem alt om $id den gør ikke noget godt.
skal bruge en metode der sletter billederne i mappen, hvis du ved hvordan så skriv det og glem det jeg har skrevet, det er jo åbenbart forkert.
Jeg ved stadig ikke, hvad det præcist er, du skal bruge. Jeg hopper ud af tråden her
Synes godt om
Slettet bruger
03. april 2012 - 17:51#36
Jeg skal bruge en php kode der kan slette et billede fra ftp / images-mappen hvis datoen er overskredet! DVS:
Hvis dato på billede i db er 10 april så når vi kommer til d. 10 april bliver billedet automatisk slettet da der skal køre en if sætning når billederne bliver udskrevet evt,
if ($row[date]<$idag){ $sqla = mysql_query("DELETE FROM tabel WHERE date < $idag"); }
Jamen, $rows[date] er også en af disse variabler, der på magisk vis opstår af ingenting. Du definerer ingen steder $row.
Hvis jeg skal gætte på, hvad du vil, kunne dette måske være en løsning:
<?php include ('db.php'); $idag= time();
$sql = "SELECT `id`, `billede` FROM `tabel` WHERE `godkendt`='1' AND `date`<'".$idag."'"; $result = mysql_query($sql) or die (mysql_error()); echo '<p>Fandt '.mysql_num_rows($result).' for gamle billeder i databasen.</p>';
$arrIds = array(); while ($row=mysql_fetch_assoc($result)) { $arrIds[] = '`id`='.$row['id']; unlink("images/fotos/" . $row['billede']); unlink("images/fotos/thumb_" . $row['billede']); } echo '<p>'.count($arrIds).' billeder og thumbnails slettet i mappen.</p>';
$sql = "DELETE FROM `tabel` WHERE ".implode(' OR ', $arrIds); $result = mysql_query($sql) or die (mysql_error()); echo '<p>'.mysql_affected_rows().' billeder slettet i databasen.</p>'; ?>
Når du er færdig med at teste, sletter du det, der er skrevet med rødt
Synes godt om
Slettet bruger
04. april 2012 - 13:11#38
okay, jeg tror det virker, men den udskriver dette:
Fandt 0 for gamle billeder i databasen
0 billeder og thumbnails slettet i mappen
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 '' at line 1
Så kan ikke se om det virke før jeg finder fejlen. kan du se den?
Synes godt om
Slettet bruger
09. april 2012 - 15:34#39
svar
Synes godt om
Ny brugerNybegynder
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.