Antworten auf deine Fragen:
Neues Thema erstellen

Joomla 2 Datenbanktabellen verbinden

siriussmarty

Noch nicht viel geschrieben

Hallo,
ich versuche es so einfach wie möglich mein Anliegen zu formulieren.
Ich habe 1 Datenbanktabelle names = "user"
Ich habe 1 Datenbanktabelle names ="noten"

Usertabelle
ID | Name | username | Mail | passwort ...

Notentabelle
ID | matrikel | nachname | anrede | note1 | note2 | note3

Jetzt möchte ich gern Die 2 Tabellen verbinden "nummer" und "usernamen"
Die 2 Inhalte von nummer und username stimmen überein. Ich möchte wenn der Username eingeloggt ist das er in der Notentabelle nach der nummer schaut und die Zeile komplett ausgibt.

PHP:
// Datenbank Zugangsdaten
mysql_connect("localhost","d011e4e0","K22otAP9wW97opAe") or die ("Keine Verbindung moeglich");
mysql_select_db("d011e4e0") or die ("Die Datenbank existiert nicht.");

// Datenbank ausgabe im Array $row 
$result = mysql_query("SELECT * FROM notentabelle, usertabelle WHERE matrikel");
if (!$result) {
    echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
    exit;
}
$matrikel = $username;
$username = mysql_query("SELECT * FROM jos_users");
$row = mysql_fetch_row($result);
Bei diesem Befehl wirft er mir auch nichts aus
PHP:
$result = mysql_query("SELECT matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username");
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW: Joomla 2 Datenbanktabellen verbinden

Du kannst das z.b. so machen:

PHP:
<?php
$username	=	"Mustermann";

mysql_query("
SELECT
	u.*,
	n.*
FROM
	`user` as u,
	`notentabelle` as n
WHERE
	u.`username` = '".mysql_real_escape_string($username)."' AND
	n.`nummer` = u.`username`;
");
?>
 

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Hallo Robbyn
danke für deine Antwort, funktioniert aber nicht. Muss erst noch einmal schauen da mir Joomla auch gerade keinen Benutzernamen ausgeben will. Vielleicht liegt es auch am restlichen Code da vielleicht dort ein Fehler sich eingeschlichen hat.

Würde mich später nochmal melden.
Danke im voraus! :)
 

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Also funktioniert nicht ... er gibt mir nichts mehr aus
Ratlosigkeit kommt langsam auf... sitze schon mehrere tage daran :) Funktioniert zwar immer mal wieder was neues aber dort hänge ich mich echt Uff :)
 

Robbyn-

PHP / Flex Programmierer

AW: Joomla 2 Datenbanktabellen verbinden

Was geht den jetzt nicht genau?

Die Datenbankabfrage?

Falls ja, musst du vorher wissen, das durch die Abfrage jetzt auch eine Abhängigkeit entsteht. Wenn in der Tabelle `notentabelle` kein Eintrag von, z.b. Paul, ist, dann werden auch die Daten vom Benutzer "Paul" aus der Tabelle `users` nicht mit ausgegeben.
 
Zuletzt bearbeitet:

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Hallo Robbyn,
erst einmal Danke das du mir hilfst.
In der Usertabelle ist der Nutzer vorhanden mit "B11.103"
In der Notentabelle ist der Benutzer ebenso vorhanden mit allen Datenfeldern und damit die Verbindung klappt selbstverständlich mit "B11.103 in der Notentabelle hinterlegt.

Ich frage die Noten über Array ab. Wenn ich nur die Datenbank normal abfrage mit
PHP:
$result = mysql_query("SELECT * FROM noten_ab11");
gibt er die erste Zeile aus.

Und bei deinem Befehl spuckt er nichts mehr aus und die Felder sind leer.

PHP:
$username    =    "Mustermann";
</span></span>
Hiermit wird bezweckt das der Username Mustermann heißen muss oder?
Da ich aber den Benutzer noch nicht kenne, der sich dort einloggt müsste da nicht stehen
PHP:
 $matrikel = ". $username .";
oder so?

Notentabelle heißt = noten_ab11 - spaltenname der verbunden werden soll "matrikel"
Usertabelle heißt = jos_users - spaltenname der verbunden werden soll "username"
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW: Joomla 2 Datenbanktabellen verbinden

Damit ich weiter helfen kann, brauche ich einzelheiten wieso es nicht funktioniert, deshalb werden wir mal die Fehlermeldung ausgeben lassen :)

Ändere deinen Code mal wie folgt ab:
PHP:
 <?php
$username    =    "Mustermann";

$query	=	mysql_query("
SELECT
    u.*,
    n.*
FROM
    `user` as u,
    `notentabelle` as n
WHERE
    u.`username` = '".mysql_real_escape_string($username)."' AND
    n.`nummer` = u.`username`;
");

if($query == false)
{
	die(mysql_error());
}
?>

Und dann gib mir die Meldung aus, die dort hoffentlich zurück kommt.


EDIT:

Achso den Benutzer weißt du noch nicht! Dann versuche es mal wie folgt:

PHP:
$query	=	mysql_query("
SELECT
    u.*,
    n.*
FROM
    `user` as u,
    `notentabelle` as n
WHERE
    n.`nummer` = u.`username`;
");
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Joomla 2 Datenbanktabellen verbinden

Passt du denn deine Tabellennamen im Code von Robbyn an? Deine Nutzertabelle heißt jos_users, im Vorschlag nur user.

Ansonsten sollte dein erster Ansatz
PHP:
 $result = mysql_query("SELECT matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username");
schon korrekt sein. Möglicherweise musst du noch die Tabelle anhängen, aber da bin ich mir gerade nicht sicher.
PHP:
 $result = mysql_query("SELECT noten_ab11.matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username");

Ansonsten vermute ich einen Fehler in der Ausgabe nach dem Query.


Duddle
 

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Hallo,
@Duddle dein versuch mache ich später *Danke!*
@Robbyn jetzt gibt er mir was aus, nur nicht die Noten, sondern die Usertabelle mit Name, e-mail, anschrift, brauche aber die Notentabelle...

- Ich schaue mal kurz weiter

EDIT : DANKE! Er ruft Sie ab nur die falschen, vielleicht habe ich auch einen Fehler in der Datenbank :)
 

Robbyn-

PHP / Flex Programmierer

AW: Joomla 2 Datenbanktabellen verbinden

Probiere mal das Beispiel von Duddle aus, den wenn ich mir die Tabelle so aufbaue wie oben beschrieben funktioniert meine query.
 

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Gut, das möchte nicht funktionieren von @ Duddle :D - keine Ausgabe mehr

Mit
PHP:
if($query == false)
{
    die(mysql_error());
}
gibt es eine leere Seite
 

Duddle

Posting-Frequenz: 14µHz

AW: Joomla 2 Datenbanktabellen verbinden

Wie sieht dein Code nach dem mysql_query() aus? Das heißt, wie lässt du dir das Ergebnis anzeigen?


Duddle
 

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Über ein Array

PHP:
// Datenbank ausgabe im Array $row 
$result = mysql_query("SELECT noten_ab11.matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username");  
if (!$result) {
    echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);

Möchte das gern zwischenspeichern, da es noch andere Klassen mit anderen Template gibt wo die Datenbankeinträge unterschiedlich sind.

Ausgabe in der HTML Tabelle
PHP:
<?php echo $row[5]; ?>
weil ich nur die spalte brauche in der Tabellespalte
 

Duddle

Posting-Frequenz: 14µHz

AW: Joomla 2 Datenbanktabellen verbinden

Wenn du mit dem SELECT nur eine Spalte holst (matrikel), dann ist das Array in $row auch nur ein Feld lang. Das kannst du bestätigen indem du ein
PHP:
print_r($row);
einbaust. Wenn das Array nur 1 Feld hat, ist $row[5] offensichtlich nicht definiert / leer und du siehst nix in der Ausgabe.



Duddle
 

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Hey,
sorry aber komme gerade nicht hinterher... bin noch Newbie und versuche durch das Programmieren einfach dazu zu lernen, einfache Anfängerkurse habe ich mir schon durchgelesen, also was Variabeln Array, Datenbankabfragen etc durchgelesen.

Aber print_r war noch nie eine Rede gewesen... daher kann ich mir auch gerade nicht vorstellen was dies bezweckt :) Sorry :)

PHP:
// Datenbank Zugangsdaten
mysql_connect("localhost","d011e4e0","K22otAP9wW97opAe") or die ("Keine Verbindung moeglich");
mysql_select_db("d011e4e0") or die ("Die Datenbank existiert nicht.");

// Datenbank ausgabe im Array $row 
$result = mysql_query("SELECT noten_ab11.matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username");  
if (!$result) {
    echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);
print_r($row);  
?>
ich habe so ziemlich viele Felder ingesamt 38 Stück brauche aber nur ein paar ca. 30, das hängt aber alles mit der CVS Datei bei Hochladen zusammen, da ich diese Felder für etwas anderes benötige :)

Geschichte: CSV Datei wird hochgeladen in Datenbank importiert und nun möchte ich über ein Array zwischenspeichern was er ausgibt und in die HTML Tabelle einfügen mit $row->feld oder ähnlich

In meinem Fall
PHP:
 <?php echo $row[5]; ?>
Vielleicht Wichtig: Auch Spalten sind in der Tabelle leer, vielleicht macht er da ein Problem?

Bei seiner Variante liest er nur die 2te Zeile aus... benötige aber die Zeile wo die Matrikel übereinstimmt mit dem username.

Aber ich belese mich mal wegen dem print_r - dachte sowas nimmt man nur in der Schleife...
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Joomla 2 Datenbanktabellen verbinden

Geh deinen Code Schritt für Schritt durch und verstehe ihn. Du hast nur ein halbes Dutzend Zeilen, da ist das kein Problem:

PHP:
$result = mysql_query("SELECT noten_ab11.matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username");
Du fragst hier die Datenbank nach allen Zeilen, die bestimmte Eigenschaften erfüllen. Von diesen Zeilen benötigst du nur die Spalte mit dem Namen noten_ab11.matrikel. Die temporäre Ergebnis-Tabelle ist also eine Tabelle mit exakt einer Spalte und vielen Zeilen. Die Datenbank gibt dir dann einen Ressourcen-Handle zurück und speicherst ihn in $result.

PHP:
if (!$result) {
    echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
    exit;
}
Falls $result nicht definiert / vorhanden oder False ist, dann muss der Fehler behandelt werden. $result ist dann nicht definiert, wenn in der Zeile vorher ein Fehler im mysql_query() aufgetreten ist. Das Handbuch von mysql_query() bestätigt das im Teil "Rückgabewerte".

PHP:
$row = mysql_fetch_row($result);
Hier wird mithilfe des Handle die Datenbank nach exakt einer Zeile ("row") aus der temporären Ergebnis-Tabelle gefragt. Stell dir den Handle als Zeiger auf die erste Zeile vor. mysql_fetch_row() holt dann diese Zeile und schiebt den Zeiger auf die nächste Zeile. Deshalb ruft man mysql_fetch_row() auch in einer Schleife auf, falls man alle Zeilen aus der Ergebnis-Tabelle haben möchte. In deinem Beispiel fragst du aber nur nach der ersten Zeile. Diese wird in Form eines Arrays zurückgegeben.

Ergo steht in $row nun ein Array mit dem Inhalt der Zeile. Jedes einzelne Element entspricht dabei der Spalte die dort in der angefragten Zeile steht. Wenn deine Zeile also nur aus einer Spalte besteht, ist in dem Array nur ein Eintrag drin. Wenn du nun aus dem Array etwas holen willst, musst du den Index mit angeben. Das hast du schon mit $row[5] durchgeführt, wobei du hier das 6te Element holst (der Index beginnt bei 0).

PHP:
print_r($row);
Das ist eine Hilfsfunktion zur Fehlersuche, die dir den kompletten Inhalt des übergebenen Arrays ausgibt, ohne dass du den genauen Index wissen musst. Eigentlich solltest du das beim Ausführen gesehen haben.

Lange Rede, kurzer Sinn: in $row steht ein Array mit exakt einem Element. Dieses ist das erste Element mit Index 0. Du gibst aber lt. Eigenaussage das 6te Element mit Index 5 aus. Das 6te Element ist aber nicht definiert, weil in $row nur ein Element drin steht.


Duddle
 

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Hallo ,
danke erst einmal für die ausführliche Erklärung die mir einiges aber nicht alles klar gemacht hat :) *GrinZ*
Aber schön, das du deine Freizeit für mich Opferst :)

Die Geschichte mit dem Index habe ich gleich bemerkt das er bei 0 anfängt, ich benötige aber erst die 6 also Spalte 5. Das habe ich auch alles ordentlich eingetragen und funktioniert auch.

Meinen Programmierten Code habe ich auch verstanden - wo er was ausgeben möchte, wo er was sucht ... Mein Lösungsansatz mit INNER JOIN war auch soweit richtig, nur das du Ihn noch verfeinert hast ;) Der aber nach meinen Wissenstand nicht funktioniert.

Die Geschichte mit
PHP:
print_r($row);
habe ich jetzt dank dir auch verstanden ;)

Array mit exakt einem Element
Er gibt mir ja alles aus, aber nur die 2te Zeile mit Robbyn Abfrage - er vergleicht die Matrikel nicht mit dem Username, was bei INNER JOIN ( deiner Abfrage ) genau das richtige ist.

Bei der INNER JOIN abfrage macht er nichts mehr, ich hatte erst die befürchtung das ich in einer Tabelle den User vergessen hatte, um den zu vergleichen.

Oder muss ich jede spalte Seperat abfragen und dann in ein Array speichern? Aber mit dem SELECT * Frage ich doch schon alle spalten ab...

Ich hoffe Ihr verzweifelt nicht :) Entweder ist es zu Früh oder ich habe echt noch nicht das große Wissen um eigenständig mir zu Helfen, trotz Hilfe zur Selbsthilfe von euch...

*Kopf hoch geht immer weiter ... :D *

EDIT: Vielleicht sowas in der Art?
PHP:
while($row = mysql_fetch_array($result)) {
$resultset[$row['ID']] = $row;
$resultset[$row['matrikel']] = $row;
$resultset[$row['note1']] = $row;
$resultset[$row['note2']] = $row;
...
}

Aber in einer Schleife kann ich das doch nicht machen, da ich eine HTML Tabelle habe und dort das Array auslesen möchte einzeln.
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Joomla 2 Datenbanktabellen verbinden

Okay, entweder reden wir aneinander vorbei oder wir reden aneinander vorbei.

Bitte poste deinen gesamten Code zur Abfrage und Ausgabe deiner Ergebnisse. Falls da Unternehmensgeheimnisse o.ä. drinstecken kannst du die anonymisieren.

Der JOIN ist korrekt, zu 100%. Der Code zur Abfrage ist in Ordnung. Ergo sind entweder deine Daten oder der Code zur Ausgabe fehlerhaft, sonst würdest du sehen was du sehen willst.

Edit: vereinfacht ausgedrückt sieht deine Datenbank so aus und sollte durch die im Link gezeigten Abfrage auslesbar sein.

Duddle
 
Zuletzt bearbeitet:

siriussmarty

Noch nicht viel geschrieben

AW: Joomla 2 Datenbanktabellen verbinden

Hey Duddle,
hier mein kompletter Quellcode, wird der Import auch gebraucht? Eigentlich, nicht da das ja funktioniert, hier die ausgabe, zudem soll gesagt sein, das er nach dem Joomla User suchen soll.

Quellcode inkl. Tabelle wo es ausgelesen werden soll :) Thihihi - schon ganz schön schwierig :D

PHP:
<?php
// JOOMLA STAMMPFADE
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE .DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE .DS.'includes'.DS.'framework.php'); 
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$user =& JFactory::getUser();
$app =& JFactory::getApplication();
$session =& JFactory::getSession();
$config =& JFactory::getConfig();
jimport( 'joomla.user.helper' );
JHtml::_('behavior.framework', true);

// Datenbank Zugangsdaten
mysql_connect("localhost","...","...") or die ("Keine Verbindung moeglich");
mysql_select_db("...") or die ("Die Datenbank existiert nicht.");

// Datenbank ausgabe im Array $row 
$result = mysql_query("SELECT noten_ab11.matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username"); 

if (!$result) {
    echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);

?>

<div style="float:left;">

<?php
// Ausgabe des Benutzername und Matrikel aus Joomla
     if (!$user->guest) {
 echo $row[1];'<br>';
 echo $row[3];  echo $row[2];
}
?>
</div>
<div style="float:right"><br />
<?php 
// Ausgabe des Datum 
    echo '<b>Stand:</b> ' . $row[37]; 
    ?></div>
<div class="both">&nbsp;</div>

<table style="" class="tabelle" border="1" cellpadding="0" cellspacing="0">
  <tbody>
    <tr class="headnoten">
      <td width="30%">Überschrift</td>
      <td width="5%" class="center">1.</td>
      <td width="5%" class="center">2.</td>
      <td width="5%"  class="center">3.</td>
      <td width="5%"  class="center">4.</td>
      <td width="5%"  class="center">5.</td>
      <td width="5%"  class="center">6.</td>
      <td width="10%" class="center">Überschrift</td>
      <td width="10%" class="center">Überschrift</td>
      <td width="10%" class="center">Überschrift</td>
    </tr>
    <tr class="LP">
      <td>Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">&nbsp;</td>
    </tr>
    <tr class="schluesselkompetenzen">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
      <td class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="tdwa">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
      <td rowspan="3">&nbsp;</td>
      <td rowspan="8">&nbsp;</td>
    </tr>
    <tr class="giv">
      <td class="bezeichnung">Überschrift</td>
      <td class="grau"><?php echo $row[5]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="kkf">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[6]; ?></td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="qtmd">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="ebg">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
      <td rowspan="4">&nbsp;</td>
    </tr>
    <tr class="gwm">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="wsmmk">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[7]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td rowspan="2" class="center">Überschrift</td>
    </tr>
    <tr class="wssk">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[8]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="wertschöpfungskette">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
      <td class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="gbwl">
      <td class="bezeichnung">Überschrift</td>
      <td class="grau"><?php echo $row[9]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
      <td rowspan="4">&nbsp;</td>
      <td rowspan="24">&nbsp;</td>
    </tr>
    <tr class="puw">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[10]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="mwbl">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[11]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="mkvb">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[12]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="bwllr">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="erwl">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[13]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td rowspan="2" class="center">Überschrift</td>
      <td rowspan="4">&nbsp;</td>
    </tr>
    <tr class="erwll">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[14]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="klrl">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[15]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td rowspan="2" class="center">Überschrift</td>
    </tr>
    <tr class="klrll">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[16]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="bwlllf">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="ivur">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[17]; ?></td>
      <td>&nbsp;</td>
      <td rowspan="2" class="center">Überschrift</td>
      <td rowspan="3">&nbsp;</td>
    </tr>
    <tr class="fpf">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[18]; ?></td>
      <td>&nbsp;</td>
    </tr>
    <tr class="bws">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[19]; ?></td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="ufpuo">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="perwirt">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau" rowspan="3"><?php echo $row[20]; ?></td>
      <td>&nbsp;</td>
      <td rowspan="3" class="center">Überschrift</td>
      <td rowspan="3">&nbsp;</td>
    </tr>
    <tr class="perfuehr">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="untorg">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="ufcon">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="perwirt">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau" rowspan="3"><?php echo $row[21]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td rowspan="3" class="center">Überschrift</td>
      <td rowspan="3">&nbsp;</td>
    </tr>
    <tr class="contr">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="infoman">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="ulllue">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="intman">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[22]; ?></td>
      <td class="center">Überschrift</td>
      <td rowspan="2">&nbsp;</td>
    </tr>
    <tr class="inoman">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[23]; ?></td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="mimakok">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
      <td class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="einmi">
      <td class="bezeichnung">Überschrift</td>
      <td class="grau"><?php echo $row[24]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
      <td rowspan="3">&nbsp;</td>
      <td rowspan="7">&nbsp;</td>
    </tr>
    <tr class="makl">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[25]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td rowspan="2" class="center">Überschrift</td>
    </tr>
    <tr class="makll">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[26]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="mimakok">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="einmi">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[27]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
      <td rowspan="3">&nbsp;</td>
    </tr>
    <tr class="makl">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[28]; ?></td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="makll">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[29]; ?></td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="mimakok">
      <td colspan="8" class="headbeschreibung"><strong>Überschrift</strong></td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
      <td class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="einmi">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[30]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td rowspan="2" class="center">Überschrift</td>
      <td rowspan="3">&nbsp;</td>
      <td rowspan="8">&nbsp;</td>
    </tr>
    <tr class="makl">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[31]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="makll">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[32]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
    <tr class="mimakok">
      <td colspan="8" class="headbeschreibung">Überschrift</td>
      <td colspan="1" class="durchschnitt">Überschrift</td>
    </tr>
    <tr class="einmi">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[33]; ?></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
      <td rowspan="4">&nbsp;</td>
    </tr>
    <tr class="makl">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[34]; ?></td>
      <td>&nbsp;</td>
      <td class="center" rowspan="2">Überschrift</td>
    </tr>
    <tr class="makll">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[35]; ?></td>
      <td>&nbsp;</td>
    </tr>
    <tr class="makll">
      <td class="bezeichnung">Überschrift</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td class="grau"><?php echo $row[36]; ?></td>
      <td>&nbsp;</td>
      <td class="center">Überschrift</td>
    </tr>
  </tbody>
</table>
 

Duddle

Posting-Frequenz: 14µHz

AW: Joomla 2 Datenbanktabellen verbinden

Okay, scheinbar hast du doch nicht verstanden wie das mit den Arrays funktioniert.

Stell dir vor, du hast einen Zug mit 3 Wagons. Jeder Wagon hat eine Bezeichnung und einen Inhalt. Die Liste könnte so aussehen:
Code:
Wagon 1: Gold
Wagon 2: Silber
Wagon 3: Bronze
Jetzt stell dir vor, du willst diesen Zug in einem Programm modellieren, um Fahrtstrecken u.ä. zu simulieren. Ergo brauchst du eine Datenstruktur, in denen du die Inhalte und eine genaue Zuweisung abspeichern kannst.
Der naive Ansatz wären 3 Variablen:
PHP:
$wagon_1 = "Gold";
$wagon_2 = "Silber";
$wagon_3 = "Bronze";
Das funktioniert so. Du merkst aber nach kurzer Zeit, dass es unnötig umständlich ist. Willst du zum Beispiel den kompletten Zug ausgeben, musst du schreiben:
PHP:
echo "Der Zug hat in ";
echo "Wagon 1: ".$wagon_1.", ";
echo "Wagon 2: ".$wagon_2.", ";
echo "Wagon 3: ".$wagon_3;
Noch schlimmer ist das Hinzufügen oder Entfernen von Wagons. Dann musst du plötzlich den gesamten Code nach allen Variablen-Vorkommmen durchsuchen und noch ein $wagon_4 einfügen. Kurz: der naive Ansatz funktioniert, ist aber nicht wünschenswert.

Dann fällt dir auf, dass der Zug ja im Endeffekt nur eine Liste von Nummern und deren Inhalten ist. Du findest schnell ein Feld oder Array als Datenstruktur. Das sind (grob gesagt) auch nur Listen von Daten. Du lernst auch nebenbei, dass Arrays in den meisten Programmiersprachen bei 0 beginnend indexiert werden und definierst den Zug so:
PHP:
$wagons = array();
$wagons[0] = "Gold";
$wagons[1] = "Silber";
$wagons[2] = "Bronze";
Das ist gleichbedeutend mit:
PHP:
$wagons = array("Gold", "Silber", "Bronze");

Willst du jetzt die gesamte Liste ausgeben brauchst du nur ein
PHP:
echo "Der Zug hat in ";
foreach($wagons as $nr => $inhalt) {
  echo "Wagon $nr: ".$inhalt." "; //fehlende Kommas ignorierend
}
Das Hinzufügen und Entfernen ist auch kein Problem mehr.

Jetzt stell dir folgende Frage: welchen Inhalt hat $wagons[4]? Oder $wagons[37]?

===

Was passiert bei einer Datenbankanfrage? Frage ich die Tabelle t1
Code:
id   | name
-----------
1    | foo
2    | bar
3    | baz
nach allen Namen, ist das natürlich einfach
PHP:
$res = mysql_query("SELECT name FROM t1");
In diesem Beispiel muss die Datenbank nur t1 nehmen und dort die Spalte "namen" rausholen / die anderen Spalten ausblenden. Intern verwaltet jetzt MySQL eine temporäre Tabelle, die zwar keinen Namen hat, deren Speicherort ich aber mit einem eindeutigen Bezeichner in $res abgelegt habe. Diese temporäre Tabelle sieht so aus:
Code:
name
----
foo
bar
baz
Jetzt möchte ich natürlich die Ergebnisse selbst auslesen. PHP bietet mir dafür mehrere Möglichkeiten, eine davon die Funktion mysql_fetch_row(). Sobald ich diese Funktion mit dem Ressourcen-Handler $res füttere, fragt PHP die Datenbank nach der Zeile, auf die in der temporären Tabelle ein interner Zeiger zeigt. Anfangs ist das natürlich die erste Zeile:
Code:
name
----
foo <-
bar
baz
MySQL gibt diese Zeile zurück und schiebt den Zeiger weiter. Intern sieht das so aus:
Code:
name
----
foo
bar <-
baz
PHP packt sie in ein Array und gibt dieses zurück. Im Code mag das so aussehen:
PHP:
$res = mysql_query("SELECT name FROM t1");
$zeile = mysql_fetch_row($res);
Intern steht dort nach Funktionsaufruf:
PHP:
$zeile = array("foo");
Was steht also in $zeile[0], was kriegst du bei einem echo? Natürlich "foo".

Jetzt stell dir folgende Frage: welchen Inhalt hat $zeile[4]? Oder $zeile[37]?

===

Kommen wir (hoffentlich) zur Pointe des Aufsatzes:
Stell dir vor, du möchtest zwei Tabellen verbinden und aus dieser neuen, temporären Tabelle nur die Spalte "matrikel" haben. Die Ergebnistabelle könnte so aussehen:
Code:
matrikel
----
904234 <-
8291
485321
04931
Jetzt möchtest du natürlich die Ergebnisse selbst auslesen. Also lässt du dir die erste Zeile holen und in ein Array packen:
PHP:
$result = mysql_query("SELECT noten_ab11.matrikel FROM noten_ab11 INNER JOIN jos_users ON noten_ab11.matrikel = jos_users.username"); 
$row = mysql_fetch_row($result);
Was steht also in $row[0], was kriegst du nach einem echo? Natürlich "904234".

Nun zum letzten Mal: welchen Inhalt hat $row[4]? Oder was ist das Ergebnis von
PHP:
// Ausgabe des Datum 
echo '<b>Stand:</b> ' . $row[37];



Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben