Avatar billede Bjarne Novice
08. juni 2005 - 22:06 Der er 9 kommentarer og
1 løsning

slet i forskellige måneder

Jeg skal have lavet noget, som sletter noget indhold i en database hver anden måned. Har lavet et lille forsøg:

<?php

$months[] = "1";
$months[] = "3";
$months[] = "5";
$months[] = "7";
$months[] = "9";
$months[] = "12";

$month = date("n");

if($months[] == $month) {
echo "Slet slet slet!" //koden som sletter, ingen problem
} else {
echo "Sletter ikke noget!";
}

?>

Problemet er jeg ikke helt har styr på arrays. Jeg vil gerne have if til at tjekke de muligheder jeg har sat op i arrayet.

Men man kan ikke bare skrive $months[], lige som i eksemplet: Fatal error: Cannot use [] for reading in LANG STI on line 12

Er der nogle som kan hjælpe lidt?
Avatar billede Bjarne Novice
08. juni 2005 - 22:08 #1
der skulle self stå $months[] = "11" i den sidste del af arrayet.
Avatar billede erikjacobsen Ekspert
08. juni 2005 - 22:11 #2
Hvis du vil gøre som antydet, så kig på http://php.net/in_array

Men hvorfor ikke gøre det med en DELETE FROM dintabel WHERE .... og så en betingelse, der sletter de relevante ting. Hvordan ser tabellen ud?
Avatar billede Bjarne Novice
08. juni 2005 - 22:37 #3
Dette virker:

<?php

$months = array(1, 3, 5, 7, 9, 11);
$month = date("n");

if(in_array($month, $months)) {
echo "Slet slet slet!"; //koden som sletter, ingen problem
} else {
echo "Sletter ikke noget!";
}
?>

Umiddelbart forstår jeg ikke hvordan du vil lave det i en query? Men hvis det er smartere er det jo fint: Men det er en tabel, hvor der tælles op for hvert hit. Hver anden måned skal indholdet "hits" som rækken hedder sættes til 0.

For at rette alle må det være noget i retningen af mysql_query("UPDATE tabel SET hits = 0");
Avatar billede erikjacobsen Ekspert
08. juni 2005 - 22:52 #4
Det er fint det virker. Om det er smartere i SQL afhænger selvfølgelig af hvordan din tabel ser ud.
Avatar billede mjense173 Nybegynder
08. juni 2005 - 23:54 #5
$months[] kan kun bruges når man vil lave et "push", altså placere en varibel i slutningen af array'et. eks:
$months[] = 9

Hvis du vil sammenligne, eller trække værdier ud af arrayet, skal du enten bruge en af dem mange funktioner, hvoraf den du har fundet, også er iblandt, eller du skal referere direkte til den enkelte værdi eks:

if($months[i] == "9"){...

hvor i er et heltal, der er mindre end det samlede antal elementer i arrayet.
Avatar billede Bjarne Novice
09. juni 2005 - 17:34 #6
tabellen ser sådan ud:

CREATE TABLE `urls` (
  `id` int(11) NOT NULL auto_increment,
  `url` varchar(128) NOT NULL default '',
  `title` text NOT NULL,
  `description` text NOT NULL,
  `ip` text NOT NULL,
  `hits` int(11) NOT NULL default '0',
)

Det er i hits, tallene stiger for hvert besøg. Hver anden måned skal alle rækker i hits resettes så de bliver 0.
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 20:38 #7
Så er det nok den rigtige måde du gør det på.
Avatar billede Bjarne Novice
09. juni 2005 - 22:51 #8
erik, hvis du vil have point smider du bare et svar.
Avatar billede erikjacobsen Ekspert
11. juni 2005 - 08:08 #9
Ingen point til mig, tak.
Avatar billede Bjarne Novice
11. juni 2005 - 18:16 #10
I orden...
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