1 Verbindung 1 Datenbank 2 Tabellen ansprechen

DjRay

Mitglied
Hey hey,

möchte wie oben beschrieben eine 2. Tabelle ansprechen nur mein Problem ist wie mache ich das am besten?

Mein Code:
Code:
Code:
<?php
    $host="xxxx";
    $username="xxxxx";
    $password="xxxxx";
    $db_name="xxxxxx";
    $tbl_name="forum_frage";
   
    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    $sql="SELECT * FROM $tbl_name ORDER BY id DESC";
    // OREDER BY id DESC is order result by descending
    $result=mysql_query($sql);   
    ?>


Möchte aber noch eine 2 tabelle namens forum_antwort mit ansprechen damit ich von hier:
Code:
Code:
<?php
    while($rows=mysql_fetch_array($result)){ // Start looping table row
    ?>
  <tr class="Threads">
    <td ><? echo $rows['id']; ?></td>
    <td ><a href="/scripte/forum/view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><br></td>
    <td align="center" ><? echo $rows['name']; ?></td>
  <td align="center" ><? echo $rows['view']; ?></td>
    <td align="center" ><? echo $rows['reply']; ?></td>
    <td align="center" ><? echo $rows['datetime']; ?></td>
      </tr>
  <?php
    // Exit looping and close connection
    }
    mysql_close();
    ?>


Noch Daten ausgeben lassen kann von der 2. Tabelle
Da ich noch Anfänger bin, bin ich da noch nicht ganz
durchgestiegen und bitte um entschuldigung.
Danke im vorraus
DjRay

PS: möchte mit:
<td align="center" ><? echo $rows['a_antwort']; ?></td> nur die letzte antwort haben also nich alle
Geht das irgendwie ? weil wenn ich es mit join mache und dann
Code:
$sql="SELECT * FROM $tbl_name, $tbl_name2  ORDER BY id DESC";

Gibt er mir alles aus der Tabelle an :-(

PS2: Bitte beachte ich bin Anfänger
 
Also nur einen Datensatz (den letzten) selektierst du mit Limit(1) und dann halt wenn das Feld ID automatisch(auto increment) gefüllt wird nach der ID und ansonsten erstellst du ein neues Feld wo du das created_at Datum speicherst. Wenn du 2 Tabellen ansprechen willst, brauchst du simpel gesagt verknüpfte Daten. Wie du schon sagtest sind Joins da das Stichwort.
 
Danke mal php.de half mir da nicht so hehe wie ihr danke.

Aber eine Frage noch:
Wenn ich es so mache warum gibt er mir dann gar nichts mehr aus ?
Bin Anfänger steig da noch nich ganz so durch :-(

Code:
<?php
		$host="xxxxxx"; 
		$username="xxxxxxxxxxx";
		$password="xxxxxxxx"; 
		$db_name="xxxxxxx"; 
		$tbl1="forum_question";
		$tbl2="forum_answer";
		
		
		// Connect to server and select databse.
		mysql_connect("$host", "$username", "$password")or die("cannot connect");
		mysql_select_db("$db_name")or die("cannot select DB");

		$sql="SELECT * FROM $tbl1 JOIN $tbl2 ON $tbl1.id = $tbl2.id WHERE id";
		
		// OREDER BY id DESC is order result by descending
		$result=mysql_query($sql);		
		?>

Lg Ray
 
PHP:
<?php
		$host="xxxxxx"; 
		$username="xxxxxxxxxxx";
		$password="xxxxxxxx"; 
		$db_name="xxxxxxx"; 
		$tbl1="forum_question";
		$tbl2="forum_answer";
		
		
		// Connect to server and select databse.
		mysql_connect("$host", "$username", "$password")or die("cannot connect");
		mysql_select_db("$db_name")or die("cannot select DB");

		$sql="SELECT * FROM $tbl1 JOIN $tbl2 ON $tbl1.id = $tbl2.id WHERE id";
		
		// OREDER BY id DESC is order result by descending
		$result=mysql_query($sql);		

  while($row = mysql_fetch_object($result))
  {
    echo $row->id;
echo $row->blabla;
  }


		?>

Bitte :)

Du musst den Query ausfüren ( mysql_query )und anschließend ausgeben via WhileSchleife :)

mfg

bo
 
Der Fehler liegt in deiner SQL abfrage:
PHP:
		$sql="SELECT * FROM $tbl1 JOIN $tbl2 ON $tbl1.id = $tbl2.id WHERE id";

Es fehlt noch ein Kriterium also zum beispiel nur die ID 15 dann müsste das ganze
PHP:
$searchCriteria = 15		
$sql="SELECT * FROM $tbl1 JOIN $tbl2 ON $tbl1.id = $tbl2.id WHERE id = $searchCriteria";
 
Du müsstest außerdem klarstellen, welche id es sein soll, also z.B.:
SQL:
$sql="SELECT * FROM $tbl1 JOIN $tbl2 ON $tbl1.id = $tbl2.id WHERE $tbl2.id = $searchCriteria";

Allerdings würde das z.B. die erste jemals gestellte Frage mit der ersten jemals gegebenen Antwort (auch wenn diese gar nicht zu der Frage gegeben wurde) verbinden.

Du müsstest in der Tabelle der Antworten eine Spalte (z.B. Frage_ID) als Fremdschlüssel, d.h. mit der id der dazugehörigen Frage haben.
Da dann alle Antworten auf diese Frage den gleichen Wert für z.B. Frage_ID besäßen, könntest Du die JOIN-Query in etwa so formulieren:
SQL:
$sql="SELECT * FROM $tbl_antwort JOIN $tbl_frage ON $tbl_antwort.Frage_ID = $tbl_frage.id ORDER BY $tbl_antwort.id DESC LIMIT 1";
 
Zuletzt bearbeitet von einem Moderator:
Also so viel Infos und ich raffe es trotzdem nicht tut mir echt voll leid :-(!
Hier nochmal wie ich es machte:

Code:
<?php
		$host="xxxxx"; 
		$username="xxxxxx";
		$password="xxxxxxxx"; 
		$db_name="xxxxxxxx"; 
		$tbl1="forum_question";
		$tbl2="forum_answer";
		
		
		
		// Connect to server and select databse.
		mysql_connect("$host", "$username", "$password")or die("cannot connect");
		mysql_select_db("$db_name")or die("cannot select DB");
		
		$sql="SELECT * FROM $tbl2 JOIN $tbl1 ON $tbl2.question_id = $tbl1.id ORDER BY $tbl1.id DESC LIMIT 1";
		
		$result=mysql_query($sql);
		
		?>

Code:
<?
  while($rows=mysql_fetch_array($result)){
	  ?>
  <tr class="Threads">
    <td ><? echo $rows['id']; ?></td>
    <td ><a href="/scripte/forum/view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><br></td>
    <td align="center" ><? echo $rows['name']; ?></td>
	<td align="center" ><? echo $rows['view']; ?></td>
    <td align="center" ><? echo $rows['reply']; ?></td>
    <td align="center" ><? echo $rows['a_name']; ?></td>
      </tr>
  <?php
		// Exit looping and close connection
 }
		mysql_close();
		?>

Ich möchte das die Zeile td a_name erkannt wird :-(
und mein Script a_name abfragt und erkennt und der letzte eintrag der gemacht wurde immer a_name erkennt
und dann mir ausliesst ahja das war der letzte thread a_name hat ihn geschrieben.

Hier noch meine 2 tabellen der SQl

http://ray-production.de/forum_answer.JPG
http://ray-production.de/forum_question.JPG

Ich weiss ich nerve und ich weiss ich muss es besser lernen eher überhaupt lernen bitte nicht sauer sein.

Danke im vorraus das ihr so gute Hilfe leistet
Ray
 
Ich möchte das die Zeile td a_name erkannt wird :-(
und mein Script a_name abfragt und erkennt und der letzte eintrag der gemacht wurde immer a_name erkennt
und dann mir ausliesst ahja das war der letzte thread a_name hat ihn geschrieben.

Hier noch meine 2 tabellen der SQl

Ray

Hey,

tut mir leid, aber ich weiß nicht, was du meinst

bo
 
Hm, ich interpretiere das in Verbindung mit Deinem ersten Post als:
Du möchtest zu jeder Frage (Thread) den Namen dessen anzeigen, der zuletzt geantwortet (gepostet) hat.

Dann versuchs mal damit:
PHP:
$sql = "SELECT b.a_name, a.* FROM tbl1$ AS a ";
$sql = $sql + "INNER JOIN ";
$sql = $sql + "(SELECT * FROM tbl2$ ORDER BY a_datetime DESC) AS b ";
$sql = $sql + "ON (a.id = b.question_id) ";
$sql = $sql + "ORDER BY a.id";

(Das Mehrzeilige jetzt nur der Übersichtlichkeit halber...)
 

Neue Beiträge

Zurück