Abfrage einer 2 Datenbanktabelle nach Login

boardcash

Mitglied
Hallo

Vielleicht kann mir ja jemand Helfen bin noch Neuling.......

Ich nutze folgendes Loginscript....


Code:
<?php 
// Session starten 
session_start (); 
 
// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "login", "pw"); 
if (!mysql_select_db ("db_name", $connectionid)) 
{ 
die ("Keine Verbindung zur Datenbank"); 
} 
 
$sql = "SELECT ". 
	"Id, Nickname, Nachname, Vorname ". 
"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 
$_SESSION["user_id"] = $data["Id"]; 
$_SESSION["user_nickname"] = $data["Nickname"]; 
$_SESSION["user_nachname"] = $data["Nachname"]; 
$_SESSION["user_vorname"] = $data["Vorname"]; 
 
header ("Location: intern.php"); 
} 
else 
{ 
header ("Location: formular.php?fehler=1"); 
} 
?>

was muss ich hinzufügen um daten aus einer weiteren Tabelle daten auszulesen
aber nur diese daten die der user selber dort per formular eingegeben hat

könnte mir vorstellen das auch im eingabe formular ich noch was angeben muss

Vielen Dank im voraus
 
Zuletzt bearbeitet:
Hmm, vielleicht solltest du deine Logindaten nicht unbedingt öffentlich bereitstellen. Auch die Netiquette könnte unter Punkt 12 ganz interessant für dich sein.
Ansonsten mußt du nur eine weitere Datenbankabfrage machen. Wie sieht denn die zweite Tabelle aus?
 
Danke für die schnelle Antwort..........

So sieht die 2te Tabelle aus.

Code:
 CREATE TABLE k_persondaten (
id tinyint(3) DEFAULT '0' NOT NULL AUTO_INCREMENT,
firma varchar(100),
str varchar (150),
plz mediumint(5),
ort varchar(50),
website varchar (300),
kontoinhaber varchar (100),
bank varchar (100),
kontonummer varchar (20),
blz varchar (20),
primary key(id)
);

Vielen Dank nochmal
Boardcash
 
Wenn ich dich richtig verstehe geht das ganze mit einem WHERE eintrag = '$variable' anhang an deine Datenbankabfrage...
Schau dir einfach mal Mysql-Afrage-Syntax an...
 
...... habe das mal etwas genauer geschrieben.

Ich habe folgendes Problem:

Ich benutze folgendes Loginscript:
http://www.tutorials.de/forum/showthread.php?t=9684

Nach dem Login bekommt der User die Möglichkeit per Formular in eine weitere Datenbanktabelle unbegrenzt Datensätze einzutragen.

Soviel habe ich schon rausbekommen: die UserID muss in die 2te Tabellen mit eingetragen werden.

Und da liegt das Problem?
So sieht die 2te db-tabelle derzeit aus (alles fantasiewerte):
Ich denke mal irgendwie noch falsch

Code:
CREATE TABLE k_persondaten (
id tinyint(3) DEFAULT '0' NOT NULL AUTO_INCREMENT,
geboren varchar(50),
str varchar (150),
primary key(id)
);

Das ist das Formular mit dem die Datenbankeinträge gemacht werden sollen wenn ich alles richtig verstanden habe muss hier was geändert werden das die eindeutige UserID aus der 1 Tabelle übergeben und in die 2te eingetragen werden.
0 Ahnung wie

Das Formular zum eintragen

Code:
<?php 
include ("checkuser.php"); 
?> 
<html>
<body>
<?
if (isset($_POST['submit'])) {
$db = mysql_connect("localhost", "xxxxxxx", "xxxxx");
mysql_select_db("xxxxxxxxxxx",$db);
$str = $_POST["str"];
$geboren = $_POST["geboren"];
$result = mysql_query($sql,$db);
$sql = "INSERT INTO persondaten (str,geboren) VALUES ('$str','$website')";
echo "wurde eingetragen";
}
else {
?>
<form method="post" action="<? echo $PHP_SELF ?>">
geboren<input type="text" name="geboren" value="<? echo $geboren ?>" size="26">
<p>Strasse<input type="text" name="str" value="<? echo $str ?>" size="26"></p>
<p><input class="formbutton" type="submit" name="submit" value="DATEN&nbsp;SENDEN"></p>
</form>
<?
}
?>
</body>
</html>


Das ist das Formular wo die Daten die der User eingeben hat angezeigt bekommt.

Code:
<?php 
include ("checkuser.php"); 
?>
<html>
<body>
<div align="center">
<h1>Kundendadenbank bearbeiten</h1>
<?
//Verbindung herstellen
$db = mysql_connect("localhost","******", "******");
mysql_select_db("usr_web6_5",$db);
//Daten l&ouml;schen
if($clear) mysql_query("DELETE FROM k_persondaten WHERE id=$clear",$db);
// Daten &auml;ndern
if ($edit) {
if ($submit) {
$sql = "UPDATE k_persondaten SET str='$str', geboren='$geboren' WHERE id=$edit";
$result = mysql_query($sql,$db);
echo "Daten f&uuml;r die ID ".$edit." wurden ge&auml;ndert";
}
else {
$sql = "SELECT * FROM k_persondaten WHERE id=$edit";
$result = mysql_query($sql,$db); 
$data = mysql_fetch_array($result);
?>
<form method="post" action="<? echo $PHP_SELF ?>">
<input type=hidden name="edit" value="<? echo $data["id"] ?>">
<table border="0" align="center">
	 <tr><td>Geboren</td><td>
<input type="text" name="geboren" value='<? echo $data["geboren"] ?>' size="50">
</td></tr>
	 <tr><td>Strasse Nr.</td><td>
<input type="text" name="str" value="<? echo $data["str"] ?>" size="40">
</td></tr>
	 <tr><td>&nbsp;</td><td>
<input type="submit" name="submit" value="&Auml;ndern">
</td></tr>
	</table>
</form>
<?
}
}
//Daten auslesen
$result = mysql_query("SELECT * FROM k_persondaten",$db);
?>
<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr>
	 <td><b>ID</b></td>
	 <td><b>geboren</b></td>
	 <td><b>PLZ</b></td>
	 <td>&nbsp;</td>
	 <td>&nbsp;</td>
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
	 <td><? echo $daten[id]; ?></td>
	 <td><? echo $daten[geboren]; ?></td>
	 <td><? echo $daten[plz]; ?></td>
	 <td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[id].'' ?>">l&ouml;schen</a></td>
	 <td><a href="<? echo ''.$PHP_SELF.'?edit='.$daten[id].'' ?>">bearbeiten</a></td>
</tr>
<? } ?>
</table>
</div>
</body>
</html>


Über eure Hilfe würde ich mich freuen
 
Moinsen,

ich glaube ich hab dein Problem erkannt. Hoffe ich zumindest. Also du möchtest alle Daten über EINEN User haben, die aber über zwei oder mehr Tabellen verteilt sind....OK...

Zu den Tabellen und der Datenbank

Also die Tabellen haben beide ein sogenanntes Eindeutigkeitsfeld. Über dieses Feld kann dieser eine Datensatz in beiden Tabellen EINDEUTIG Identifieziert werden. Wichtig ist auch, das der in den beiden Tabellen FÜR diesen einen Datensatz AUCH gleich ist. Sowas wird auch Foreign Key genannt.

Aufbau der Tabellen z.B.
Tabelle A:

User_ID int(32) PRIMARY KEY NOT NULL
User_Nick varchar(50) NOT NULL
User_PW varchar(30) NOT NULL

Tabelle B:

User_ID int(32) PRIMARY KEY NOT NULL
User_Vorname
User_Nachname
User_PLZ
User_Ort
[.....]

So.... das sind mal die Tabellen...... jetzt fehlt also noch die Abfrage.


SQL STATEMENT:

select A.User_ID, A.User_Nick, A.User_PW, B.User_Vorname, B.User_Nachname
from A, B
where A.User_PW == '$PHP_PW'
and A.User_Nick == '$PHP_Nick"
and A.User_ID == B.User_ID


Jo .... jetzt ist alles da ..... das sollte . Noch zum Verständnis mal das wichtigste.

1) In beiden Tabellen muß das gleiche Eindeutigkeitsfeld vorhanden sein.
2) Im SQL Statement müssen beide Tabellen angesproochen werden. Der Name der Tabelle ist dabei nur wichtig wenn die Feldnamen gleich sind.
3) DER WICHTIGSTE TEIL and A.User_ID == B.User_ID .... ist der nicht drin wird automatisch jeder Datensatz aus beiden Tabellen miteinander verbunden. Da gibet auch ein Begriff für... ist mir aber gerade entfallen :-)

Ein kleiner Tip noch Wenn du sowas wie PW und ähnlichem Vergleichst......benutze immer '==' und nicht 'like' . Bei like können auch andere Werte gültig sein als das eigentliche Passwort.... like == sowie, ähnlich ;) == -> genauso wie, 100% gleich

Hoffe hab richtig gelegen mit deinem prob

gruß
Tark
 
Oh Danke ich lese seit 3 tagen Foren durch aber so wirklich habe ich das nicht kapiert

Aber das war jetzt super erklärt. So müsste es funktionieren,
 
Verstanden habe ich das System bzw. wie das geht schon
aber irgendwie weis ich nicht richtig wie ich das einbauchen soll

Kann mir das nicht mal jemand einbauen

bitte........................
 
Habe mich etwas durchgelesen und folgendes zusammen gebastelt, aber ich erhalte immernoch eine fehlermeldung ich kann keinen aus der hilfe die ich genutzt habe finden.

Code:
<?
mysql_connect("localhost","xxxxxxxxxxx","xxxxxxxxxx")or die
("Keine Verbindung moeglich");
mysql_select_db("usr_web6_5")or die
("Die Datenbank existiert nicht");
$abfrage = "SELECT A.User_ID, A.User_Nick, A.User_PW, B.User_Vorname, 
B.User_Nachname FROM A, B WHERE A.User_PW == '$PHP_PW'
and A.User_Nick == '$PHP_Nick'
and A.User_ID == B.User_ID";
$ergebnis = mysql_query($abfrage);
?>
<table width="147" border="1" cellspacing="2" cellpadding="0">
<?
while ($row = mysql_fetch_object($ergebnis));
{
?>
<tr>
	<td>test1</td>
<td></td>
</tr>
<tr>
	<td><?echo $row->PHP_Nick; ?></td>
<td></td>
</tr>
<tr>
	<td></td>
<td></td>
</tr>
</table>
<?
}
?>

folgende Fehlermeldung...

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web6/html/test.php on line 14


das ist die Zeile der Fehlermeldung:

Code:
<?
while ($row = mysql_fetch_object($ergebnis));
{
?>

Bitte weiterhelfen
 
Probier doch mal
PHP:
while ($row=mysql_fetch_row($ergebnis))
    {
        ...
    }

Falls auch das nicht hilft wird der Fehler wohl in Deiner Abfrage liegen, sodass nichts brauchbares in $ergebnis steht.

Nachtrag: Ich glaub zwar nicht, dass das der Fehler ist, aber das ; nach Deinem
PHP:
while ($row=mysql_fetch_object($ergebnis))
ist ueberfluessig.
 
Zuletzt bearbeitet:
Zurück