2 Tabellenstrukturen auf einmal Auslesen

Diskutiere 2 Tabellenstrukturen auf einmal Auslesen im Web & Grafik Forum im Bereich Internet & Telekomunikation Forum; Schönen nachmittag wünsch ich euch, Ich habe ein Problem. Ich möchte eine art Umfrage script erstellen. Jetzt habe ich in meiner Datenbank zwei...
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #1
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Schönen nachmittag wünsch ich euch,

Ich habe ein Problem. Ich möchte eine art Umfrage script erstellen. Jetzt habe ich in meiner Datenbank zwei Tabellen Strukturen. Die eine Mit den Fragen und die zweite mit den Antworte bzw den klicks. Ich wollte beide Strukturen auf einmal auslesen, erst die Fragen und mit Hilfe der ID der Fragen dann die Antworten zu den Fragen. Mein Code sieht so aus.
PHP:
<?php
	error_reporting (E_ALL);//fehler im Code anzeigen
	
	include "config.php"; //verbindungsdaten holen
$verbindung = mysql_connect($db_host,$db_username,$db_password) OR die(mysql_error());//Verbindung zur
			  mysql_select_db($db_name) OR die (mysql_error());						  //mysql Datenbank aufnehmen
			  
			  	
			  	$db_abfrage = mysql_query("SELECT * FROM mv_fragen") OR die(mysql_error());//Auslesen der Tabelle
			  $gesamt = mysql_num_rows($db_abfrage); //Gesamtzahl der Datensätze
			  		echo "Es sind insgesamt $gesamt Umfragen vorhanden<br /><br />";
		while ($daten = mysql_fetch_array($db_abfrage))
			  {
			  		echo "Umfrage Nr.:".$daten['id']."<br />";
			 		echo "Die Frage lautet... ".$daten['frage']."<br /><br />";
			 $id_frage = $daten['id'];
$db_abfrage = mysql_query("SELECT * FROM mv_antwort WHERE id_frage = '$id_frage'") OR die(mysql_error());
		while ($daten = mysql_fetch_assoc($db_abfrage))
				{
				$antwort = $daten['antwort'];
				$zähler = $daten['zähler'];
				echo "--> $antwort, $zähler<br />";
				}
			 
			  }
		  	
?>
Allerdings wird jetzt nur 1 Frage dazu die Antworten ausgelesen. Kennt jemand eine Möglichkeit dieses Problem zu lösen. Ich glaube auch, so wie ich das da gemacht habe ist das nicht die optimale Lösung

Grüße Pflaume
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #2
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
um die Daten zweier Tabellen zu verbinden gibt's in mySQL verschiedene JOIN Anweisungen. Was in dem Fall richtig ist und wie es eingesetzt wird können wir Dir aber erst sagen, wenn Du mal die Struktur bzw. die Felder von mv_fragen und mv_antwort posten würdest.
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #3
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Also mv_fragen sieht so aus:
mv_fragen.JPG


und mv_antworten sieht so aus:
mv_antworten.JPG


zur erklärung:
id_frage ist die ID der frage, also dafür zuständig, die antwort dazu auszulesen
zähler sind halt die klicks die auf diese antwort getätigt wurden.
Der rest dürfte seblstklärend sein.

Pflaume
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #4
haiko

haiko

Bekanntes Mitglied
Dabei seit
09.01.2003
Beiträge
4.727
Reaktionspunkte
1
Ort
Kempten
probiers mit

select * from mv_fragen
inner join mv_antworten on mv_fragen.id = mv_antworten.id_frage
order by mv_fragen.id asc

das gibt dir eine liste aller fragen und aller zugehörigen antworten zurück. wenn du nur die antworten willst die zu einer speziellen frage-id gehören, füge noch ein "where mv_fragen.id = $id" ein.
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #5
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Jetzt macht er das, was ich nicht möchte. Er liest die erste Frage aus und paart sie mit der ersten Antwort. Anschließen liest es wieder die erste Frage aus und dazu die Zweite Antwort.

Er sollte ja aber die erste Frage und die dazugehörigen Antworten auslesen und anschließend die zweite Frage und die dazugehörigen Antworten. Usw.
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #6
haiko

haiko

Bekanntes Mitglied
Dabei seit
09.01.2003
Beiträge
4.727
Reaktionspunkte
1
Ort
Kempten
hab mir grad nochmal deinen obigen code angeguckt. seh ich das richtig, daß du $db_abfrage in der while-schleife neu belegst? bin nicht sicher, aber das könnte das problem von oben sein. änder für die 2. abfrage einfasch die bezeichnung in $db_abfrage2 oder so.
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #7
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Ja, jetzt geht es richtig. Trozdem finde ich diese Lösung nicht optimal. Habt ihr noch andere Ideen oder sogar eine Lösung mit INNER JOIN?
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #8
S

Sady

Bekanntes Mitglied
Dabei seit
11.03.2009
Beiträge
70
Reaktionspunkte
0
Ort
Aschaffenburg
Hi!

Zunächst solltest du das Feld "id_frage" als Integer, nicht als Text deklarieren. Das ist wichtig da du das als Referenzfeld nutzen möchtest und ansonsten die Performance darunter leidet. Ebenfalls sollte das Feld "zähler" als Integer definiert werden und möglichst auf Sonderzeichen oder Umlaute wie "äöü" etc. verzichtet werden. Hier ein Beispiel für die Tabellen:

Tabelle für Fragen:
Code:
CREATE TABLE `tbl_frage` (
  `id` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `frage` TEXT,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Tabelle für Antworten:
Code:
CREATE TABLE `tbl_antworten` (
  `id` int(11) NOT NULL auto_increment,
  `frage_id` int(11) default NULL,
  `antwort` text,
  `counter` int(11) unsigned default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Verknüpfen kannst du die Tabellen mit folgender Query:
Code:
SELECT DISTINCT 
  T1.frage_id,
  T0.frage,
  T1.antwort
FROM
  tbl_frage T0
  LEFT OUTER JOIN tbl_antworten T1 ON (T0.id = T1.frage_id)

Damit werden auch Fragen ausgegeben zu denen es noch keine Antworten gibt. In diesem Fall sind die Felder "frage_id" und "antwort" NULL.

Gruß
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #9
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
wenn ich aber die "id_frage" auf auto_increment setze wird die ja wie jede normale id fortlaufend automatisch eingetragen das geht ja aber nicht. Die ID die da drin steht ist nur zum zu ordnen zu welcher frage die antwort gehört. Das heißt, das kann auch sein, dass da fünfmal die 2 drin steht.
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #10
S

Sady

Bekanntes Mitglied
Dabei seit
11.03.2009
Beiträge
70
Reaktionspunkte
0
Ort
Aschaffenburg
Wer sagt denn das du das Feld "frage_id" auf Auto Increment setzen sollst? Jeweils die beiden Felder "id" sind auf Auto Increment, das Feld "frage_id" ist ganz normal Integer :)
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #11
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Ok jetzt hab ichs begriffen. Man sollte bis zum Ende lesen :ja:

Jetzt geht das soweit. Bin allerdings schon an meinem nächsten Problem angelangt. Ich möchte jetzt, dass alle Zahlen im Feld "zähler" drin sind und die die gleiche "id_frage" haben mit einander addieren und ausgeben. Wäre nur eine "id_frage" vorhanden wäre das kein Problem aber mir will nicht einfallen, wie ich das lösen könnte. Mein ansatz ist folgender:
PHP:
$db_abfrage2 = mysql_query("SELECT * FROM mv_antwort WHERE id_frage = id_frage") OR die(mysql_error());//Auslesen der Tabelle
	 while ($daten = mysql_fetch_array($db_abfrage2))
	 		{
			$klicks = $daten['count'];
			echo "<b>$klicks</b><br />";
			}
Ich weiß, da oben gehören noch '' hin bei dem WHERE teil aber da wird dann nichts ausgegeben. Soll auch nur dazu dienen, um zu Zeigen was ich meine.

Hoffe ihr könnt mir nochmal nen ansatz bringen.
Danke und grüße Pflaume
 
  • 2 Tabellenstrukturen auf einmal Auslesen Beitrag #12
S

Sady

Bekanntes Mitglied
Dabei seit
11.03.2009
Beiträge
70
Reaktionspunkte
0
Ort
Aschaffenburg
Hi!

Das könntest du auch mit einer SQL-Query lösen:

Code:
$res = mysql_query('SELECT id_frage, SUM(count) AS zaehler_summe FROM mv_antwort GROUP BY id_frage');
...

Grüße
 
Thema:

2 Tabellenstrukturen auf einmal Auslesen

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.173
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben