Join mit zwei Datenbanken

Deadfish

Mitglied
Hallo erstmal hab mal durchs Forum gekukt und gesehen das es schon solche eintrege gibt nur egend wie sind die nicht ganz kompatibel mit meinen php code und wolte Fragen ob ihr mit helfen könnt :D

mein code :


PHP:
<?php  
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen  
$connectionid = mysql_connect ("localhost", "xxxxx", "xxxxxx");  
if (!mysql_select_db ("game", $connectionid))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  


mysql_query("SELECT * FROM benutzerdaten AS t1 LEFT JOIN charakter AS t2 ON t1Id = t2.Id WHERE t1.ID = 'blablabla'"); 

$sql = "SELECT ".  
    "*".  
  "FROM ".  
    "benutzerdaten ".
	
  "WHERE ".  
    "(Nickname like '".$_REQUEST["name"]."') AND ".  
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
	;  
	
$result = mysql_query ($sql);  

if (mysql_num_rows ($result) > 0)  
{  
  // Benutzerdaten in ein Array auslesen.  
  $data = mysql_fetch_array ($result);  

  // Sessionvariablen erstellen und registrieren 
  // benutzerdaten db 
  $_SESSION["user_id"] = $data["Id"];  
  $_SESSION["user_nickname"] = $data["Nickname"];  
  $_SESSION["user_nachname"] = $data["Nachname"];  
  $_SESSION["user_vorname"] = $data["Vorname"];  
  $_SESSION["user_level"] = $data["level"]; 
  $_SESSION["user_leben"] = $data["leben"]; 
  $_SESSION["user_arbeit"] = $data["arbeitzeit"];
  $_SESSION["user_geld"] = $data["geld"]; 
  $_SESSION["user_geld"] = $data["geld"]; 
  
  // charakter db
  
  $_SESSION["char_staerke"] = $data["staerke"]; 
  

  header ("Location: 1/intern.php");  
}  
else  
{  
  header ("Location: formular.php?fehler=1");  
}  
?>


in der benutzerdaten db sind
Id Nickname Kennwort Nachname Vorname level leben arbeitzeit geld

und in der charakter db sind
Id staerke geschik ausdauer

der sin der doppelt abfrage ist bei mir so das der benutzer mit Id "1" halt die staerke "1" und so hat ( da ich das später so mache das er sie für geld ausbauhen kann )
 
Könntest du deinen Beitrag bitte noch ein mal durchlesen? Also, nur für mich gesprochen: Ich hab die essentiellen Dinge nicht verstanden. Da du die Netiquette (Punkt 15) nicht gelesen bzw. eingehalten hast, braucht es dich nicht zu wundern, dass dir keiner antworten kann oder will. Ich weiß noch nicht einmal, wonach ich in dem Code suchen soll... Ich sehe, du hast einen JOIN, der mit einem vermutlich falschen ON arbeitet:

SQL:
SELECT * FROM benutzerdaten AS t1 LEFT JOIN charakter AS t2 ON t1.Id = t2.Id WHERE t1.ID = 'blablabla';

Der Fehler ist vermutlich bei dem t1Id, was wahrscheinlich t1.Id heißen soll :confused:
 
also ich weis auch nicht ganz genau ob der join an der stelle hin muss hab es zwar versucht den da einzuarbeiten aber er geht nciht ganz hab auch
PHP:
mysql_query("SELECT * FROM benutzerdaten AS t1 LEFT JOIN charakter AS t2 ON t1.Id = t2.Id WHERE t1.Id = 'blablabla'");
t1.Id gemacht will auch nicht ganz funktionieren
und ich weis grade nciht mehr ganz weiter warum es nicht geht
 
Dann schreib hinter das mysql_query() doch mal eine Fehlerbehandlung rein:

PHP:
mysql_query("SELECT * FROM benutzerdaten AS t1 LEFT JOIN charakter AS t2 ON t1.Id = t2.Id WHERE t1.Id = 'blablabla'") or die(mysql_error());

Ansonsten bitte mal ein Struktur-Export in phpMyAdmin für die Tabellen benutzerdaten und charakter und hier posten.
 
Hir einmal die Sql der beiden db´s

SQL:
--
-- Tabellenstruktur für Tabelle `benutzerdaten`
--

CREATE TABLE IF NOT EXISTS `benutzerdaten` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Nickname` varchar(50) NOT NULL DEFAULT '',
  `Kennwort` varchar(50) NOT NULL DEFAULT '',
  `Nachname` varchar(50) NOT NULL DEFAULT '',
  `Vorname` varchar(50) NOT NULL DEFAULT '',
  `level` varchar(20) NOT NULL DEFAULT '1',
  `leben` varchar(20) NOT NULL DEFAULT '100',
  `arbeitzeit` time DEFAULT NULL,
  `geld` varchar(20) NOT NULL DEFAULT '50',
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Daten für Tabelle `benutzerdaten`
--

INSERT INTO `benutzerdaten` (`Id`, `Nickname`, `Kennwort`, `Nachname`, `Vorname`, `level`, `leben`, `arbeitzeit`, `geld`) VALUES
(1, 'test', '098f6bcd4621d373cade4e832627b4f6', 'Andre', 'K', '1', '100', '00:05:00', '50');

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `charakter`
--

CREATE TABLE IF NOT EXISTS `charakter` (
  `Id` int(11) NOT NULL,
  `staerke` varchar(20) NOT NULL DEFAULT '1',
  `geschik` varchar(20) NOT NULL DEFAULT '1',
  `ausdauer` varchar(20) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `charakter`
--

INSERT INTO `charakter` (`Id`, `staerke`, `geschik`, `ausdauer`) VALUES
(1, '1', '1', '1');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
Zuletzt bearbeitet von einem Moderator:
will auch nicht ganz funktionieren und ich weis grade nciht mehr ganz weiter warum es nicht geht

So, nun habe ich alle essentiellen Informationen, bis auf die eigentliche Frage. Was funktioniert denn genau nicht, wie erwartet? Der JOIN passt soweit.

Wenn ich den Query (in phpmyadmin) ausführe:
SQL:
SELECT *
FROM benutzerdaten AS t1
LEFT JOIN charakter AS t2 ON t1.Id = t2.Id
WHERE t1.Id = '1'
LIMIT 0 , 30

Bekomme ich dieses Ergebnis:

Code:
Id 	Nickname 	Kennwort 	Nachname 	Vorname 	level 	leben 	arbeitzeit 	geld 	Id 	staerke 	geschik 	ausdauer
1 	test 	098f6bcd4621d373cade4e832627b4f6 	Andre 	K 	1 	100 	00:05:00 	50 	1 	1 	1 	1
Das sieht nach meinem Dafürhalten erstmal i.O. aus. Was genau passiert bei dir (unerwarteter Weise) [nicht]?

Edit2:
Ich sehe grade, das du, nachdem du den JOIN-Select ausgeführt hast, noch einen SQL-Query sendest. Warum eigentlich?
 
Zuletzt bearbeitet:
Naja, da kann ich immer noch nix fehlerhaftes feststellen. Außer das bei Planeteninfos nichts dynamisches steht. Ebenso XP ist nicht dynamisch. Wo soll ich da einen Fehler sehen können? Charakter hat Level 1; Die Userdaten stimmen mit den überein, die du vorher im Export gepostet hast. Wo ist der Fehler denn?
 
Nabend,
ich verstehe auch noch nicht 100%ig wo das Problem liegt..
Allerdings glaube ich du suchst am falschen Ende. Wie der saftmeister schon schreibt funktioniert dein Query eigentlich.
Wahrscheinlich hast du ein Problem mit der Anzeige des Wertes, besser gesagt mit PHP und nicht mit SQL.
Schau dir lieber nochmal den PHP-Code an der den Wert in die Ausgabe schreibt.


Bitte halte dich an die hier praktizierte Netiquette. Dies betrifft vor allem eine verständliche Ausdrucksweise sowie eine vernünftige Groß- und Kleinschreibung. Danke.
Vor allem Satzzeichen würden deine letzte Aussage verständlicher machen! ;)
 

Neue Beiträge

Zurück