Hallo liebe Mitglieder des Forums,
ich bin seit eben gerade hier registriert und habe schon ein Problem das zu lösen ist.
Ich habe eine Datenbank-Abfrage gestaltet:
Diese Abfrage gibt eine Tabelle aus die wie folgt aussieht:
[Bildlink entfernt]
Wie man sehen kann wird da eine Person doppelt ausgegeben.
Das ist deshalb, weil die Patientin einmal die Krankenkasse gewechselt hat.
Ich allerdings brauche nur den aktuelleren Wert. Ich weiß allerdings nicht wie ich das jetzt am besten programmieren kann, damit es das auch richtig anzeigt. :-/
Bin für jede Hilfe dankbar!
ich bin seit eben gerade hier registriert und habe schon ein Problem das zu lösen ist.
Ich habe eine Datenbank-Abfrage gestaltet:
PHP-Code:
switch($text)
{
// Keine Eingabe
case FALSE:
?> <script language="javascript" type="text/javascript">
alert('Bitte machen Sie eine Eingabe!');
</script> <?php
echo ibase_errmsg();
die;
// Eingabe: Komma -> Alles anzeigen
case ',':
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr
ORDER BY
pa_name,
pa_vorname;";
break;
// Eingabe = Zahl
case is_numeric($text):
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_PAT_NR) LIKE '".$text."%';";
break;
case (strpos($text, ',')<1):
$splitted_name = explode(',', $text);
$vorname = trim($splitted_name[1]);
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_VORNAME) LIKE '".strtolower($vorname)."%'
ORDER BY
pa_name,pa_vorname;";
// Suche nach Vor- und Nachnamen über Eingabe: Komma
case (strpos($text, ',')>0):
$splitted_name = explode(',', $text);
$name = trim($splitted_name[0]);
$vorname = trim($splitted_name[1]);
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_NAME) LIKE '".strtolower($name)."%'
AND LOWER(PA_VORNAME) LIKE '".strtolower($vorname)."%'
ORDER BY
pa_name,pa_vorname;";
break;
// Suche nach Vor- und Nachnamen über Eingabe: Leerzeichen
case (strpos($text, ' ')>0):
$splitted_name = explode(' ', $text);
$name = trim($splitted_name[0]);
$vorname = trim($splitted_name[1]);
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_NAME) LIKE '".strtolower($name)."%'
AND LOWER(PA_VORNAME) LIKE '".strtolower($vorname)."%'
ORDER BY
pa_name,pa_vorname;";
break;
// Suche nach Vor- und Nachnamen über Eingabe: Kommas anschließenden Leerzeichen
case (strpos($text, ', ')>0):
$splitted_name = explode(', ', $text);
$name = trim($splitted_name[0]);
$vorname = trim($splitted_name[1]);
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_NAME) LIKE '".strtolower($name)."%'
AND LOWER(PA_VORNAME) LIKE '".strtolower($vorname)."%'
ORDER BY
pa_name,pa_vorname;";
break;
// Suche nach Vor- und Nachnamen über Eingabe: Leerzeichen anschließend Komma
case (strpos($text, ' ,')>0):
$splitted_name = explode(' ,', $text);
$name = trim($splitted_name[0]);
$vorname = trim($splitted_name[1]);
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_NAME) LIKE '".strtolower($name)."%'
AND LOWER(PA_VORNAME) LIKE '".strtolower($vorname)."%'
ORDER BY
pa_name,pa_vorname;";
break;
// Suche nach Vor- und Nachnamen über Eingabe: Leerzeichen, Komma, Leerzeichen
case (strpos($text, ' , ')>0):
$splitted_name = explode(' , ', $text);
$name = trim($splitted_name[0]);
$vorname = trim($splitted_name[1]);
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_NAME) LIKE '".strtolower($name)."%'
AND LOWER(PA_VORNAME) LIKE '".strtolower($vorname)."%'
ORDER BY
pa_name,pa_vorname;";
break;
// Normale Suche nach Nachnamen
default:
$query = "SELECT
pa_name,
pa_vorname,
pa_titel,
substring(100+extract(DAY FROM pa_geb_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM pa_geb_datum)from 2 for 2)||
'.'|| extract(YEAR FROM pa_geb_datum),
vs_kas_bezeichnung,
vs_versich_art,
vs_mart,
pa_behandler,
pa_pat_nr,
substring(100+extract(DAY FROM vs_ab_datum)from 2 for 2)||
'.'|| substring(100+extract(MONTH FROM vs_ab_datum)from 2 for 2)||
'.'|| extract(YEAR FROM vs_ab_datum)
FROM
patient,
versichertenstatus
WHERE
pa_pat_nr=vs_pat_nr AND
LOWER(PA_PAT_NR) LIKE '".$text."%'
ORDER BY
vs_ab_datum DESC;";
}
// Login und Verbindung zur Query
$dbabfrage = ibase_query($login, $query);
//Fehlermeldung
if($dbabfrage==false)
{
echo(string)ibase_errmsg();
die;
}
// Datenbank anzeigen
echo '<br />';
echo '<table border="1" align="center" style="background-color: white; min-width: 800px; font-family: Arial;">';
echo '<tr>';
echo '<th>Name, ';
echo 'Vorname';
echo '<span style="white-space:pre"> </span>';
echo 'Titel</th>';
echo '<th>Geb.-Datum</th>';
echo '<th>Kr.-Kass.-Namen</th>';
echo '<th>Priv.</th>';
echo '<th>Mitgl.</th>';
echo '<th>Stam.</th>';
echo '<th>Pat-Nr.</th>';
echo '</tr>';
while($zeile = ibase_fetch_row($dbabfrage))
{
echo '<tr>';
for($j=0; $j<1; $j++)
{
echo '<td>'.(string)$zeile[0].', '.(string)$zeile[1].'<span style="white-space:pre"> </span>'.(string)$zeile[2].'</td>';
}
for($j=3; $j<5; $j++)
{
echo '<td>' . (string)$zeile[$j] . '</td>';
if(strlen($zeile[4]) >= '15')
{
$zeile[4]=substr($zeile[4], 0,15);
}
}
if($zeile[5] == '1')
{
echo '<td> </td>';
}
elseif($zeile[5] == '2')
{
echo '<td>P</td>';
}
switch($zeile[6])
{
case '1':
echo '<td>M</td>';
break;
case '3':
echo '<td>F</td>';
break;
case '5':
echo '<td>R</td>';
break;
default:
echo '<td>-</td>';
break;
}
echo '<td>' . (string)$zeile[7] . '</td>';
for($j=8; $j<10; $j++)
{
echo '<td>' . (string)$zeile[$j] . '</td>';
}
echo '</tr>';
}
echo '</table>';
[Bildlink entfernt]
Wie man sehen kann wird da eine Person doppelt ausgegeben.
Das ist deshalb, weil die Patientin einmal die Krankenkasse gewechselt hat.
Ich allerdings brauche nur den aktuelleren Wert. Ich weiß allerdings nicht wie ich das jetzt am besten programmieren kann, damit es das auch richtig anzeigt. :-/
Bin für jede Hilfe dankbar!

Kommentar