Gå til innhold

​Behandle Dato som er enten nyaktig, estimert, eller ukjent


Anbefalte innlegg

Hei!

 

Jeg holder på med ett web prosjekt, og har kommet til ett punk hvor jeg ikke helt vet hvordan jeg skal ta det videre. 
Jeg er relativ ny i web utvikling, og må google det meste, så beklager viss dette er lett 😇

For å ta det kort fortalt: 

Jeg har ett skjema hvor en opplaster kan sette en dato, denne datoen er enten en nøyaktig dato, en estimert dato (for eks. "1890'tallet"), eller en ukjent dato.

Hvordan skal jeg gå frem med  selve programmeringen av dette?
Info som trengs for å hjelpe: (spør viss det trengs mer)
 

  •  Prosjektet er skrevet i html, javascript, php.
  • Skjemaet blir lastet opp i en SQL database
  • Opplasteren skriver inn dato i ett skjema (det er selvsagt flere ting i skjemaet, men det har jeg styring på)
  • Datoen skal brukes til å filtrere data (det å kunne se ting fra dato 1981 til 2003 for eks.)
  • Som sagt så må dato kunne være estimert, samtidig som den må kunne være nøyaktig, eller totalt ukjent.

 

 

Tror denne posten ble forståelig. Si ifra viss noe ikke ble forstått, så utdyper jeg mer :)

 

Lenke til kommentar
  • 2 uker senere...
Videoannonse
Annonse

Jeg regner med at brukeren som legger inn datoen også legger inn om det er et estimat, ukjent eller nøyaktig dato. I såfall kan jo dette lagres i databasen i tillegg til datoen. Dette kan f.eks lagres som en int, 0 = kjent dato, 1 = estimat og 2 = ukjent dato. Når du skal vise dataene kan du jo se på denne, og presentere datoen avhengig av det.

Gav det mening?

Lenke til kommentar
  • 2 uker senere...

Har funnet en løsning på dette. Den har ikke blitt aktivt brukt i sortering ennå, men det virker som den kan brukes.


Det jeg endte med å gjøre var å lage 4 felt, som fylles ut av brukeren slik: 
dato.PNG.8575a1991c814c8a198be9597ef5d078.PNG

Dette blir sent til ett Form, hvor alt ukjent til satt til "X". For eks. ett bilde tatt i februar 2012 blir til:
Dato RAW:
Hundre: 20
Tiår: 1
Årstall: 2
Måned: 02
Dag:
(alt av "X" er er fjernet av saniteringen i PHP importeringen)

Dette blir da satt sammen til ett tall, i dette eksempelet: 201202

Dette regner jeg med holder til fremtidig bruk, men vet aldri.

 

Legger ved koden (som er laget av en n0ob), så dere er fri til å bruke denne: 

//Dato Formatering:
$hundre = filter_var($_POST["year1"], FILTER_SANITIZE_NUMBER_FLOAT);
$tiaar = filter_var($_POST["year2"], FILTER_SANITIZE_NUMBER_FLOAT);
$aarstall = filter_var($_POST["year3"], FILTER_SANITIZE_NUMBER_FLOAT);
$maaned = filter_var($_POST["month"], FILTER_SANITIZE_NUMBER_FLOAT);
$dag = filter_var($_POST["day"], FILTER_SANITIZE_NUMBER_FLOAT);


if ($aarstall <= 10){
  $tiaar = substr($tiaar, 0, -1);
}
echo "</br> Dato RAW: </br>" . "Hundre: " . $hundre . "</br> Tiår: " . $tiaar . "</br> Årstall: " . $aarstall . "</br>Måned: " . $maaned . "</br> Dag: " . $dag . "</br>";

$formatertDato = $hundre . $tiaar . $aarstall . $maaned . $dag;
echo "dato: " . $formatertDato;
echo "</br> dato i dag: " . date("Ymd");
if ($formatertDato > date("Ymd")){
  echo "</br> Morsom du, laster opp bilder fra fremtiden? </br>";
}else {
  $date = $formatertDato;
}
    <section id="datoFelt">
        <div class="tooltip">Velg dato så godt du kan<span class="tooltiptext">Velg datoen så presist som mulig.</br>Viss du ikke vet for eks. måned bildet er tatt velger du </br>kun Ukjent i dette feltet. </span></div>
      </div>
      <div id="datoSelect">
        <section>
          <p>Århundre</p>
          <select id="year1" class="select-css" name="year1">
            <option value="20">2000</option>
            <option value="19">1900</option>
            <option value="18">1800</option>
            <option value="17">1700</option>
            </select>
        </section>
<hr class="dividerSolid"></hr>
        <section>
          <p>Tiår</p>
          <select id="year2" class="select-css" name="year2">
            <option value="xx">Ukjent</option>
            <option value="00">00</option>
            <option value="10">10</option>
            <option value="20">20</option>
            <option value="30">30</option>
            <option value="40">40</option>
            <option value="50">50</option>
            <option value="60">60</option>
            <option value="70">70</option>
            <option value="80">80</option>
            <option value="90">90</option>
          </select>
        </section>
<hr class="dividerSolid"></hr>
        <section>
          <p>Årstall</p>
            <select id="year3" class="select-css" name="year3">
            <option value="x">Ukjent</option>
            <option value="0">0</option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="9">9</option>
          </select>
        </section>
<hr class="dividerSolid"></hr>
        <section>
          <p>Måned</p>
          <select id="month" class="select-css" name="month">
            <option value="xx">Ukjent</option>
            <option value="01">Januar</option>
            <option value="02">Februar</option>
            <option value="03">Mars</option>
            <option value="04">April</option>
            <option value="05">Mai</option>
            <option value="06">Juni</option>
            <option value="07">Juli</option>
            <option value="08">August</option>
            <option value="09">September</option>
            <option value="10">Oktober</option>
            <option value="11">November</option>
            <option value="12">Desember</option>
            </select>
          </section>
<hr class="dividerSolid"></hr>
        <section>
          <p>Dag</p>
          <select id="day" class="select-css" name="day">

            </select>
      </div>
    </section>

 

Lenke til kommentar
  • 2 uker senere...

Uten å hverken ha satt meg så veldig inn i det her eller tenkt så alt for mye, så ville jeg forsøkt meg database-messig med en fra og til dato. Det vil gjøre ting utrolig enkelt å søke opp etterpå.

  • Nøyaktig dato: Samme dato fra og til
  • Det du kaller estimert dato: F.eks. 1890-tallet blir fra-dato=«første sekund i 1890» og til-dato=«siste sekund i 1890»
  • Ukjent: Fra og til blir NULL

Dette bør lagres som timestamp siden du da bare trenger å søkte med «SELECT * FROM table WHERE fra NOT NULL AND til NOT NULL AND fra >= dato AND til <= dato»

Når du henter dataene ut igjen for redigering, så veit du det er

  • Nøyaktig når fra==til
  • Ukjent når fra og til er NULL
  • ...og ellers er estimert dato

Håper dette var til hjelp :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...