Avatar billede compac Seniormester
21. november 2008 - 19:54 Der er 11 kommentarer og
1 løsning

Valg af oplysning fra database

Jeg har en database med mange datoer fordelt over flere år.
Jeg kunne tænke mig at få vist en oversigt over et år ved at indtaste årstallet i en formular.
Samtidig kunne jeg tænke mig, at indeværende  år bliver vist  straks når man går ind på siden.

Jeg har noget kode:

<form name="skriv1" method="POST" action="<?php echo $_SERVER[PHP_SELF]; ?>">
<?php
include("../conntest.php");
echo "Indtast årstal";
echo "<input name='aarstal' size='4' maxlength='4'>";
$sql="select dato from $branch";
$result=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($result))  {
list($year, $month, $day) = split('[-.]', $row['dato']);
$date = "$day-$month-$year";

if ($year = $aarstal) {
    echo "$aarstal";
}
else {
echo "<br />";
echo "ingen årstal";
}
}
?>
<input type="submit" name="skriv1" value="  OK  ">
</form>
Avatar billede showsource Seniormester
21. november 2008 - 20:38 #1
SELECT YEAR(dato) FROM tabel WHERE YEAR(dato) = YEAR(CURDATE())

Forudsætter dit dato felt er standard dato format
Avatar billede showsource Seniormester
21. november 2008 - 20:40 #2
$postyear = "SELECT YEAR(dato) FROM tabel WHERE YEAR(dato) = ".(int)$_POST["aarstal"];

$aarvalg = mysql_query($postyear) or die (mysql_error());


Du kan også lave en select som indeholder de årstal som findes i tabellen
Avatar billede compac Seniormester
21. november 2008 - 21:59 #3
Nu har jeg rettet min kode til således:
<form name="skriv1" method="POST" action="<?php echo $_SERVER[PHP_SELF]; ?>">
<?php
include("../conntest.php");
echo "Indtast årstal";
echo "<input name='aarstal' size='4' maxlength='4'>";
$postyear = "SELECT YEAR(dato) FROM results WHERE YEAR(dato) = ".(int)$_POST["aarstal"];
$aarvalg = mysql_query($postyear) or die (mysql_error());
while($row=mysql_fetch_array($aarvalg))  {
list($year, $month, $day) = split('[-.]', $row['dato']);
$date = "$day-$month-$year";
if ($year = $aarstal) {
    echo "$aarstal";
}
else {
echo "<br />";
echo "ingen årstal";
}
}
?>
<input type="submit" name="skriv1" value="  OK  ">
</form>

-men det virker ikke.

Den fanger ingen årstal.

NB! Feltet i databasen er defineret som DATE.
Avatar billede showsource Seniormester
21. november 2008 - 22:08 #4
Prøv:
if(isset($_POST["aarstal"])) {

$postyear = "SELECT YEAR(dato) as aar FROM results WHERE YEAR(dato) = ".(int)$_POST["aarstal"];
$aarvalg = mysql_query($postyear) or die (mysql_error());

    if(mysql_num_rows($aarvalg) > 0) {
        while($row=mysql_fetch_array($aarvalg))  {
        echo"<br>".$row["aar"];
        }
    }else{
    echo"Ingen rows fundet";
    }

mysql_free_result($aarvalg);

}
Avatar billede showsource Seniormester
21. november 2008 - 22:11 #5
Avatar billede compac Seniormester
21. november 2008 - 22:32 #6
I en echo-linie har du skrevet: 
    echo "<br".$row["aar"];

Hvad svarer variablen "$aar" til i min kode? -
Det ser iøvrigt ud til at den kommer forbi der, men der bliver ikke udskrevet noget.
Avatar billede showsource Seniormester
22. november 2008 - 07:17 #7
I query, bliver lavet et "alias" til et udtræk
"SELECT YEAR(dato) as aar"
på den måde får du $row["aar"]

$row["aar"] skulle vel svare til dit $year i din while
Avatar billede showsource Seniormester
22. november 2008 - 07:34 #8
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
Indtast årstal:<br />
<input name="aarstal" size="4" maxlength="4">

<input type="submit" value="Hent år">
</form>
<p>
<?php

$valgtaar = (isset($_POST["aarstal"]) ? (int)$_POST["aarstal"] : "YEAR(NOW())");


$sql="SELECT YEAR(`dato`) as `aar` FROM `".$branch."` WHERE YEAR(`dato`) = ".$valgtaar;

echo $sql."<p>";

$years = mysql_query($sql) or die (mysql_error());

if(mysql_num_rows($years) > 0) {

    while($a = mysql_fetch_object($years)) {
    echo $a->aar."<br />";
    }

}else{

echo "Ingen rows fundet!";

}

mysql_free_result($years);

?>
Avatar billede compac Seniormester
22. november 2008 - 20:27 #9
Nu fungerer det bare perfekt. Så troede jeg det var så nemt at hænge nogle flere felter på hver række.
Men jeg er lidt usikker på hvordan jeg gør(undskyld jeg ved det er en udvidelse af spørgsmålet, men jeg går ud fra, at det er en bagatel).
Jeg forestiller mig at jeg har et felt mere i min tabel: "beskrivelse", og det sætter jeg ind i select-sætningen:

$sql="SELECT YEAR(`dato`) as `aar`,beskrivelse FROM $branch WHERE YEAR(`dato`) = ".$valgtaar;

Det skal så udskrives et-eller-andet sted i while-løkken.
Kan du fortælle mig hvordan?
Avatar billede showsource Seniormester
22. november 2008 - 21:54 #10
echo $a->aar.", ".$a->beskrivelse."<br />";
Avatar billede compac Seniormester
22. november 2008 - 22:13 #11
Alletiders, tak for hjælpen - læg et svar
Avatar billede showsource Seniormester
23. november 2008 - 05:17 #12
ok
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