Avatar billede compac Seniormester
08. januar 2011 - 16:39 Der er 7 kommentarer og
1 løsning

Udtræk fra database

Jeg skal lave et udtræk fra en database på baggrund af datoer, hvor mine data står i datoorden. Udtrækket skal stå i datoorden, men ind imellem kommer der en dato, som endnu ikke er skrevet ind i databasen.

Hvordan får jeg det til at stå således at den "ikke skrevne dato" kommer til at stå det rigtige sted?

//ikke gemt opl:  $beskrivelse

$sql="select fradato, beskrivelse, side_slettes $arrangement where side_slettes >= CURRENT_DATE order by fradato";
                    $result=mysql_query($sql) or die(mysql_error());   
               
            while($row=mysql_fetch_array($result)){   
                  $beskrdb = $row['beskrivelse'];
                  $fradatodb = $row['fradato´'];
              if ($fradatodb < $fradato){
                  echo $beskrdb;
              }
              else
              {
              echo $beskrivelse;
            }
              $fradato2db = $fradatodb;
          }

Det må kunne løses på en mere smart måde end en uoverskuelig if-sætning.
Avatar billede webweaver Praktikant
08. januar 2011 - 17:06 #1
Jeg er ikke sikker på at jeg kan følge dig. Er ikke sikker på jeg forstår hvad du vil helt præcist.

Du vil gerne sortere dine data du trækker ud efter dato.
Der står ikke en dato i alle rækkerne, men alligevel vil du gerne have det sorteret korrekt. Hvordan skulle det lige kunne lade sig gøre? Den kan jo ikke gætte sig til, hvilket dato der kommer til at stå en gang i fremtiden ....

Men som sagt, ved ikke om jeg misforstår din hensigt? :)
Avatar billede compac Seniormester
08. januar 2011 - 17:57 #2
Jeg trækker records ud af databasen. Disse datoer udskrives i datoorden. Det virker perfekt.

Datoen det drejer sig om kommer fra en inputsætning.

Denne dato ligger ikke i databasen endnu.
Den skal så udskrives på en plads, så datorækkefølgen ikke bliver brudt.

eks. i databasen ligger 2011-01-01 og 2011-01-12 og datoen fra inputsætningne er f.eks 2011-01-09.

Databasens datoer er ikke noget problem at få udskrevet, men hvordan får jeg puttet min "inputdato" ind imellem?

Der kan jo forekomme forskellige situationer: f.eks at "inputdatoen" er den nyeste, ældste eller ligge ind imellem (som i eksemplet).
Avatar billede webweaver Praktikant
08. januar 2011 - 21:24 #3
Ahh så tror jeg at jeg forstår bedre :-)

Jeg har kigget på det og skrevet et lille script til dig som gør det du ønsker.

<?php

$inputdato = "2011-03-09"; // Din dato fra dit inputfelt her ..                                   
$count = 1;
$result = array();

$connect = mysql_connect("****", "******", "*****") or die("Der kunne ikke oprettes forbindelse til databasen lige nu. Prøv igen senere.");
mysql_select_db("*****", $connect) or die("Databasen blev ikke fundet!");

$check = mysql_query("SELECT dato FROM table") or die(mysql_query());

while ($data = mysql_fetch_array($check)) {

if ($count == 1) {

$result[] = $inputdato;
$count++;

}

$result[] = $data['dato'];

}

sort($result);

foreach ($result as $key => $val) {

echo $val . "<br>";

}

?>
Avatar billede webweaver Praktikant
08. januar 2011 - 21:29 #4
Lige en anden ting, ved et sideblik fra denne tråd. Du har 900 point ude, hvilket ikke er specielt populært!

Du skal huske at lukke dine tråde når de er færdige og uddele point til de retmæssige. Du har en masse gamle tråde, som burde være lukket for længst.

Hvis der er lagt et svar i tråden eller du har fået anden hjælp som du kunne bruge, så accepter det eller bed personen om at lægge et svar. Hvis der ikke kom en løsning på problemet, så smid selv et svar og accepter det!

Tak.

Jeg lægger et svar her, når du har fået det postede script op at køre.
Avatar billede compac Seniormester
09. januar 2011 - 23:07 #5
Det er OK. Hvis jeg så skal have et felt mere udskrevet dels fra et inputfelt og dels fra databasen, hvordan skal koden så se ud?

Jeg har:
$inputdato = "2011-03-09"; // Din dato fra dit inputfelt her ..
$inputtekst = "mintekst"; //tekst til begivenhed

.. og forespørgsel 

$check = mysql_query("SELECT dato,begivenhed FROM table") or die(mysql_query());

Det er stadigvæk datoen der skal styre det. Begivenhed skal blot hæftes på:

udskrift eks:

2011-03-09  mintekst
2011-03-20  mintekst1
2011-03-25  mintekst3
Avatar billede webweaver Praktikant
09. januar 2011 - 23:32 #6
Så kan du gøre således,

<?php

$inputdato = "2011-03-13";           
$inputtekst = "Tekst fra input ...";                           
$count = 1;
$result = array();

$check = mysql_query("SELECT dato, begivenhed FROM dato") or die(mysql_query());
           
while ($data = mysql_fetch_array($check)) {

if ($count == 1) {
                       
$result[] = $inputdato . " " . $inputtekst;
$count++;
                           
}

$result[] = $data['dato'] . " " . $data['begivenhed'];
                               
}

sort($result);

foreach ($result as $key => $val) {

echo $val . "<br>";

}
                                           
?>
Avatar billede compac Seniormester
10. januar 2011 - 10:05 #7
Simpelthen alletiders, tak for hjælpen. Ang. afslutning af spm. er jeg igang.
Avatar billede webweaver Praktikant
10. januar 2011 - 14:38 #8
Det kan jeg se. Det er super :)

Godt at jeg kunne hjælpe.

Fortsat god dag :-)
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