junior: datumsabfrage einschränken

Beitrag lesen

Hi junior!

»» Wähle ich aber jetzt z.B das Jahr 2004 aus, wird mir in der Auswahlbox nach dem drücken von "Suchen" die Zahlen von -5 bis 5 angezeigt und kein richtiges Datum mehr.
Ohne Code kann ich dir aber nicht helfen, das Problem zu lösen.

»» Wie sollte ich den den Aufruf mmit $_POST denn sonst machen?
Was meinst du nun schon wieder mit "Aufruf mit $_POST"?

$filteryear = date("Y");

$_POST['year'] = $filteryear;
....
for ($i = $filteryear-5; $i <= $filteryear+5; $i++) {
                if (isset($_POST['year']) and $_POST['year'] == $i) {
                        echo "<option selected>$i</option>\n";
                } else {
                        echo "<option>$i</option>\n";
                }
        }


>   
> Die Umkopiererei is vollkommen unnötig.  
>   
> Besser wäre:  
>   
> ~~~php

$filteryear = date("Y");  

> ....  
> // Ausgabe der Auswahlbox der Jahreszahlen  
> // aktuelles Jahr wird vorselektiert  
> for ($i = $filteryear-5; $i <= $filteryear+5; $i++)  
>   echo '<option'.(($filteryear==$i)?' selected':'').'>'.$i.'</option>'."\n";

Aber auch das ist kann falsch sein, weil ich den gesamten Quellcode nicht kenne.

MfG H☼psel

Hi Hopsel,

mein aktueller Code sieht so aus:

  
  
<?php  
  
$counter = 0;  
$datefilter = "";  
  
if (empty($_POST['Suchen'])) {  
        $filteryear = date("Y");  
        $_POST['Suchen'] = 'Suchen';  
        $_POST['year'] = $filteryear;  
}  
  
$dbconn = pg_connect("host=s001 dbname=lars user=usr_intranet")  
or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());  
  
$query = " SELECT       MIN(date_part('year', aktivvon)) AS projyearmin,  
                        MAX(date_part('year', aktivbis)) AS projyearmax  
                FROM aktivmitposkst  
        ";  
$result = pg_query($dbconn, $query) or die('Abfrage fehlgeschlagen: ' . pg_last_error());  
  
echo "  <html>\n<head>\n  
        <title>kostenstelleliste</title>\n  
        <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>\n  
        <link rel='stylesheet' type='text/css' href='lars.css' />  
        <script language='JavaScript' src='lars.js'></script>  
        <body>  
        <form action=\"  
        ";  
  
echo $_SERVER['PHP_SELF'];  
  
echo "   \" method=\"post\">  
  
        <table>  
        \t<colgroup><col width=780> <col width=120> <col width=100></colgroup>  
                <tr class=\"filter\">  
                <td>&nbsp;Filter</td>  
                <td valign=\"middle\" align=\"center\">Jahr &nbsp; <select  align=\"right\" size=\"1\" name=\"year\" class=\"year\">  
                <option value=\"*\">*</option>  
        ";  
  
        while ($row = pg_fetch_assoc($result)) {  
                $min = $row['projyearmin'];  
                $max = $row['projyearmax'];  
        }  
  
        for ($i = $min; $i <= $max; $i++) {  
                if (isset($_POST['year']) and $_POST['year'] == $i) {  
                        echo "<option selected>$i</option>\n";  
                } else {  
                        echo "<option>$i</option>\n";  
                }  
        }  
  
echo "          </select></td>  
                <td valign=\"middle\" align=\"center\"><div id=\"bottom\"><input type=\"submit\" name=\"Suchen\" value=\"Suchen\" /></td>  
                </tr>  
        </table>  
        </form>  
";  
  
if(isset($_POST['Suchen']) and $_POST['Suchen'] == 'Suchen') {  
        $filteryear = $_POST['year'];  
  
        if ($filteryear != '*') {  
                $datefilter = "AND kstbegin <= '$filteryear-12-31' AND kstende >= '$filteryear-01-01'";  
        } else {  
                $datefilter = "";  
        }  
}  

Ich bräuchte also in der for-Schleife diese if (isset($_POST['year']) and $_POST['year'] == $i)überhaupt nicht?

Darf ich dich noch was fragen, wie lernt man am Besten PHP? Hab zwar im Internet schon einige Tutorials gesucht, aber ehrlich gesagt haut mich da nichts um. Hast du einen Tip für mich?