Problem mit Daten Zuweisung

R3DD3VIL

Mitglied
Hallo zusammen,

ich sitze hier grad an einem problem wo ich nicht weiß wie ich das richtig lösen kann, und könnte etwas Hilfe gebrauchen. Hoffe mal ich bekomme das ordentlich gepostet und es wird nicht zu verwirrend.

Ich hab 2 Tabellen in meiner Datenbank. In Tabelle 1 sind die Stammdaten des Patienten und in Tabelle 2 die Werte des Patienten. Die Tabellen enthalten folgenden Inhalt:

Tabelle 1
id (auto_increment)
pid (wird manuell zugewiesen)
name
vorname
geb_dat
[....]

Tabelle 2
id (auto_increment)
pid (ist gleich wie in Tabelle 1)
datum
dia-zeit
[...]

Jeder neu eingetragene Wert eines Patienten in Tabelle 2 erhält eine autogeneriete ID (fortlaufend). Einzig die PID in Tabelle 2 und Tabelle 1 eines jeden einzelnen Patienten ist gleich.

Zum abrufen der Patientendaten, hab ich mir eine "Kartei" erstellt, wo jedem Patienten seine Daten abgerufen werden. Dies funktioniert auch ganz gut. Nur beim Abfragen der Werte aus Tabelle 2 hab ich ein Problem. Es werden mir hier die Werte aller Patienten beim Abfragen angezeigt. Ich möchte aber lediglich die Werte dem Patienten zuweisen, zu dem Sie auch gehören. (Es können mehrere Einträge sein, die anhand der PID jedem Patient zugewiesen werden sollen)

Wie müsste die Datenbank-Abfrage den aussehen, wenn ich nur die Werte haben möchte die auch zu den passenden Stammdaten gehören Wäre super wenn mir hier jemand weiterhelfen könnte.

Hier mal der PHP-code der Datei wo die kompletten Patientendaten abgefragt und ausgegeben werden. Im ersten Teil werden die Stammdaten abgefragt (funktioniert wie gewünscht) Die Werte eines jeden Patienten werden im zweiten Teil unter
//**** Patienten Dialysedaten ****// abgefragt.
PHP:
<?php
//******************************//
//**** Patienten Stammdaten ****//
//******************************//
//Verbindung herstellen
$db = mysql_connect("localhost","benutzer","passwort");
mysql_select_db("datenbankname",$db);

// Auslesen der Patienten Stammdaten
$sql = "SELECT * FROM Pat_ListePatienten WHERE Id = \"{$_GET["id"]}\"";
$res = mysql_query($sql) or die (mysql_error());
$i = 0;

echo "<tr>
       <td class='head'><b>Patientenkarte</b></td></tr><tr><td height='8'></td>
	  </tr>
	  <tr>
	    <td><a href=\"../dia/index.php?seite=einzel&action=send&amp;id={$_GET["id"]}\" target='_self'><img 
            src='../dia/grafik/dia-eingabe.gif' border='0' alt='' title='Dialyse Eingabe'></a></td>
	  </tr>
	  <tr>
	    <td>
		 <table width='700'>
		  <table align='left' bgcolor='ffffff' width='700' style='border: 1px solid #000000;'>
		   <tr>
		    <td width='150'>
			 <table>
			  <tr>
			    <td class='tableueber'>Datenbank-ID:</td>
			  </tr>
			  <tr>
			    <td class='tableueber'>Patienten-Kennzahl:</td>
			  </tr>
			  <tr>
			    <td class='tableueber'>Name:</td>
			  </tr>
			  <tr>
			    <td class='tableueber'>Vorname:</td>
			  </tr>
			  <tr>
			    <td class='tableueber'>Geb.-Datum:</td>
			  </tr>
			  <tr>
			    <td class='tableueber'>Dialyse-Beginn:</td>
			  </tr>
			  <tr>
			    <td class='tableueber'>In Dialyse:</td>
			  </tr>
			  <tr>
			    <td class='tableueber'>Albis-ID:</td>
			  </tr>
			 </table>
			</td>
		      <td>
			   <table>
			    <tr>";

while ($row = mysql_fetch_assoc($res)) {
    $i++;
    foreach ($row as $value) {
        echo '<td class="sonderlink">'  . $value . '</td></tr>';
    }
}
echo '</table>
     </td>
	</tr>
   </table>
  </tr>';
mysql_free_result($res);

//*******************************//
//**** Patienten Dialysedaten ****//
//*******************************//

// Auslesen der Patienten Dialysedaten
$sql = "SELECT pid,datum,number FROM Pat_Dialysen WHERE pid";
$res = mysql_query($sql) or die (mysql_error());
$i = 0;

echo "<table>
		  <tr>
		    <td>
			  <table cellspacing='0' cellpadding='0' id='sampletable' align='left' width='700'>
			    <tr>
				  <td class='head'>Datum</td>
				  <td class='head'>Dialyse-Nr.</td>
				  <td class='head'>Blutfluß</td>
				  <td class='head'>Dauer</td>
				  <td class='head'>Blutdruck vorher</td>
				  <td class='head'>Blutdruck nachher</td>
				  <td class='head'>Blutdruck (instabil)</td>
				  <td class='head'>Gewicht vorher</td>
				  <td class='head'>Gewicht nachher</td>
				</tr>";

while ($daten = mysql_fetch_array($res)) {

        echo "<tr>
		        <td class='norm'>".$daten['datum']."</td>
		        <td class='norm'>".$daten['number']."</td>
				<td class='norm'>".$daten['bf']."</td>
				<td class='norm'>".$daten['dia_zeit']."</td>
				<td class='norm'>".$daten['rr_sys_vor']."</td>
				<td class='norm'>".$daten['rr_sys_nach']."</td>
				<td class='norm'>".$daten['rr_instabil']."</td>
				<td class='norm'>".$daten['gewicht_vor']."</td>
				<td class='norm'>".$daten['gewicht_nach']."</td>
			  </tr>";
    }

echo '</table>
     </td>
	</tr>
   </table>
  </table>
 </td>
</tr>';
mysql_free_result($res);

?>

Ich muss dazu sagen, ich bin noch in der Lernphase. Also seit gnädig mit mir :D
Das Script wird im Intranet des Betriebs laufen und von außen nicht zugänglich sein. Falls irgend welche Bedenken wegen Sicherheitsrisiken auftauchen ;)

Für eventuelle Hilfe bedanke ich mich schonmal im voraus, und ich hoffe das hier ist nicht zu verwirrend geschrieben. ;)

Mit freundlichen Grüßen
R3DD3VIL
 
Tabelle 1
id (auto_increment)
pid (wird manuell zugewiesen)
name
vorname
geb_dat
[....]

Tabelle 2
id (auto_increment)
pid (ist gleich wie in Tabelle 1)
datum
dia-zeit

Dazu brauchst du nur im Sql befehl in der Where klausel die verbindung der Tabellen angeben .

PHP:
$Slq="SELECT * FROM Tabelle1,Tabelle2 WHERE Tabelle1.pid=Tabelle2.pid and Tabelle1.id='1' ";

Mfg Splasch
 
Hallöchen,

erstmal danke für deine schnelle Antwort.

PHP:
$Slq="SELECT * FROM Tabelle1,Tabelle2 WHERE Tabelle1.pid=Tabelle2.pid and Tabelle1.id='1' ";

Hab das nun so eintragen und die Tabellennamen anpasst. Es funktinoiert auch soweit, nur hab ich ja nun bei jedem Patienten den ich aufrufe, z.B. Patient mit der PID 3 die Werte von dem Patienten mit der PID 1.

Und genau dass ist nicht der Sinn und Zweck. Sondern ich möchte gern vom Patienten mit der PID 3 auch die Werte mit der PID 3 haben, und nicht die mit der PID 1 ;)
Müsste hier nun nicht noch eine Abfrage rein ob die PID der Werte auch mit der PID des Patienten übereinstimmt ?

Ich weiss wie gesagt nur nicht wie sowas aussehen soll, weil es ja über 2 Tabellen verteilt ist.

Mit freundlichen Grüßen
R3DD3VIL :confused:
 
Manchmal ist es so einfach und doch so fern.
Mir ist es gerade wie ein Blitz in den Kopf geschossen und somit auch Problem gelöst. Mir hat einfach der Ansatz gefällt. Dafür dickes dickes Danke schön an splasch

Hier jetzt der Code den ich einfügen muss in $sql damit dies es einwandfrei funktioniert nun.
PHP:
$sql = "SELECT * FROM Pat_ListePatienten,Pat_Dialysen WHERE Pat_ListePatienten.pid=Pat_Dialysen.pid and Pat_ListePatienten.id=\"{$_GET["id"]}\"";

Nochmals Danke!! ;)

Mit freundlichen Grüßen
R3DD3VIL :-)
 
Du hast das nun richtig erkannt wenn du über mehren Tabellen abfrangen machst dann mußt du auch immer die Verbindungen zwischen den 2 tabellen angeben in deinen Fall die n/1 beziehung.

Es wird einfach immer der Fremdschlüssel der ID zu gewiesen.
Wenn ich noch anmerken darf die pid spalte in Tabelle 1 ist unötig vom aufbau her.

Es hätte gereicht wenn deine Verbindung so auschaut Tabelle1 ID(autowert) = Tabelle2.pid
Ich hab es mir angewöhnt bei Fremdschlüsseln immer als spalten namen ein F_ davorzu stellen und dann den namen der Id zu dem der schlüssel gehört.

Mfg Splasch
 
Zuletzt bearbeitet:
Zurück