/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problem med dropdowns, time og mktime.
Fra : Lasse Jensen


Dato : 17-05-07 11:48

Hej folkens :)

Jeg har et problem ved mit nyhedssystem.
Jeg har 3 dropdowns i min form til datoen. Eksempel, 17 May 2007. Altså
et til dag, måned og år.

Når jeg gemmer det i DB bliver det gemt i 1 felt til udprintning igen,
samt som time. Altså Unix Epoch, til når jeg skal redigere nyheden, så
jeg kan hente datoen ned igen. Det er her jeg har problemer.

Jeg kan godt hente datoen ned i mine dropdowns igen når jeg klikker
edit, men kun hvis det er fra dags dato og frem. Hvis det er noget som
er skrevet før dags dato, så vil den ikke. Så viser den bare dags dato i
mine dropdowns, og jeg ved ikke rigtig hvorfor?

I kan se news_update.php her:
http://www.webweaver.dk/Majistical/cms/calender/news_update.phps

Håber der er nogen som kan hjælpe mig med at finde ud af hvorfor :)

Mvh. Lasse Jensen

 
 
Geert Lund (17-05-2007)
Kommentar
Fra : Geert Lund


Dato : 17-05-07 20:17

Lasse Jensen wrote:

> Håber der er nogen som kan hjælpe mig med at finde ud af hvorfor :)

Du konstruerer dine sandheds-check forkert.

Hvis fx du udtrækker dato = 1 fra din database:


<option <? if ($dato == "1") {echo "SELECTED";} else if (date("j") ==
"1" && !$heading_error && !$description_error) {echo "SELECTED";}
?>>1</option>
<option <? if ($dato == "2") {echo "SELECTED";} else if (date("j") ==
"2" && !$heading_error && !$description_error) {echo "SELECTED";}
?>>2</option>
[..]
<option <? if ($dato == "17") {echo "SELECTED";} else if (date("j") ==
"17" && !$heading_error && !$description_error) {echo "SELECTED";}
?>>17</option>


Kig på sandhedsværdierne - og outputtet af din html - faktisk vil du
have to gange SELECTED og derfor vil det ikke fungere efter hensigten;
fordi du checker udtrykkene isoleret pr. linie - og derfor vil du
risikere at der er to af linierne der kommer ud som sande og skriver
"SELECTED".

Du er altså nød til at vælge om du vil checke på $dato eller dags dato -
dette kunne fx gøres ved inden du indtræder i din <select> rutine - at
bestemme indholdet $dato - enten indeholder $dato en udtrukket værdi fra
din database eller dags dato.

Således vil du bagefter kunne checke således:

<option <? if ($dato == "1" && !$heading_error && !$description_error )
{echo "SELECTED";} ?>>1</option>
<option <? if ($dato == "2" && !$heading_error && !$description_error )
{echo "SELECTED";} ?>>2</option>
[..]
<option <? if ($dato == "17" && !$heading_error && !$description_error )
{echo "SELECTED";} ?>>17</option>


--
Med venlig hilsen
Geert Lund,
www.GLD.dk

Lasse Jensen (18-05-2007)
Kommentar
Fra : Lasse Jensen


Dato : 18-05-07 15:49

Geert Lund skrev:
> Lasse Jensen wrote:
>
>> Håber der er nogen som kan hjælpe mig med at finde ud af hvorfor :)
>
>
> Du konstruerer dine sandheds-check forkert.

Hej Gert.

Det var naturligvis det som der var fejlen.
Nu når jeg kiggede nærmere på det selv, så er det jo egentlig også meget
tydeligt, at det vil give problemer. Og det gjorde det. Og derfor løste
det selvfølgelig også problemet, ved at rette den bug.

Så tak for hjælpen :)

Mvh. Lasse Jensen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste