Hallo,
vielen Dank für die Antworten, bin aber bisher noch nicht recht weitergekommen.
Daher hier zur besseren Übersicht den kompletten PHP-Code.
Ziel: ich brauche eine Druckseite mit einem "statischen Kopfteil" für einen Kunden, der aus zwei Tabellen
`kd_konto`
`jos_users`
zusammengebaut wird (ab #### START Kopfdaten ##########), sowie einer anschließenden Liste mit vielen Daten dieses einen Kunden, die aus zwei anderen SQL-Tabellen
`jos_vm_favorites`
`jos_vm_product`
erzeugt wird (ab #### START Listdaten ##########).
Diese Seite habe ich so schon länger, bisher ohne Störungen, im Einsatz (siehe Screnshot).
PHP:
<?php session_start(); ?>
<HTML>
<HEAD>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
</HEAD>
<BODY>
<?PHP
error_reporting(E_ALL);
// Definiert die Parameter für den Datenbank Connect
define("DB_HOST","localhost"); // MySQL hostname
define("DB_NAME","usr_webxxx"); //MySQL db-name
define("DB_USER","webxxx"); //MySQL User
define("DB_PASS","xxxx"); // MySQL Passwort
// Datenbank Connect herstellen
$db = @MYSQL_CONNECT(DB_HOST,DB_USER,DB_PASS) or die("Datenbank-Connect fehlgeschlagen");
$db_check = @MYSQL_SELECT_DB(DB_NAME) or die("Datenbank momentan nicht erreichbar");
$table1 = jos_vm_favorites;
#echo session_save_path();
# Übernahme der Variablen
$kdnr = "" . $_SESSION['userName_x2'] . " ";
$kdnr2 = "" . $_SESSION['userName_x22'] . " ";
#### START Kopfdaten ##########
$sql = mysql_query("SELECT `jos_users`.*, `kd_konto`.*
FROM `jos_users`
LEFT JOIN `kd_konto` ON `jos_users`.`kdnr` = `kd_konto`.`kdnr`
WHERE `jos_users`.`kdnr` = '{$kdnr}'");
$row = mysql_fetch_array($sql) or die(mysql_error());
# Daten aus jos_users
$name = $row["name"];
$vorname = $row["vorname"];
$tel = $row["tel"];
$email = $row["email"];
$strasse = $row["strasse"];
$plz = $row["plz"];
$ort = $row["ort"];
$text = $row["text"];
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
//Einträge pro Seite: Hier 25 pro Seite
$eintraege_pro_seite = 50;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$x1= ("<FONT SIZE=\"-1\" FACE=\"Arial\">");
$x2= ("<FONT SIZE=\"-2\" FACE=\"Arial\">");
echo "
<FONT SIZE=\"-0\" FACE=\"Arial\"><BLOCKQUOTE><b><u>Artikelliste</u></b><FONT SIZE=\"-1\" FACE=\"Arial\"> <br>
für Kunde..............: $vorname $name KD-Nr.: $kdnr <br>
Strasse, PLZ, Ort..: $strasse, $plz $ort <br>
e-Mail...................: $email Telefon: $tel
</BLOCKQUOTE>";
#### ENDE Kopfdaten ##########
#### START Listdaten ##########
echo "
<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">
<tr bgcolor=\"#cccccc\"><FONT SIZE=\"-1\" FACE=\"Arial\">
<td width=30>$x2 KD-Nr</td>
<td width=50>$x2 Favo-Nr.</td><td width=50>$x2 Art-Nr.</td>
<td width=40>$x2 Art.-Gruppe</td><td width=100>$x2 </td>
<td width=30>$x2 Anz</td><td width=200>$x2 Titel</td>
<td width=40>$x2 </td>
<td width=100>$x2 Datum</td>
</tr>
";
# , `a_kat`.*
$abfrage = "SELECT `jos_vm_favorites`.*, `jos_vm_product`.*
FROM `jos_vm_favorites`
LEFT JOIN*`jos_vm_product` ON `jos_vm_favorites`.`product_id` = `jos_vm_product`.`product_id`
WHERE `jos_vm_favorites`.`user_id`= '".$kdnr2."'
ORDER BY fav_date DESC
LIMIT $start, $eintraege_pro_seite";
# LEFT JOIN*** `jos_vm_favorites` ON `a_kat`.`katnr` = `jos_vm_favorites`.`product_id`
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) #*/
{
$kdnr2 = $row->user_id;
$anzahl = $row->product_qty;
$aunr = $row->product_id;
$artnr = $row->product_sku;
$group = $row->feld30;
$titel = $row->product_s_desc;
$datum = $row->fav_date;
# Zusammenbau der List-Tabelle
echo "<tr bgcolor=\"#ffffff\"><FONT SIZE=\"-1\" FACE=\"Arial\">";
echo "<td VALIGN=top>$x2 $kdnr</td>";
echo "<td VALIGN=top><font color=\"#999999\">$x2 $aunr</td>";
echo "<td VALIGN=top>$x2 $artnr</td>";
echo "<td VALIGN=top>$x2 $group</td>";
echo "<td VALIGN=top>$x2 $group</td>";
echo "<td VALIGN=top>$x2 $anzahl</td>";
echo "<td VALIGN=top>$x2 $titel</td>";
echo "<td VALIGN=top>$x2 </td>";
echo "<td VALIGN=top>$x2 $datum</td>";
echo "</tr>";
echo "<tr><td COLSPAN=9>";
echo "<hr>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
#### ENDE Listdaten ##########
$result = mysql_query("SELECT *
FROM $table1
WHERE user_id= '".$kdnr2."'");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
$menge = number_format($menge, 0, ',', ' ');
echo "<hr>$x2<u>Favoriten...:</u> $menge <br>";
#echo "<hr>$x2<u>Gesamt:</u> $menge <br>";
echo "<div align=\"left\">";
echo "$x2<u>Seite..........:</u> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
if($seite == $b)
{
echo " $x2<b>$b</b> ";
}
else
{
echo " $x2<a href=\"?seite=$b\">$b</a> ";
}
}
echo "</div>";
echo "</br>";
?>
Nun kommt mein Problem.
Jetzt wird eine weitere Spalte mit "Gruppen-Namen" benötigt, Die Gruppen-Nr. finde ich bereits in der Tabelle `jos_vm_product` was diese Nr. jedoch bedeutet steht nur in der Kategorie-Tabelle
`a_kat`.
Also füge ich in meiner bisher einwandfrei funktionierenden Select-Abfrage die entsprechende
Tabelle `a_kat` hinzu. Außerdem eine weitere Verknüpfungszeile mit LEFT JOIN.
PHP:
$abfrage = "SELECT `jos_vm_favorites`.*, `jos_vm_product`.*, `a_kat`.*
FROM `jos_vm_favorites`
LEFT JOIN*`jos_vm_product` ON `jos_vm_favorites`.`product_id` = `jos_vm_product`.`product_id`
LEFT JOIN*** `jos_vm_favorites` ON `a_kat`.`katnr` = `jos_vm_favorites`.`product_id`
WHERE `jos_vm_favorites`.`user_id`= '".$kdnr2."'
ORDER BY fav_date DESC
LIMIT $start, $eintraege_pro_seite";
Jetzt erscheint die Fehlermeldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/
Nehme ich in der List-Abfrage die 3. Tabelle und die LEFT JOIN-Zeile wieder raus, funktioniert alles wieder wie bisher, eben nur ohne Gruppen-Name. Also so verkehrt kann meine Abfrage bisher ja nicht sein.
Wie kann ich nun aus der Tabelle `a_kat` neben der Gruppen-Nr auch noch den Gruppen-Namen in meiner Liste darstellen?