Datenbankabfrage via Variablen über mehere Tabellen hinweg.

dalion

Mitglied
Hallo!

Ich verzweifle an folgendem Problem:

Ausgangssituation:

Ich habe zwei Tabellen (mysql).

Ich möchte aus der Tabelle "fahrten" alle Informationen herauslesen lassen, in id_user identisch mit der derzeitigen id_user ist. Dann will ich im zweiten Schritt aus dem Informationspool nur einen Wert nehmen und in einer anderen Abfrage nutzen um mir dort bestimmte Werte ausgeben zu lassen.

Der erste Schritt funktioniert auch. Er sucht sich die richtige id_user. Aber danach kommt nichts.

Folgende Fehlermeldung:

SELECT * FROM fahrten WHERE id_user = '9'SELECT * FROM angebote WHERE id_angebot = ''

Ich habe das so aufgebaut:

PHP:
$sql = "SELECT * FROM fahrten WHERE id_user = '".$_SESSION['id_user']."'";
$question = db_query('db_boeker', $sql);
echo $sql;

$search = "SELECT * FROM angebote WHERE id_angebot = '".$question['id_angebot']."'";
$look = db_query('db_boeker', $search);
echo $search;

Eigentlich sollte das doch nicht so schwer sein...
 
Was gibt db_query() genau zurück? Eine Array oder eine Ressource?

btw. Du kannst auch einfach beides in eines quetschen.
SQL:
SELECT * 
FROM angebote 
WHERE 
	id_angebot IN (
		SELECT id_angebot 
		FROM fahrten 
		WHERE id_user = '{$_SESSION['id_user']}');
 
Danke für die schnelle Antwort. Der mein echo nach der query hat die bereits gepostete Meldung ausgegeben:

SELECT * FROM fahrten WHERE id_user = '9'SELECT * FROM angebote WHERE id_angebot = '' <-- hier hört es enfach auf!

Oder was meinst Du?
 
Ich glaube ich verstehe dein Frage nicht (sorry, beschäftige mich noch nicht so lange mit php/mysql).

Die query() soll in der db_boeker die Abfrage $search durchführen (im zweiten "Block" z.B.) und die gefundenen Datenbankwerte in $look eingetragen, so das ich bei Bedarf mich bei der Informationsmenge in $look bedienen kann (z.B. für echo-Funktionen).
 
Du musst aus der Ressource ein array machen. Mit mysql_fetch_assoc() zum Beispiel
PHP:
$question = mysql_fetch_assoc(db_query('db_boeker', $sql));
 
Darauf reagiert er positiv...

PHP:
$idtag =    "SELECT * FROM angebote Where id_user = '".$_SESSION['id_user']."'";
$ergebnis =  mysql_fetch_assoc(db_query('db_boeker', $idtag));
echo $idtag;
$search =   "SELECT * FROM fahrten Where id_angebot = '".$ergebnis['id_angebot']."'";
$results =  mysql_fetch_assoc(db_query('db_boeker', $search));
echo $search;
$look =    "SELECT * FROM login Where id_user = '".$results['id_user']."'";
$data =     mysql_fetch_assoc(db_query('db_boeker', $look));
echo $look;

Die echos geben nun folgendes aus:

SELECT * FROM fahrten WHERE id_user = '9'SELECT * FROM angebote WHERE id_angebot = '15'

Das ist in diesem Beispiel der korrekte "Datenweg".

Allerding bleibt der Bildschirm bei der Ausgabe (Homepage) leer.

PHP:
<?php
if ($data) {
while ($row = mysql_fetch_array($data)) {
?>
		<TR>
		  <TD SCOPE=row><?php echo $row['id_angebot'];?></TD>
		  <TD><?php echo $row['startstadt'];?></TD>
		  <TD><?php echo $row['zielstadt'];?></TD>
		  <TD><?php echo $row['datum'];?></TD>
		  <TD><a href="angebot&auml;ndern.php?id=<?php echo $row['id_angebot'];?>">Ansehen</a></TD>
		</TR>

<?php
}
}
else {
  echo "Es liegen keine Angebote von Ihnen vor.";
}
?>

Kann ich die assocs nicht mit obiger Ausgabe auslesen lassen****?
 
Sorry,

das ist der richtige Abrufcode:

PHP:
$sql = "SELECT * FROM fahrten WHERE id_user = '".$_SESSION['id_user']."'";
$question = mysql_fetch_assoc(db_query('db_boeker', $sql));
echo $sql;

$search = "SELECT * FROM angebote WHERE id_angebot = '".$question['id_angebot']."'";
$look = db_query('db_boeker', $search);
echo $search;
 
Zurück