Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Heiho liebe Community,

ich habe hier ein echt dringendes und blödes Problem und zwar geht es jetzt darum,

das ich jetzt ein paar weitere Angaben zu meiner Abfrage hinzufügen soll, dazu gehört eben eine Abfrage

über das Geburtsdatum des Patienten. Allerdings ist jetzt das Problem da das Datum in der DB

wie folgt abgespeichert ist:

z.B. 1958-02-14 00:00:00

Ich allerdings brauche erstens nur das Datum, also ohne Uhrzeit und zweitens wenn es geht leserlicher,

soll heißen z.B. so:

14.02.1958

Wie mache ich das letztendlich dann? Direkt über die SQL Abfrage? Ich habe nämlich echt keinen Schimmer,

wie ich das anstellen soll. :o

Vielen Dank schon einmal im voraus.

Grüße

PATix

Hier noch der Code:

<?php

// Logindaten für die Datenbank
$host = ...
$dbuser = ...
$dbpassword = ...

// Datenbank Login
$login = ibase_connect($host, $dbuser, $dbpassword);
// Fehlermeldung
if($login==false)
{
echo "Die Datenbank konnte nicht geöffnet werden.<br />";
echo ibase_errmsg();
die;
}


// Einbindung der HTML Datei (zur Wiederholung der Eingabe)
include('index.html');
$text = $_POST['eingabe'];


// Abfrage der query
switch($text)
{
// Keine Eingabe
case FALSE:
echo "<br /><b>Bitte machen Sie eine Eingabe!</b>";
echo ibase_errmsg();
die;

// Eingabe: Komma -> Alles anzeigen
case ',':
$query = "SELECT pa_name,pa_vorname,pa_titel,pa_geb_datum,pa_pat_nr FROM patient
ORDER by pa_name,pa_vorname;";
break;

// Eingabe = Zahl
case is_numeric($text):
$query = "SELECT pa_name,pa_vorname,pa_titel,pa_geb_datum,pa_pat_nr FROM patient
WHERE 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,pa_geb_datum,pa_pat_nr FROM patient
WHERE 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,pa_geb_datum,pa_pat_nr FROM patient
WHERE 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,pa_geb_datum,pa_pat_nr FROM patient
WHERE 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,pa_geb_datum,pa_pat_nr FROM patient
WHERE 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,pa_geb_datum,pa_pat_nr FROM patient
WHERE 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,pa_geb_datum,pa_pat_nr FROM patient
WHERE 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,pa_geb_datum,pa_pat_nr FROM patient
WHERE LOWER(PA_NAME) LIKE '".strtolower($text)."%'
ORDER by pa_name,pa_vorname;";
}


// 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="0" style="background-color: white; min-width: 750px; font-family: Arial">';
echo '<tr>';
echo '<th>Name</th>';
echo '<th>Vorname</th>';
echo '<th>Titel</th>';
echo '<th>Geb.-Datum</th>';
echo '<th>Pat-Nr.</th>';
echo '</tr>';
$anzFields = ibase_num_fields($dbabfrage);
while($zeile = ibase_fetch_row($dbabfrage))
{
echo '<tr>';
for($j=0; $j<$anzFields; $j++)
{
echo '<td>' . (string)$zeile[$j] . '</td>';
}
echo '</tr>';
}
echo '</table>';


// Beenden und Schließen der Datenbank
ibase_free_result($dbabfrage);
ibase_close($login);


// Abschließender Satz
echo "<br /><br />database request completed";

?>[/PHP]

Geschrieben
Wo genau liegt dein Problem? Soweit ich sehen kann ist das Datum in den Anfragen schon enthalten. Findest du php-Referenz nicht?

Ja, das Datum habe ich schon drin, aber das Problem was ich habe ist, das mir das Datum nicht in der Deutschen Schreibung angezeigt wird, sondern so: 1953-03-10 00:00:00. Ich allerdings brauche es erstens ohne Uhrzeit und zweitens in Deutscher Schreibung, soll heißen so: 10.03.1953 z.B.

Geschrieben

Die erste Funktion nimmt den String und macht daraus einen Zeitstempel.

Die Zweit bekommt und Format und einen Zeitstempel übergeben und macht daraus einen String.

Hast du dir die Links angeschaut? Hast du Fragen dazu?

Geschrieben

das er das so 1953-03-10 00:00:00 anzeigt liegt daran das der datentyp in der db so eingestellt ist.

du kannst aber per explode() das ganze aus einander nehmen und dann per array neu formatieren.

wenn du den datentyp nicht ändern willst/kannst dann benutz noch substr() um nur den datumteil zu benutzen.

Geschrieben (bearbeitet)
Wie mache ich das letztendlich dann? Direkt über die SQL Abfrage?

Da das Datum ja hoffentlich in einem Datumsformat in der Datenbank gespeichert ist, wäre es ziemlicher Unsinn, das tatsächlich als String zu verarbeiten. Es gibt in PHP eine Funktion, die das InterBase Format bei Datumsfeldern anpasst:

PHP: ibase_timefmt - Manual

Wie der Format-String aufgebaut wird, erfährst Du hier:

PHP: strftime - Manual

Edit: Die Funktion gibt's in php5 nicht mehr... Moment...

Das kann ab php5 mit ini_set($datentyp, $format) gemacht werden, Datentyp ist einer von diesen:

"ibase.dateformat", "ibase.timeformat", "ibase.timestampformat"

Du musst in der DB nachsehen, welcher genau verwendet wird. Format siehe oben.

Bearbeitet von Toothrot

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...