PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geburtstagsdatum in Abfrage


marqito
25.04.2007, 13:33:48
Hallo zusammen,
ich habe ein Feld, in dem der Benutzer sein Geburtstagsdatum eingeben kann. Anhand des eingegebenen Geburtstags möchte ich eine Prämie herausfinden. In meiner in meiner Tabelle 2 Felder. Ein geb_von und geb_bis. Ich habe 3 mögliche Altersstufen. Hier ist meine Abfrage:

$query= "SELECT ambulant.am_nettopraemie + grundversicherung.gr_nettopraemie FROM ambulant, grundversicherung

LEFT JOIN postleitzahl
ON ambulant.am_region = postleitzahl.pz_region

WHERE postleitzahl.pz_plz ='" . $plz . "'"
AND '" . $geburtstag . "' BETWEEN grundversicherung.gr_geb_von AND grundversicherung.gr_geb_bis;

Deine Felder sind beide vom Typ "Date". Es kommt jedoch folgende Fehlermeldung:

Parse error: parse error, unexpected T_STRING in /data/kunde/inet/www/011305/sameli.org/projekte/ergebnis13.php on line 38

Also scheint das '" . $geburtstag . "' falsch zu sein. Aber ich seh nicht, was das Problem ist.

Grez Marqito

Heinrich
25.04.2007, 13:57:13
Sortier mal deine Ansammlung von Anführungszeichen richtig. Bei $plz ist eins zuviel, das am Ende fehlt.

Übrigens reicht in der Regel
WHERE postleitzahl.pz_plz = ' $plz'

marqito
25.04.2007, 16:33:18
Alles klar. Vielen Dank. Ich bekomme aber weiterhin die Meldung. Hier ist mein ganzer Skript. Er sagt, dass auf der Linie

if (DB::isError($result)) {print " $query<br>"; die ($result->getMessage());}

Hier der Skript:

$query= "SELECT ambulant.am_nettopraemie + grundversicherung.gr_nettopraemie FROM ambulant, grundversicherung

LEFT JOIN postleitzahl
ON ambulant.am_region = postleitzahl.pz_region

WHERE postleitzahl.pz_plz = ' $plz'
AND ' $geburtstag' BETWEEN grundversicherung.gr_geb_von AND grundversicherung.gr_geb_bis;


$result = $db->getAll($query, DB_FETCHMODE_FLIPPED);
if (DB::isError($result)) {print " $query<br>"; die ($result->getMessage());}


// Schreibbefehl
//***************************
print "<table>";

foreach ($result as $field => $row){
print "<tr>";
foreach ($row as $field => $value){
print "<td class='meinlayer' border='1' valign='top' align='center' nowrap>$value</td>";
}
print "</tr>\n";
}
print "</table>";

Heinrich
25.04.2007, 18:55:03
Ändere mal in
print $query."<br>";

marqito
25.04.2007, 19:32:33
Hallo Heinrich,
so geht's:

$query= "SELECT * FROM grundversicherung

INNER JOIN postleitzahl
ON grundversicherung.gr_region = postleitzahl.pz_region

WHERE postleitzahl.pz_plz = ' $plz '";

$result = $db->getAll($query, DB_FETCHMODE_FLIPPED);
if (DB::isError($result)) {print " $query<br>"; die ($result->getMessage());}


// Schreibbefehl
//***************************
print "<table>";

foreach ($result as $field => $row){
print "<tr>";
foreach ($row as $field => $value){
print "<td class='meinlayer' border='1' valign='top' align='center' nowrap>$value</td>";
}
print "</tr>n";
}
print "</table>";

Nur wenn ich eine weitere Bedingung hinzu füge, wird gar nichts mehr angezeigt.

Was ist denn hier das Problem:

$query= "SELECT * FROM grundversicherung

INNER JOIN postleitzahl
ON grundversicherung.gr_region = postleitzahl.pz_region

WHERE postleitzahl.pz_plz = ' $plz '
AND grundversicherung.gr_modell = ' $modell '";

Grez Marqito

Heinrich
25.04.2007, 20:50:17
Klammer die beiden Bedingungen ein:
WHERE (postleitzahl.pz_plz = ' $plz')
AND ('$geburtstag' BETWEEN grundversicherung.gr_geb_von AND grundversicherung.gr_geb_bis)";

marqito
25.04.2007, 21:29:48
Jepp, das war goldrichtig. Ich hab mir mit Deiner Hilfe folgende Abfrage gebaut:


$query1= "SELECT grundversicherung.gr_nettopraemie FROM grundversicherung, postleitzahl
WHERE (postleitzahl.pz_region = grundversicherung.gr_region)
AND (postleitzahl.pz_plz = ' $plz ')
AND (grundversicherung.gr_modell = ' $modell ')
AND (grundversicherung.gr_unfall = ' $unfall ')
AND (grundversicherung.gr_franchisen = ' $franchise ')
AND (' $jahrgang ' BETWEEN grundversicherung.gr_jahrgang_von AND grundversicherung.gr_jahrgang_bis)";

$result = mysql_query($query1);

echo mysql_error();

// Jetzt Tabellenzeilen aufbauen und mit Werten füllen

while($row = mysql_fetch_array($result))
{
echo $row['gr_nettopraemie'] . '<br>';
}

Wenn ich dies ausführe, kommt nichts. Auch kein Fehler. Siehst Du bei der Abfrage ein Problem?

Grez Marqito

marqito
26.04.2007, 16:25:22
Hallo Heinrich,
ich hab es soweit hinbekommen, dass ich von 2 Tabellen je die Nettopraemie anzeigen kann. Hier mein Code:


$query1= "SELECT grundversicherung.gr_nettopraemie FROM grundversicherung, postleitzahl
WHERE (postleitzahl.pz_region = grundversicherung.gr_region)
AND (postleitzahl.pz_plz = ' $plz ')
AND (grundversicherung.gr_modell = '$modell')
AND (grundversicherung.gr_unfall = '$unfall')
AND (grundversicherung.gr_franchisen = '$franchise')
AND ('$jahrgang' BETWEEN grundversicherung.gr_jahrgang_von AND grundversicherung.gr_jahrgang_bis)";

$query2= "SELECT ambulant.am_nettopraemie FROM ambulant, postleitzahl
WHERE (postleitzahl.pz_region = ambulant.am_region)
AND (postleitzahl.pz_plz = ' $plz ')";

$result1 = mysql_query($query1);
$result2 = mysql_query($query2);

echo mysql_error();

// Jetzt Tabellenzeilen aufbauen und mit Werten füllen

while($row = mysql_fetch_array($result1))
{
echo $row['gr_nettopraemie'] . '<br>';
}

while($row = mysql_fetch_array($result2))
{
echo $row['am_nettopraemie'] . '<br>';
}

Mein Ziel ist es, diese beiden Werte zusammen zu zählen. Ich habe probiert, einfach eine Variable zu machen:

$summe = '$query1' + 'query2';

Klappt aber nicht. Vielleicht hast Du mir da noch einen Tipp.

Gruss Marqito

Crooklyn
26.04.2007, 21:41:34
Hi,

Dein Scriptteil:

$result1 = mysql_query($query1);
$result2 = mysql_query($query2);

echo mysql_error();

// Jetzt Tabellenzeilen aufbauen und mit Werten füllen

while($row = mysql_fetch_array($result1))
{
echo $row['gr_nettopraemie'] . '<br>';
}

Wenn du $query1 und 2 miteinander Addieren willst, kommt nichts dabei raus, weil erst durch MYSQL_FETCH_ARRAY eine Auswertung der Abfrage erfolgt.

Hab hier mal testweise den ersten Abschnitt der Tabellenerstellung verändert wie ich mir eine lösung vorstellen könnte Erklärung unten.
while($row = mysql_fetch_array($result1))
{
$nettopraemie_gr = $row['gr_nettopraemie'];
echo $nettopraemie_gr . '<br>';
$save_nettopraemie_gr = mysql_query("INSERT INTO rechner_zwischensummen (netto_gr) VALUES ('$nettopraemie_gr')") or die(mysql_error());
}

... könntest du vllt noch die Werte in eine Datenbank / Datei speichern so das du 2 feste werte hast die du nun miteinander Addieren kannst.

Heinrich
26.04.2007, 22:29:19
$summe = $row['gr_nettopraemie'] + $row['am_nettopraemie'];
So ähnlich müsste es gehen...wenn es das ist, was du addieren willst....