Avatar billede Gimhle Novice
24. januar 2011 - 16:03 Der er 28 kommentarer og
1 løsning

Script som opdaterer efter aktuel dato

Min kone vedligeholder en foreningshjemmeside med en liste som indeholder en lang række af datoer med aktiviteter. Denne liste opdaterer hun manuelt og det bliver dermed et temmelig stor arbejde efterhånden. Findes der et script som kan "læse" den skrevne liste dato efter dato, og selv løbende "flytte" til den næste dato når den aktuelle dato er passeret.
Kan et java-script "klare sagerne"?
Avatar billede HBP2 Praktikant
24. januar 2011 - 23:23 #1
Spørgsmålet er vel: hvor er listen med datoer/aktiviteter - og i hvilket format er listen? Er det en database, eller en simpel tekst fil eller en XML fil eller noget 4.?

Og er der adgang til f.eks. PHP på den webserver hvor hjemmesiden findes?
Avatar billede Gimhle Novice
25. januar 2011 - 00:17 #2
Listen er som udgangspunkt en tekstfil (word.doc)
Der er mulighed for PHP på webhotellet.
Jeg har ingen erfaring m.h.t PHP-script :-(
Avatar billede HBP2 Praktikant
25. januar 2011 - 10:10 #3
Det er håbløst at udtrække data fra en .doc fil.
.doc filer er til for at skaffe indtægter til Microsoft, de er ikke til for at blive brugt til noget som helst.

Dataene (listen med aktiviteter) bør ligge i en database eller i en XML fil (eller JSON fil eller anden forståeligt tekst-fil format). Så kan PHP læse dataene og finde de aktiviteter som passer med datoen og indsætte dem i hjemmesiden.
Avatar billede Gimhle Novice
25. januar 2011 - 14:47 #4
Det må jeg lige undersøge nærmere m.h.t. enten database eller XML fil. Ved første øjekast ligner XML en del hen efter HTML ?
Det skal jeg lige "sætte mig lidt ind i" (kender ikke dette format)
Avatar billede Gimhle Novice
25. januar 2011 - 15:20 #5
Kan man skyde "genvej" og få et brugbart dokument, ved at gemme et word-fil - enten som "Kodet tekst" eller som "Tekst med layout" ?
Avatar billede HBP2 Praktikant
25. januar 2011 - 15:35 #6
"Nej", må være svaret på dit sidste spørgsmål.
Avatar billede Gimhle Novice
25. januar 2011 - 15:52 #7
Når jeg så på et eller andet tidspunkt får "styr på" at kode et XML-fil-dokument, kan du så hjælpe mig videre med et script som kan "læse" XML ?
Skal scriptet placeres i hjemmesidens HTML-kode på det sted hvor listens "data" ønskes vist, evt. i et felt (ramme) ?
Avatar billede HBP2 Praktikant
25. januar 2011 - 16:08 #8
XML er ikke det nemmeste format at generere "i hånden". Måske en simpel tekst fil ville være nemmere at vedligeholde, noget i retningen af:

2011-01-25 Kaffe og kage
2011-06-19 Sommerferien begynder
2011-12-24 Juleaften

Den kan læses fra PHP ligeså nemt som XML, men er nemmere for et menneske at redigere. XML er nemt for software...

Derefter skriver man en passende stump PHP som indsættes i HTMLen der hvor man ønsker listen skal dukke op.
Avatar billede Gimhle Novice
25. januar 2011 - 18:07 #9
Hej HBP2

Dit eksempel:
2011-01-25 Kaffe og kage
2011-06-19 Sommerferien begynder
2011-12-24 Juleaften
skrives det ind i et "eksternt dokument" (tekst-fil) som uploades
til hjemmesidens HTML-mappe. Er det et "must" at datoangivelsen er "bagvendt" (engelsk)?
Har du evt. "en passende stump" PHP-kode ?
Avatar billede HBP2 Praktikant
25. januar 2011 - 18:29 #10
Dataene skal naturligvis stå i en tekst fil af en slags som din kone uploader til hjemmesidens HTML mappe hver gang der er rettelser.

Dato angivelsen kan være i et hvilket som helst format du ønsker - bare det er det samme fra gang til gang; jeg har bare brugt det format som er standard. Grunden til at det format er standard er at det er nemt for computere at arbejde med.

Her er et eksempel som antager samme format som tidligere beskrevet - har ikke testet det:

<?php

$fil = "/home/myuser/public_html/aktiviteter.txt";

$idag = date("Y-m-d"); // f.eks. "2011-01-25"

$alle = file($fil, FILE_IGNORE_NEW_LINES);

echo "<table>\n";
foreach ($alle as $aktivitet) {
  $dato = substr($aktivitet, 0, 8); // første 8 tegn er dato
  if ($dato != $idag)  continue;

  $aktivitet = trim(substr($aktivitet, 8)); // resten er teksten
  echo " <tr><td>".htmlspecialchars($aktivitet)."</td></tr>\n";
}
echo "</table>\n";
?>

Skulle gerne generere noget a la:

<table>
<tr><td>Kaffe og kage</td></tr>
</table>
Avatar billede Gimhle Novice
25. januar 2011 - 18:53 #11
"/home/myuser/public_html/aktiviteter.txt";

Er ovennævnte en "sti" til dokumentet ? = Dokumentets navn skal altså hedde: aktiviteter.doc - som er et "extern tekst-fil" (Er det rigtig forstået, at det ikke skal være i XML-format) ?

"/home/myuser/public_html/aktiviteter.txt";

Skal denne kode indeholde foreningens domænenavn f.eks. "/www.korsløkke.dk/myuser/public_html/aktiviteter.txt";
Avatar billede HBP2 Praktikant
25. januar 2011 - 20:18 #12
/home/myuser/... er filens navn (sti) på web serveren. Du må evt. spørge web-hotellet hvor du bør ligge filen. Du kan muligvis erstatte
  $fil = "/home/myuser/...";
med
  $fil = $_SERVER["DOCUMENT_ROOT"]."/aktiviteter.txt";
hvis "aktiviteter.txt" filen uploades til samme katalog som selve HTML dokumentet.

Mit eksempel bruger naturligvis en fil i det format som jeg tidligere gav et eksempel på, altså ikke XML.

Der er en lille fejl i mit eksempel: 2 steder henviser jeg til at de første 8 tegn af hver linie er datoen, det er naturligvis de første 10 tegn, så ret "8" til "10" de to steder.
Avatar billede Gimhle Novice
29. januar 2011 - 23:08 #13
Jeg laver en test på min hjemmeside inden jeg "overdrager" den til min kone.
Jeg har gemt 2 udgaver af testsiden: htm + php
På htm-siden vises noget at koden. På php-siden intet :-(
Dataene fra aktiviteter.txt vises ikke :-(
Vil du tage et "kig" på det ?

http://www.morgenmusikken.dk/forening.htm
http://www.morgenmusikken.dk/forening.php
Avatar billede HBP2 Praktikant
29. januar 2011 - 23:46 #14
HTML siden skal hedde .php ellers ved webserveren ikke at det er PHP og så sender den bare det hele afsted til din browser. Men det er godt nok at du har gjort det på begge måder, ellers kunne jeg ikke se din PHP.

Det ser ikke ud som om du har gemt en fil med aktiviteter. Eller også ligger den et forkert sted, men så burde der komme en fejl. Eller også er filen tom eller i et forkert format.
Prøv evt. at udskrive indholdet af $_SERVER og $fil, ved at tilføje

print_r($_SERVER);
print_r($fil);

lige efter linien med  $alle = ....
Avatar billede HBP2 Praktikant
29. januar 2011 - 23:47 #15
undskyld, det skulle være:

print_r($_SERVER);
print_r($alle);
Avatar billede Gimhle Novice
30. januar 2011 - 00:27 #16
Jeg blev lidt i tvivl om ovenstående skulle være en tilføjelse eller noget som skulle gå i stedet for, så jeg prøvede begge dele.
$alle = file($fil, FILE_IGNORE_NEW_LINES); print_r($_SERVER);
print_r($alle);
eller
$alle = print_r($_SERVER); print_r($alle);

http://www.morgenmusikken.dk/forening.htm
http://www.morgenmusikken.dk/forening.php

http://www.morgenmusikken.dk/forening+.htm
http://www.morgenmusikken.dk/forening+.php
Avatar billede HBP2 Praktikant
30. januar 2011 - 08:57 #17
Nu ser det ud som om det virker - hvis du fjerner linierne med print_r() så ser det da ud som om .php udgaven vil udskrive en linie med

30 Kaffe og kage

"30" kommer med fordi du kun har rettet den ene af de linier som indeholder "8", som beskrevet tidligere.
Avatar billede Gimhle Novice
30. januar 2011 - 09:45 #18
Ja. Nu fungerer det!
Er det muligt at datoen vises også? (30.01.2011)
Kan teksten undgå at "knække" når den bliver længere?
Kan den komplette aktivitetsliste vises. Stadig med den nærmest forestående dato øverst+
http://www.morgenmusikken.dk/ (...)
Avatar billede HBP2 Praktikant
30. januar 2011 - 09:57 #20
Datoen fjernes af linien:

$aktivitet = trim(substr($aktivitet, 10));

substr() fjerner de først 10 tegn.
Hvis du vil have datoen i et andet format end "Y-m-d" så kig her: http://dk.php.net/manual/en/function.date.php

Hvis teksten knækker er det et spørgsmål om design af HTMLen.

Du kan løbe listen igennem 2 gange, første gang tjekker du om datoen passer, anden gang tjekker du ikke om datoen passer; så får du dags dato først.
Avatar billede Gimhle Novice
30. januar 2011 - 10:26 #21
Jeg har nok ikke formuleret mig godt nok.
Kan hele datolisten vises (f.eks. 20 datoer med aktiviteter)
Kan man vælge andre skrifttyper?
Kan dataene vises i rammer/spalter?
Avatar billede HBP2 Praktikant
30. januar 2011 - 10:33 #22
Ja, det er op til dig selv at vælge hvilke der skal vises og hvilke der ikke skal vises, ved at lave passende sammenligninger. I øjeblikket sammenlignes scriptet bare datoen med "idag".

Skrifttype/rammer/spalter: det har at gøre med HTML design.
Avatar billede Gimhle Novice
30. januar 2011 - 13:02 #23
Som tidligere nævnt har jeg overhovedet ingen erfaring med PHP.
Kan du ændre scriptet til ikke bare at vise "dagen i dag" men udover "dagen i dag" at vise samtlige datoer i listen som er nyere end "dagen i dag".

Jeg forstår det du skriver således, at man kan  i HTML-koden på hjemmesiden kan ændre skrifttypen. D.v.s at dataene kommer fra .txt-filen men udseendet kan ændres i HTML?

Hvis dataene fra .txt-filen skal fordeles i nogle spalter, kræver det vel at php-scriptet placeres i hver sin spalte? Derefter skal koden vel tilpasses til kun at vise nogle bestemte fragmenter af txt.filen netop i den pågældende spalte?
Avatar billede Gimhle Novice
30. januar 2011 - 13:37 #24
Lige et spørgsmål mere!
Kan php-scriptet styre dataene ikke (ikke kun datoen 2011-01-30) men også udfra klokkeslettet (kl. 9.00 og 10.30) Altså fjerne tekstlinien når tidspunktet er passeret?
Avatar billede HBP2 Praktikant
30. januar 2011 - 18:05 #25
Alt det du spørger om har ikke rigtig med problem løsning at gøre - det er decideret arbejde.
Avatar billede Gimhle Novice
30. januar 2011 - 18:16 #26
Set med mine briller, mener jeg, at det har med løsning af et problem, at gøre. Jeg har da stadig et uløst problem. Hvordan kommer jeg så videre?
Avatar billede magic-mouse Novice
01. februar 2011 - 09:16 #27
Skriv evt. en intern besked til mig så kan vi kigge på det.
ellers kan jeg anbefale www.php.net som er et godt sted at starte hvis man skal lave hjemmesider i php.
Avatar billede magic-mouse Novice
01. februar 2011 - 10:29 #28
Skriv evt. en intern besked til mig så kan vi kigge på det.
ellers kan jeg anbefale www.php.net som er et godt sted at starte hvis man skal lave hjemmesider i php.
Avatar billede magic-mouse Novice
09. februar 2011 - 23:43 #29
Skulle du ikke give HBP2 sine points ?
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