• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Via PHP Daten aus zwei verschiedenen MySQL Tabellen auslesen ?!?

web673

Neues Mitglied
Huhu,

ich hänge seit Tagen bei einem kleinen Problemchen fest.

Ich versuche Datensätze aus zwei verschiedenen MySQL Tabellen (keine verschiedenen DBs) auszulesen.

Zweck:

Bildergalerie:
In einer Tabelle stehen die Alben Namen und die KatNr (Kategorie Nummer), in der anderen die Bilder, mit der zugehörigen Kategorie Nummer (zum Zuordnen).

Jetzt bekomme ich immer 'Nichts ausgegeben.'

error_ reporting (E_ALL); (extra hier im Forum so geschrieben) bringt mir da nichts, da es mir nur Sagt
Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 590

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 591

und das in der Anzahl der Bilder....

So nun mein "falscher" Codeschnipsel:
Code:
$katnr = intval($_GET['katnr']);

$link = mysql_connect($host, $user, $pass) or die($dbverbindungfehl);
mysql_select_db($db) or die($dbnichtvorhanden);

if ($_GET['admin']=="galerie_album") {
//<<<<<-----Katname------------
$abfragekat = "SELECT * FROM galerie_kathegorie WHERE katnr = $katnr";
$ergebniskat = mysql_query($abfragekat);
$rowkat = mysql_fetch_object($ergebniskat);
$kategoriename = $rowkat -> kathegoriename;
}
//<<<<<-----Katname------------

echo'<h2>Album '.$kategoriename.' verwalten</h2><br>';
echo'Derzeit gibt es folgende Bilder im Album:<br>';

$count = 0;

//Damit ich auch den gewünschten Text auslesen kann....

$sql1 = "SELECT katnr, kathegoriename FROM galerie_kathegorie";
$sql2 = "SELECT * FROM galerie ORDER BY kathegorie = $katnr";

$result1 = mysql_query($sql1) or die(mysql_error());
while ($fow = mysql_fetch_assoc($result1)or die(mysql_error())) {
  $katnr = $fow -> katnr;
  $kathegoriename = $fow -> kathegoriename;
}
$result2 = mysql_query($sql2) or die(mysql_error());
while ($row = mysql_fetch_assoc($result2)) {
  $count++;
  $id = $row -> id;
  $name = $row -> name;
  $eintragdatum = $row -> eintragdatum;
  $beschreibung = $row -> beschreibung;
  $creator = $row -> creator;
  $poster = $row -> poster;
  $bildurl = $row -> bildurl;
  $show = $row -> show;
  $kathegorie = $row -> kathegorie;

 //  Mein Design

$suchArr = array................................................

Grüße und ich hoffe auf nette Hilfe (threadi xD....)
web673
 
Werbung:
Code:
SELECT * FROM bild_infos bi LEFT JOIN bild_daten bd ON (bi.kategorie_id = bd.kategorie_id) WHERE /*deine bedingungen*/
 
Hi,

Danke für deine Antwort aber könntest du mir vielleicht kurz eine Erklährung dazu abgeben?

Und wie kann ich dort Spalten die es in beiden Tabellen gibt ausgeben ?

Grüße

Danke und gute Nacht
 
Werbung:
Im Einzelnen:

Code:
SELECT [kommagetrennte gewünschte Spaltenliste] 

FROM (bild_infos bi) /* diese Tabelle(n) wird auf jeden Fall für das Statement verwendet*/

LEFT JOIN bild_daten bd /* diese Tabelle wird berücksichtigt, Verknüpfungen können in ihr vorhanden sein, müssen aber nicht, unter ..*/
ON bi.kategorie_id = bd.kategorie_id /* .. diesen Bedingungen (also die Verknüpfung zur Tabelle bild_infos */

WHERE /*deine bedingungen*/

Hilfreich:
MySQL Datenbankhandbuch: MySQL-Sprachreferenz mit vielen Beispielen: JOIN
MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.7.1 JOIN
 
Hey ich wuste es ^^ das du antworten wirst ^^.. Danke für deine Erklährung.

Also habe ich es nun so gemacht.. aber er sagt es gäbe keine einträge..

$sql = "SELECT * FROM galerie bi LEFT JOIN galerie_kathegorie bd ON ('bi.kathegorie' = 'bd.katnr') WHERE katnr = $katnr ORDER BY creator";

Is bestimmt wieder nen leichtsinns oder verständnisfehler...

Grüße
 
Führst Du das Statement auch im phpmyadmin oder so aus, nicht in deiner php-Datei? Nur dann kannst Du auch direkt sehen ob und was dabei raus kommt.
 
Werbung:
PHP:
error_reporting(E_ALL);
$sql = "SELECT * FROM galerie g LEFT JOIN galerie_kathegorie gk ON (g.kathegorie = gk.katnr) WHERE katnr = $katnr ORDER BY creator";

wenn du einen fehler bekommst dann nenne uns diesen bitte ^^
 
Danke das mit phpMyAdmin ist eine gute idee gewesen ^^...

SELECT *
FROM galerie bi
LEFT JOIN galerie_kathegorie bd ON ( 'bi.kathegorie' = 'bd.katnr' )
WHERE kathegorie =1
ORDER BY creator
LIMIT 0 , 30

das ging dann... nur es kam eine etwas falsche ergebnmis raus....:

Habe euch hier mal das ergebnis geuploaded, da ich net weiß wie ich mich da genau ausdrücken soll....

In jeder spalte in der NULL steht müsste normal etwas anderes sein.

sqlfehler.jpg
 
wurde mein post garnicht beachtet? die singlequotest (') die du da hast müssen weg! ^^
 
Werbung:
..... Hatte deins erst in die Zwischenablage kopiert.. Habs dann aber vergessen....
jetzt gehts in phpmyadmin richtig ^^.

Meine Script bringt nun die schönsten Meldungen.

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 577

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 579

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 580

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 581

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 582

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 583

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 584

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 585

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 586

Notice: Trying to get property of non-object in H:\Projekt_neuerv\www\htdocs\verwaltung\view.php on line 587

das sind die:
$id = $row -> id;

$name = $row -> name;
$eintragdatum = $row -> eintragdatum;
$beschreibung = $row -> beschreibung;
$creator = $row -> creator;
$poster = $row -> poster;
$bildurl = $row -> bildurl;
$show = $row -> show;
$kathegorie = $row -> kathegorie;
$kategoriename = $row -> kathegoriename;

... Hoffe ich bekomme das in 10 Jahren noch hin.. in google waren das immer Joomla fehler.. (hab ich ja net)
 
also erstmal liegt das daran das mysql_fetch_object false oder so zurückgeliefert hat weil kein ergebniss gefunden wurde.

das problem löst du in dem du erstmal mysql_fetch_assoc anstadt mysql_fetch_object verwendest, nicht nur weil es schneller ist sondern auch weil du kein oop benutzt und die anwendung von mysql_fetch_object deshalb schwachsinnig ist ^^

und dann noch in dem du vorher mit mysql_num_rows prüfst ob der query ergebnisse gebracht hat.
 
da ist schon das assoc (hat mir schonmal jemand gesagt.)

Laut phpmyadmin gibt es ja !!! EIN !!! ergebnis.. aber es ist einfach nichtmehr da.

Hier mein Ganzer Code (nur die $host $user etc nicht drinn)

Code:
elseif ($_GET['admin']=="galerie_album") {
$katnr = intval($_GET['katnr']);

$link = mysql_connect($host, $user, $pass) or die($dbverbindungfehl);
mysql_select_db($db) or die($dbnichtvorhanden);

$count = 0;

//Damit ich auch den gewünschten Text auslesen kann....
$sql = "SELECT * FROM galerie g LEFT JOIN galerie_kathegorie gk ON (g.kathegorie = gk.katnr) WHERE katnr = $katnr ORDER BY creator";



$result1 = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($result1)) {
  $count++;
  
  $id = $row -> id;
  $name = $row -> name;
  $eintragdatum = $row -> eintragdatum;
  $beschreibung = $row -> beschreibung;
  $creator = $row -> creator;
  $poster = $row -> poster;
  $bildurl = $row -> bildurl;
  $show = $row -> show;
  $kathegorie = $row -> kathegorie;
  $kategoriename = $row -> kathegoriename;

 //  Mein Design

echo 'T'.$name;
echo $eintragdatum;
echo $beschreibung;
echo $creator;
echo $poster;
echo $bildurl;
echo $show;
echo $kathegorie.'T<br>';
}
 
Werbung:
Code:
elseif ($_GET['admin']=="galerie_album") {
$katnr = intval($_GET['katnr']);

$link = mysql_connect($host, $user, $pass) or die($dbverbindungfehl);
mysql_select_db($db) or die($dbnichtvorhanden);

$count = 0;

//Damit ich auch den gewünschten Text auslesen kann....
$sql = "SELECT * FROM galerie g LEFT JOIN galerie_kathegorie gk ON (g.kathegorie = gk.katnr) WHERE katnr = $katnr ORDER BY creator";



$result1 = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($result1)) {
  $count++;
  
  $id = $row['id'];
  $name = $row['name'];
  $eintragdatum = $row['eintragdatum'];
  $beschreibung = $row['beschreibung'];
  $creator = $row ['creator'];
  $poster = $row ['poster'];
  $bildurl = $row ['bildurl'];
  $show = $row ['show'];
  $kathegorie = $row ['kathegorie'];
  $kategoriename = $row['kathegoriename'];

 //  Mein Design

echo 'T'.$name;
echo $eintragdatum;
echo $beschreibung;
echo $creator;
echo $poster;
echo $bildurl;
echo $show;
echo $kathegorie.'T<br>';
}

Außerdem:
Kathegorie gibt es nicht, da ist kein 'h'. Es heißt Kategorie.
 
Außerdem:
Kathegorie gibt es nicht, da ist kein 'h'. Es heißt Kategorie.

Jop ich weiß... is mir selber schon aufgefallen.. nur ich hab das in so vielen scripteilen schon so.... (blödes kopieren xD)

Grüße

Juhuu ^^ Danke dir ... Endlich es geht... ich änder jetzt überall das mit kategorie und dann passts.

(nurnoch vergleichen was du geändert hast um es zu verstehen ^^)
 
Zuletzt bearbeitet:
er hat die "->key" in "['key']" geändert denn mit -> gleifst du auf etwas in einem objekt zu das ging bei fetch_object wunderbar da du objekte zurück bekommen hast, da du nun aber fetch_assoc nimmst wird dir ein array zurück gegeben und da musst du auch drauf zugreifen wie auf ein array...
 
Werbung:
Zurück
Oben