Seite 1 von 1

Output von mehreren Datensätzen

Verfasst: Do 30.Okt, 2008 14:11
von Holger
Hi!

Ich habe ein Skript vorliegen, da soll ein Output generiert werden in Form von
Name
Nachname
Abteilung
Produkt1
Produkt2
Produkt3
...

ABER, leider bekomme ich nur:
Name
Nachname
Abteilung
Produkt1

Es fehlen die weiteren Produkte.
Wo ist da der Denkfehler?

Danke!

Code: Alles auswählen

<?php

	if(!isset ($_POST[Suche])) {
		include ('1_Bsp.html');
		exit;
	}
	
$server = "localhost";
$user = "root";
$pass ="";
$database = "process";
$table_1 = "product";
$table_2 = "personal";
$table_3 = "responsibility";
$Username1 = $_POST[Nachname];
$Username2 = $_POST[Name];
$Abteilung = $_POST[Bereich];
$Genre = $_POST[System];

$verbindung = @mysql_connect($server, $user, $pass) or die ("Konnte Verbindung zur $database nicht hergestellt");

mysql_select_db($database, $verbindung) or die ("SQL-Fehler: " . mysql_error());

//$sql = "SELECT Nachname, Vorname, Telefon FROM $table_2 WHERE Nachname = '$Username1' AND Bereich = '$Abteilung'";
$sql="SELECT $table_2.Nachname, $table_2.Vorname, $table_2.Telefon, $table_1.Name FROM $table_2 INNER JOIN $table_1 INNER JOIN $table_3
ON $table_2.Personal_ID = $table_3.Personal_id AND $table_1.Product_ID = $table_3.Product_ID 
WHERE $table_2.Nachname = '$Username1' AND $table_2.Bereich = '$Abteilung' ORDER BY $table_1.Product_ID DESC";

$sql_2="SELECT COUNT($table_1.Name) FROM $table_2 INNER JOIN $table_1 INNER JOIN $table_3
ON $table_2.Personal_ID = $table_3.Personal_id AND $table_1.Product_ID = $table_3.Product_ID 
WHERE $table_2.Nachname = '$Username1' AND $table_2.Bereich = '$Abteilung' ORDER BY $table_1.Product_ID DESC";

$res =mysql_query($sql);
$res_2 = mysql_query($sql_2);
$nums = mysql_num_rows($res);
$result=mysql_fetch_object($res);
$result_2=mysql_fetch_object($res_2);
//print_r($result);

?>
<table width="90%" border="1" align="left" cellpadding="0" cellspacing="0">
<?
echo "<br>";
   if ($result){
       foreach ($result as $key=>$value){
          echo "<tr>";
		  echo "<th>".$key."</th>";
		  echo "<td>".$value."</td>";
		  echo "</tr>";
     	}
    }
	
?>
</table>
<?

mysql_free_result($res_2);
mysql_free_result($res);
mysql_close($verbindung);

?>

Verfasst: Do 30.Okt, 2008 15:55
von oxpus
Ich würde nicht eine 1:n-Beziehung in eine Anzeigeschleife packen, da unnötige Daten mit gezogen werden.
Frage doch erst einmal die Person ab und stelle die dar.
Dann frage aus der 2. Tabelle zu der Person die Detaildaten ab und stelle die dar (dann eben in einer Schleife).
Ist dann vollkommen ohne JOINs möglich und läuft ggf. sogar schneller...

Verfasst: Do 30.Okt, 2008 16:36
von Holger
Du meinst
Abfrage
Output
Abfrage
Output
und zuletzt die Schleife mit den Produktzuordnungen?

Verfasst: Do 30.Okt, 2008 23:33
von oxpus
und zuletzt die Schleife mit den Produktzuordnungen?
Also Du gibst ja aus: Name, Nachname, Abteilung und Produkte.
Produkte sind eine Tabelle, der Rest eine andere Tabelle.
Warum also nicht die Daten des Personals mit der ersten Abfrage aus der Datenbank holen, anzeigen und dann zunächst die zugeordneten Produkte abfragen und über eine Schleife darstellen.
Dann den nächsten Namen, etc...

Verfasst: Fr 31.Okt, 2008 08:56
von Holger
Ok! Danke!