Toon posts:

[cgi] wie weet een oplossing ??

Pagina: 1
Acties:

Verwijderd

Topicstarter
In het onderstaande cgi script wordt de volgende update aangegeven, alleen staat er 2102 ipv 2002.
Wie kan mij hier mee helpen?
##### GET TIME AND DATE #########

$current_time = time();
$reset_offset = $reset_offset * 3600;
$current_time = $current_time + $reset_offset;
@days =(Zondag,Maandag,Dinsdag,Woensdag,Donderdag,Vrijdag,Zaterdag);
@months = (Januari,Februari,Maart,April,Mei,Juni,Juli,Augustus,September,Oktober,November,December);
$time = time;
$time = $time + $reset_offset;
$time = $time + $update;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time);
$ampm = "a.m.";
if ($hour eq 12) { $ampm = "p.m."; }
if ($hour eq 0) { $hour = "12"; }
if ($hour > 12) {
$hour = ($hour - 12);
$ampm = "p.m.";
}
if ($min < 10) { $min = "0$min"; }
$todaydate = "$days[$wday], $mday $months[$mon] 2$year, ";
$todaydate = $todaydate."om $hour\:$min $ampm";
$mon++;
$year += 2002;
$now = "$mon.$mday.$year";
$sunday = $yday - $wday;

srand();
$rand_num = rand();

Verwijderd

maak er $year += 1902 van :?

Verwijderd

Topicstarter
Haalt niets uit ?

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:44

RM-rf

1 2 3 4 5 7 6 8 9

code:
1
2
3
4
5
6
7
8
9
10
11
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =  localtime($time);
# hier wordt $year toegewezen
..

$todaydate = "$days[$wday], $mday $months[$mon] 2$year, ";
# hier maak je $todaydate, waarin je $year toewijst direct na een 2

..

$year += 2002;
# hier tel je 2002 op bij $year, die later in $now wordt toegepast

$year is oorspronkelijk 102 (jaren na 1900); in $todaydate wordt vervolgens 2102 ge-echo-ed ("2"+102)
hierna wordt er 2002 opgeteld bij $year, en is $year opeens 2104.

ik vermoed dat je ergens $todaydate echo-ed en $now niet toepast (anders was de vraag waarom 2104)
de fout zou nu op te lossen moeten zijn (cheatah had gelijk, de juiste methode om vanuit een simple year-format een volledig 4-cijferig jaar te berekenen is $year += 1900) [neem ik aan dat die 1902 een mistiepseltje was ;)]

maar belangrijker is het om voordat je wijzigingen in een script aanbrengt te analyseren hoe een script eigenlijk verloopt, wat eigenlijk wat doet

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Ik heb $year += 2002 verandert naar $year += 1900 zo stond ie oorspronkelijk ook.
Dit maakt echter niets uit het enige wat er gebeurt is dat achter de 2 102 toegevoegd word.
Als ik de code onder $todaydate = $todaydate."om $hour\:$min $ampm"; verander of weglaat wijzigt er niets in de uitvoer.
Het rare is dat het in 1999 wel werkte maar na de overgang naar 2000 schijnbaar niet meer.
Ik had het script nog en wil het nu weer gaan gebruiken.
kan ik mischien op een bepaalde manier er weer een waarde 100 van afhalen.

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:44

RM-rf

1 2 3 4 5 7 6 8 9

Op zondag 03 februari 2002 15:13 schreef CheS het volgende:
Ik heb $year += 2002 verandert naar $year += 1900 zo stond ie oorspronkelijk ook.
Dit maakt echter niets uit het enige wat er gebeurt is dat achter de 2 102 toegevoegd word.
Als ik de code onder $todaydate = $todaydate."om $hour\:$min $ampm"; verander of weglaat wijzigt er niets in de uitvoer.
dat klopt, dat heb ik je ook daarnet uitgelegd.
de $year += vind plaats nádat $todaydate is toegekend.

de oplossing zou misschien eventueel kunnen zijn om die $year += dus vóór de toekenning van $todaydate te zetten (en die overbodige 2 voor $year daar weg te halen)
Het rare is dat het in 1999 wel werkte maar na de overgang naar 2000 schijnbaar niet meer.
Ik had het script nog en wil het nu weer gaan gebruiken.
kan ik mischien op een bepaalde manier er weer een waarde 100 van afhalen.
dat kan je doen, en dan heb je over 11 maanden weer problemen, typisch een kwestie van een script aan elkaar plakken met plakbandjes, zonder de werking van het script te analyseren.
dit is al eerder met dit script gedaan, weinig consequente syntax en heb het idee dat een gedeelte van de code overbodig is (overblijfselen van probeersels danwel debugging)

het beste wat je kan doen, is dit script regel voor regel anlyseren en proberen alle overbodige troep weg te halen, vervolgens herschrijf je de werkende code in een half uurtje in 4 regels duidelijke code en daarbij heb je weer wat van scripting geleerd.

tenzij je een voorliefde hebt voor traditioneel gordiaans knoop-programmeerwerk (doorweven met hongaarse notulatie) lijkt me dat een betere oplossing dan zulk soort van 'plakband'-oplossingen

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Bedankt voor de uitleg, ga het proberen zonder plakbandjes.

[edit]
de oplossing zou misschien eventueel kunnen zijn om die $year += dus vóór de toekenning van $todaydate te zetten (en die overbodige 2 voor $year daar weg te halen)

Ja dit was de oplossing
[\edit]
Pagina: 1