Spalten aus Tabellen für den jeweils eingeloggten User in einem Loop ausgeben, wie
Moin Leude,
ich arbeite gerade an einem Projekt, einer eigenen Memberpage für 130 Mitarbieter.
Ich habe zwei MySQL-Tabellen mit jeweils Userspezifischen Inhalten/Tabellen. Eine Usertabelle mit Daten zum User selbst (Namen, Emailadresse, usw.) und eine Tabelle, mit verschiedenen andern Inhalten auch Userspezifisch.
Ich habe jetzt eine einfache if und foreach Schleife geschrieben, um den jeweils eingeloggten User zu begrüssen und die Inhalte der Tabellenspalten für den jeweils eingeloggten User auszugeben.
Jetzt die Frage, wie bekomme ich es hin, dass ich mit nur dieser einen Schleife, jeiweils immer für den User, der eingeloggt ist die Daten ausgeben kann, ohne die Schleife 130 mal kopieren zu müssen.
Hier ist mal der Basis-Code für 2 User
Ich habe jetzt ein paar mal was von einer while Schleife gelesen und einem pdo_fetch_all_query, finde aber nicht wirklich eine Lösung. Vielleicht habe ich auch nur gerade ein Brett vor dem Kopf.
Wäre ganz prima, wenn mir jemand sagen könnte, wie ich diese Routine umsetze und mir ein paar Tips gibt.
Danke schonmal im Voraus.
Greetz
ich arbeite gerade an einem Projekt, einer eigenen Memberpage für 130 Mitarbieter.
Ich habe zwei MySQL-Tabellen mit jeweils Userspezifischen Inhalten/Tabellen. Eine Usertabelle mit Daten zum User selbst (Namen, Emailadresse, usw.) und eine Tabelle, mit verschiedenen andern Inhalten auch Userspezifisch.
Ich habe jetzt eine einfache if und foreach Schleife geschrieben, um den jeweils eingeloggten User zu begrüssen und die Inhalte der Tabellenspalten für den jeweils eingeloggten User auszugeben.
Jetzt die Frage, wie bekomme ich es hin, dass ich mit nur dieser einen Schleife, jeiweils immer für den User, der eingeloggt ist die Daten ausgeben kann, ohne die Schleife 130 mal kopieren zu müssen.
Hier ist mal der Basis-Code für 2 User
<?php session_start (); ?>
<?php
$user1 = $pdo->query ("SELECT * FROM `userlist` WHERE username= 'user1'");
enter code here
$user2 = $pdo->query ("SELECT * FROM `userlist` WHERE username= 'user2'");
?>
<?php
define( '_JEXEC', 1 ); define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ] );
define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ] );
require_once (JPATH_BASE . '/includes/defines.php');
require_once (JPATH_BASE . '/includes/framework.php');
require_once (JPATH_BASE .'/libraries/joomla/factory.php');
$app = JFactory::getApplication('site');
$user = JFactory::getUser();
$userid = $user->id;
$username = $user->username;
$name = $user->name;
$email = $user->email;
?>
<?php
if($user->username != '' )
{
echo 'hello' . ' ' . $username;
}
?>
<?php if($user->username == 'user1' ):?>
<?php echo 'Hello';?> <?php echo $username;?>`
<?php foreach ($user1 AS $row):?>
<?php echo $row ['id'];?>
<?php echo $row ['name'];?>
<?php if ($row ['content'] != "0"):?>
<?php echo 'Content' ?>
<?php endif?
<?php endforeach ?>
<?php endif?>
<?php if($user->username == 'user2' ):?>
<?php echo 'Hello';?> <?php echo $username;?>`
<?php foreach ($user2 AS $row):?>
<?php echo $row ['id'];?>
<?php echo $row ['name'];?>
<?php if ($row ['content'] != "0"):?>
<?php echo 'Content' ?>
<?php endif?
<?php endforeach ?>
<?php endif?>
Ich habe jetzt ein paar mal was von einer while Schleife gelesen und einem pdo_fetch_all_query, finde aber nicht wirklich eine Lösung. Vielleicht habe ich auch nur gerade ein Brett vor dem Kopf.
Wäre ganz prima, wenn mir jemand sagen könnte, wie ich diese Routine umsetze und mir ein paar Tips gibt.
Danke schonmal im Voraus.
Greetz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 340400
Url: https://administrator.de/contentid/340400
Ausgedruckt am: 13.11.2024 um 01:11 Uhr
10 Kommentare
Neuester Kommentar
Moin,
warum so kompliziert?
Irgendwie ermittelst du ja sicherlich bereits, um welchen User es sich handelt, wenn er die Seite aufruft!?
Diesen Kenner verwendest du gegen deine Datenbank innerhalb der Where-Clause.
du baust dir dein Query vorher in einer Variablen zurecht und anstatt in Zeile 4 bzw. 6 dann dort dein Query zu platzieren, setzt du die Variable ein...
schaue auch diesbezüglich mal hier rein:
Liste mit 500 Datensätzen aus MySQL-Tabelle und in if condition verarbeiten
Ähnliches Problem wurde dort auch angefragt. Leider jedoch keine weitere Rückmeldung erhalten
Gruß
em-pie
warum so kompliziert?
Irgendwie ermittelst du ja sicherlich bereits, um welchen User es sich handelt, wenn er die Seite aufruft!?
Diesen Kenner verwendest du gegen deine Datenbank innerhalb der Where-Clause.
du baust dir dein Query vorher in einer Variablen zurecht und anstatt in Zeile 4 bzw. 6 dann dort dein Query zu platzieren, setzt du die Variable ein...
schaue auch diesbezüglich mal hier rein:
Liste mit 500 Datensätzen aus MySQL-Tabelle und in if condition verarbeiten
Ähnliches Problem wurde dort auch angefragt. Leider jedoch keine weitere Rückmeldung erhalten
Gruß
em-pie
Hey,
da scheint es ja sehr an den Grundlagen zu hapern. Wenn dein Benutzer sich über deine Seite anmeldet, dann hast du doch den Benutzernamen. Deine SQL Abfragen machst du nur für diesen Benutzernamen (die Variable, wo der Username drin steht). Fertig. ;)
bei WHERE username='user1' das user1 durch deine entsprechende Variable ersetzen.
Gruß,
Thomas
da scheint es ja sehr an den Grundlagen zu hapern. Wenn dein Benutzer sich über deine Seite anmeldet, dann hast du doch den Benutzernamen. Deine SQL Abfragen machst du nur für diesen Benutzernamen (die Variable, wo der Username drin steht). Fertig. ;)
bei WHERE username='user1' das user1 durch deine entsprechende Variable ersetzen.
$user1 = $pdo->query ("SELECT * FROM `userlist` WHERE username= 'user1'");
Gruß,
Thomas
Hi,
das kann ich dir nicht sagen. In deinem Code ist nicht erkennbar, woher deine Anmeldedaten kommen.
Wenn du dich damit auf die unten stehende Zeile beziehst, dann klappt das nicht.
Das meine ich jetzt nicht böse, aber du solltest deinen eigene Code schon verstehen. Ich würde dir empfehlen, erstmal ein paar Tutorials zum Thema Login/Benutzerverwaltung durchzuarbeiten.
Meine Vermutung: du hast keine Anmeldeseite und deshalb liest du die Benutzerdaten hart codiert aus deiner Tabelle raus...
Gruß,
Thomas
das kann ich dir nicht sagen. In deinem Code ist nicht erkennbar, woher deine Anmeldedaten kommen.
Wenn du dich damit auf die unten stehende Zeile beziehst, dann klappt das nicht.
$username = $user->username;
Das meine ich jetzt nicht böse, aber du solltest deinen eigene Code schon verstehen. Ich würde dir empfehlen, erstmal ein paar Tutorials zum Thema Login/Benutzerverwaltung durchzuarbeiten.
Meine Vermutung: du hast keine Anmeldeseite und deshalb liest du die Benutzerdaten hart codiert aus deiner Tabelle raus...
Gruß,
Thomas
Hi,
das macht es einfacher.
Um deine Frage zu beantworten:
Jetzt die Frage, wie bekomme ich es hin, dass ich mit nur dieser einen Schleife, jeiweils immer für den User, der eingeloggt ist die Daten ausgeben kann, ohne die Schleife 130 mal kopieren zu müssen.
keine Schleife notwendig.
Du hast nicht verstanden, wie der Programmcode funktioniert.
Im Zweifelsfrei immer Werte ausgeben und schauen was eigentlich drin steht. Ich habe ewig nicht mit PHP programmiert, falls da ein Syntaxfehler ist, kriegst du den hoffentlich behoben. :D
"Über diesen Codeblock wir der jeweils aktive bzw, angemeldete User geholt. und im Frontend ausgegeben."
Da hast du dir doch schon selbst die Antwort gegeben. ;)
Gruß,
Thomas
das macht es einfacher.
Um deine Frage zu beantworten:
Jetzt die Frage, wie bekomme ich es hin, dass ich mit nur dieser einen Schleife, jeiweils immer für den User, der eingeloggt ist die Daten ausgeben kann, ohne die Schleife 130 mal kopieren zu müssen.
echo "hello" . $user->name;
Du hast nicht verstanden, wie der Programmcode funktioniert.
Im Zweifelsfrei immer Werte ausgeben und schauen was eigentlich drin steht. Ich habe ewig nicht mit PHP programmiert, falls da ein Syntaxfehler ist, kriegst du den hoffentlich behoben. :D
"Über diesen Codeblock wir der jeweils aktive bzw, angemeldete User geholt. und im Frontend ausgegeben."
Da hast du dir doch schon selbst die Antwort gegeben. ;)
Gruß,
Thomas
Genau das hat Thomas dir mehrfach und ich dir einangs versucht zu erklären....
Da ein User nur einmal bestehen kann, erhälst du im SQL Query auch nur ein Result..
Und wenn du deine beiden Tabellen miteinander verknüpfst (INNER JOIN), dann brauchst du auch nur 1x ein Statement abfeuern und erhälst direkt alle erforderlichen Spalten!
So einfach ist das
Da ein User nur einmal bestehen kann, erhälst du im SQL Query auch nur ein Result..
Und wenn du deine beiden Tabellen miteinander verknüpfst (INNER JOIN), dann brauchst du auch nur 1x ein Statement abfeuern und erhälst direkt alle erforderlichen Spalten!
$strQry = "SELECT a.username, a.surname, a.lastname, b.welcomeText, b.extended Text FROM users as a INNER JOIN extendedInfos as b on a.username = b.username WHERE username=".$username;
$userdata = $pdo->query($strQry);
So einfach ist das