POST
phpsuchender
- php
Hallo zusammen,
ich steh irgendwie auf dem Schlauch, außerdem bin in nicht gerade ein PHP-Spezialist, vielleicht könnt ihr mir ja etwas helfen.
Ich soll eine Auswahlbox erstellen, in der man aussuchen kann, welches Jahr man sehen möchte. Es handelt sich um Projekte, die im Schnitt über mehrere Jahre gehen, d. h. wähle ich 2008 und es gibt Projekte, die zwar schon vor 2008 begonnen haben, sollen auch angezeigt werden, weil diese ja noch laufen.
So jetzt hat mein Kollege meint, man könnte das in die SELECT-Abfrage bei WHERE mit einer $Variablen abfragen, nur irgendwie kommt dabei nichts raus.
<?php
$dbconn = pg_connect("host= dbname= user= password=") or die('Verbindungsaufbau fehlgeschlagen: ' . pg_las
t_error());
$query = "select min(date_part('year', kstbegin)) as projyearmin, max(date_part('year', kstende))
as projyearmax from kostenstelle
";
$result = pg_query($dbconn, $query) or die('Abfrage fehlgeschlagen: ' . pg_last_error());
$bla = $_POST['jahr'];
if (isset($bla))
{
$datefilter = "kstbegin >= $bla-01-01 AND kstende <= $bla-12-31";
}
else
{
$datefilter = "";
}
echo $datefilter;
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>
<center>
<form action=\"
";
echo $_SERVER['PHP_SELF'];
echo "
\" method=\"post\">
<table>
<tr>
<td>Jahr:</td>
<td>
<select size=\"1\" name=\"jahr\" class=\"dropdown\">
<option value=\"*\" selected>*</option>
";
while ($row = pg_fetch_assoc($result)) {
$min = $row['projyearmin'];
$max = $row['projyearmax'];
}
for ($i = $min; $i <= $max; $i++)
{
echo "<option>$i</option>";
}
echo " </select>
<td>
<div id=\"bottom\">
<input type=\"submit\" name=\"Suchen\" value=\"Suchen\" />
</td>
</tr>
</table>
</form>
</center>
";
//INTERNE PROJEKTE
$query =
"
SELECT kostenstelle_id, bezeichnung, kstbegin, kstende, projektleiter,
ret_mit_names(kostenstelle_id,curDate()) as mitarbeiter
FROM (SELECT kostenstelle_id, bezeichnung, kstbegin, kstende, projektleiter
FROM kostenstelle
WHERE fs_firma=1
AND $datefilter
AND kostenstelle_id > 100049)
LEFT OUTER JOIN (SELECT a.fs_kostenstelle, COUNT(distinct fs_mitarbeiter) as mitsIntern
FROM (SELECT mitarbeiter_id FROM mitarbeiter
WHERE fs_firma=1
AND eintritt<=current_date
AND ((austrITT Is null) OR (austritt > curDate()))
AND fs_mitarbeiterstatus = 1) im
In dem $query wird dann diese $VARIABLE als datefilter aufgerufen.
Jetzt wird mir überhaupt nichts mehr, außer die Überschrift angezeigt.
Kann mir jemand helfen, ich verzweifle gerade
Hallo,
Kann mir jemand helfen, ich verzweifle gerade
Kann ich mir vorstellen - Dein Code ist - sagen wir es mal vorsichtig - unübersichtlich und schlecht strukturiert.
Was z.B. ist das:
<center>
<form action=\"
";
echo $_SERVER['PHP_SELF'];
echo "
\" method=\"post\">
...
für ein Konstrukt?
Ich schlage vor, dass Du Dir eine übersichtlichere Programmierweise aneignest und vor allem das error_reporting von PHP einschaltest.
In diesem Sinne..
MfG
cross
Das ist ein bisschen viel Code zum mal eben anschauen ;-)
Generell würd ich sagen, irgendwas in der Art
WHERE Start < gewähltesDatum AND Ende > gewähltesDatum
Hallo zusammen,
ich steh irgendwie auf dem Schlauch, außerdem bin in nicht gerade ein PHP-Spezialist, vielleicht könnt ihr mir ja etwas helfen.
Ich soll eine Auswahlbox erstellen, in der man aussuchen kann, welches Jahr man sehen möchte. Es handelt sich um Projekte, die im Schnitt über mehrere Jahre gehen, d. h. wähle ich 2008 und es gibt Projekte, die zwar schon vor 2008 begonnen haben, sollen auch angezeigt werden, weil diese ja noch laufen.
So jetzt hat mein Kollege meint, man könnte das in die SELECT-Abfrage bei WHERE mit einer $Variablen abfragen, nur irgendwie kommt dabei nichts raus.
Lies dir die Tipps für Fragende mal durch.
Um eine Lösung zu finden bzw. dir beim Ansatz zu helfen benötigen wir teile deiner DB-Struktur (wie du die Projekte speicherst, vllt. Startdatum, Enddatum??)
mfg
Hi phpsuchender,
$bla = $_POST['jahr'];
if (isset($bla)) {
Zuerst die Variable $bla zu setzen und direkt im Anschluss zu prüfen, ob diese existiert ist sinnlos. An dieser Stelle wird isset($bla) stets true ergeben, PHP also im IF-Block weiter arbeiten.
Du möchtest höchstwahrscheinlich prüfen, ob der Wert $\_POST['jahr'] existiert, also isset($\_POST['jahr']) schreiben. Auf die Variable $bla kannst du gänzlich verzichten.
> ` $datefilter = "kstbegin >= $bla-01-01 AND kstende <= $bla-12-31";`{:.language-php}
Nein! Auf keinen Fall! Du baust hier in dein Scripte gerade eine Sicherheitslücke ein, indem du dein Script anfällig für [SQL-Injections](http://de.wikipedia.org/wiki/SQL-Injection) machst. Was das ist, hatte ich übrigens grade erst [hier](https://forum.selfhtml.org/?t=184397&m=1222570) erklärt.
Viele Grüße,
~ Dennis.
--
Mein [SelfCode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)
echo $begrüßung;
» ~~~php
$bla = $_POST['jahr'];
» if (isset($bla)) {
>
> Zuerst die Variable $bla zu setzen und direkt im Anschluss zu prüfen, ob diese existiert ist sinnlos. An dieser Stelle wird isset($bla) stets true ergeben, PHP also im IF-Block weiter arbeiten.
Das sollte man mit logischem Verstand annehmen, ist aber nicht so. isset() liefert nämlich auch dann false, wenn der Wert der Variablen null ist. Und das Resultat eines Lesezugriffs auf eine nicht vorhandene Variable ist null (plus eine Meldung vom Typ Notice, die PHP in der Default-Einstellung von error\_reporting nur unhörbar vor sich hin jammert).
echo "$verabschiedung $name";