PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql 2 datenbanken


Uwe-josef
28.02.2011, 20:21:50
aslo folgendes problem.
Ich habe eine externe datenbank aus der ich nur auslesen kann, wo auch die spalte user_name vorhanden wie bei meiner eigenen datenbank.
da ich aber in der externen datenbank keine weiterer spalten erstellen kann frage ich mich wie ich die beiden db´s verbinden kann, so das ich auf weitere spalten aus den tabellen meiner datenbank zugreifen kann und auch anzeigen lassen kann userfelder die in meiner eigenen datenbank sind, zugreifen kann und auch ausgeben kann zb die spalte user_freitext.
Hier noch einmal die Fakten im kurzem
db1 tabelle1 und db2 tabelle2 haben beide sie Spalte user_name
dann würde ich gern aus db1 tabelle13 spalte user_freitext einbinden
Wer kann mir da Hilfe anbieten ??
wie kann ich db1 mit db2 verbinden ?
wie mach ich den abruf auf db 1
Script bisher

<?php
//// include bringt ($server, $user, $pass) für die db2 /////
include ('pkinc/cfg/connectline.php');
$db_verbindung = mysql_connect($server, $user, $pass);
if ($db_verbindung) {
$res = mysql_db_query("voss_17245", "select * from voss_17245");
$num = mysql_num_rows($res);
} else {
echo "Verbindung fehlgeschlagen!";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Language" content="de">
<title>mitarbeiter</title>
<style type="text/css">
.Table {
border: 4px outset #FF0000;
}
.Table_in {
font-size: 12;
}
</style>
</head>
<body>
<div align="center">
<table width="100%" style="border: 6px outset #0000FF; " background="images/sterne.jpg">

<tr>
<td class="Table_in" align="center" style="border: 3px groove #0000FF; " bordercolor="#FF0000" colspan="4">
<h2>Unsere Berater</h2>
</td>
</tr>
<?php
while ($feld = mysql_fetch_array($res)) {
?>
<tr>
<td class="Table_in" align="center" height="20" width="97%" colspan="4">
&nbsp;</td>
</tr>
<tr>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="100" width="12%" rowspan="2"><img src="<?php echo htmlspecialchars($feld['name']); ?>.jpg" /><br><h2><?php echo htmlspecialchars($feld['name']); ?></h2></td>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="70" width="12%"><h3>Durchwahl</h3><br><h2><?php echo htmlspecialchars($feld['durchwahl']); ?></h2></td>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="100" width="25%" rowspan="2">letzte Anmeldung<?php echo htmlspecialchars($feld['letzte_anmeldung']); ?><br>letzte Abmeldung<?php echo htmlspecialchars($feld['letzte_abmeldung']); ?></td>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="100" width="46%" rowspan="2">
<b>Beratertext</b></td
</tr>
<tr>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="23" width="12%">Status<br><img src="images/<?php echo htmlspecialchars($feld['telefon_status']); ?>.gif" /></td>
</tr>
<tr>
<td class="Table_in" align="center" height="20" width="97%" colspan="4">
&nbsp;</td>
</tr>
<tr>
<td class="Table_in" height="40" align="center" width="97%" colspan="4">
<img border="0" src="images/yinyang.gif" height="98" width="75"</td>
</tr>
<?php
}
?>
</table>
</div>
</body>

</html>

thomas_w
01.03.2011, 11:14:15
Also entweder machst Du zwei Datenbankverbindungen zu DB1 und DB2 auf, holst die Daten aus den jeweiligen Tabellen und machst im PHP-Skript einen "manuellen JOIN" mit den Ergebnissen.

Alternativ könntest Du Dir noch die ENGINE FEDERATED anschauen:
http://dev.mysql.com/doc/refman/5.1/de/federated-storage-engine.html

Habe ich selber noch nicht probiert, könnte aber auch eine Lösung sein.

Grüße
Thomas

Uwe-josef
01.03.2011, 13:44:19
Hallo thomas join dürfte nicht funktionieren soviel ich weiß
die datenbanken müssen verknüpft werden ! aber wie bekomme ich das hin ??????
versuche ich beide Db zu öffnen bekomme ich folgenden fehler

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /homepages/8/d137877469/htdocs/sternenbotschaft/pkinc/public/test.php on line 18

<?php
if(!defined('pkFRONTEND') || pkFRONTEND!='public')
die('Direct access to this location is not permitted.');
///#####include db1
include ('pkinc/cfg/connectlinedb1.php');
$db_verbindung = mysql_connect($server, $user, $pass);
if ($db_verbindung) {
$res = mysql_db_query("voss_17245", "select * from voss_17245");
$num = mysql_num_rows($res);
} else {
echo "Verbindung fehlgeschlagen!";
}
//#####include db2
include ('pkinc/cfg/connectlinedb1.php');
$db1_verbindung = mysql_connect($server, $user, $pass);
if ($db1_verbindung) {
$res1 = mysql_db_query("db35858096", "select * pk__user");
$num1 = mysql_num_rows($res1);
} else {
echo "Verbindung fehlgeschlagen!";
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Language" content="de">
<title>mitarbeiter</title>
<style type="text/css">
.Table {
border: 4px outset #FF0000;
}
.Table_in {
font-size: 12;
}
</style>
</head>
<body>
<div align="center">
<table width="100%" style="border: 6px outset #0000FF; " background="images/berater/sterne.jpg">

<tr>
<td class="Table_in" align="center" style="border: 3px groove #0000FF; " bordercolor="#FF0000" colspan="4">
<h2>Unsere Berater</h2>
</td>
</tr>
<?php
while ($feld = mysql_fetch_array($res)) {
?>
<tr>
<td class="Table_in" align="center" height="20" width="97%" colspan="4">
&nbsp;</td>
</tr>
<tr>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="100" width="12%" rowspan="2"><img src="images/berater/<?php echo htmlspecialchars($feld['name']); ?>.jpg" /><br><h2><?php echo htmlspecialchars($feld['name']); ?></h2></td>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="70" width="12%"><h3>Durchwahl</h3><br><h2><?php echo htmlspecialchars($feld['durchwahl']); ?></h2></td>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="100" width="25%" rowspan="2">letzte Anmeldung<?php echo htmlspecialchars($feld['letzte_anmeldung']); ?><br>letzte Abmeldung<?php echo htmlspecialchars($feld['letzte_abmeldung']); ?></td>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="100" width="46%" rowspan="2">
<b>Beratertext</b></td
</tr>
<tr>
<td class="Table_in" align="center" style="border: 3px outset #0000FF; " height="23" width="12%">Status<br><img src="images/berater/<?php echo htmlspecialchars($feld['telefon_status']); ?>.gif" /></td>
</tr>
<tr>
<td class="Table_in" align="center" height="20" width="97%" colspan="4">
&nbsp;</td>
</tr>
<tr>
<td class="Table_in" height="40" align="center" width="97%" colspan="4">
<img border="0" src="images/berater/yinyang.gif" height="98" width="75"</td>
</tr>
<?php
}
?>
</table>
</div>
</body>

</html>

hast du vielleicht eine Ahnung warum der fehler kommt und wie ich aus der tabelle pk__user die spalte user_name aufrufe ?





Also entweder machst Du zwei Datenbankverbindungen zu DB1 und DB2 auf, holst die Daten aus den jeweiligen Tabellen und machst im PHP-Skript einen "manuellen JOIN" mit den Ergebnissen.

Alternativ könntest Du Dir noch die ENGINE FEDERATED anschauen:
http://dev.mysql.com/doc/refman/5.1/de/federated-storage-engine.html

Habe ich selber noch nicht probiert, könnte aber auch eine Lösung sein.

Grüße
Thomas

thomas_w
01.03.2011, 17:22:10
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /homepages/8/d137877469/htdocs/sternenbotschaft/pkinc/public/test.php on line 18


ein erster Vorschlag dazu...


$db_verbindung1 = mysql_connect($server, $user, $pass);
if ($db_verbindung1) {
$res1 = mysql_db_query("voss_17245", "select * from voss_17245",$db_verbindung1);
if (!$res1) {
echo "DB Error, could not query the database\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
...


a) wenn Du mit mehreren Datenbankverbindungen arbeitest, must Du auch mit mehreren Variablen arbeiten, sonst werden diese überschrieben (siehe $db_verbindung1, $res1)
b) wenn Du mit mehreren Datenbankverbindungen arbeitest, must Du der Funktion mysql_db_query() mitteilen, mit welcher Verbindung es arbeiten soll (siehe $db_verbindung1)
c) den Rückgabewert $res1 nicht einfach verwenden, sondern vorher prüfen, ob er auch gültig ist und eine Fehlermeldung ausgeben

Soweit mal fürs erste...

Grüße
Thomas