Beiträge eines Benutzers auslesen
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 19.12.2008 - 15:39 Uhr in
Hallo Leute
Folgendes Problem:
Ich möchte einen Bilderwettbewerb für User machen. Das heisst die User können Bilder hochladen und sich gegenseitig bewerten. Zuerst habe ich einen Inhaltstyp mit CCK erstellt. Nun möchte ich, dass auf einer zweiten Seite, oben die Bilder angezeigt werden, die der angemeldete User mit dem erstellten Inhaltstyp hochgeladen hat, und unten die anderen Wettbewerb-Bilder.
Jetzt ist die Frage, wie ich auf die Beiträge der User zugreifen kann. Gibt es da eine bestimmte Variable?
Ich hoffe jemand kann mir helfen.
Gruss
LuNa
- Anmelden oder Registrieren um Kommentare zu schreiben
VIEWS ist Dein Freund ...
am 19.12.2008 - 16:17 Uhr
VIEWS ist Dein Freund ... und um explizit auf DEN User zuzugreifen, ist das Argument "Benutzer: Uid" richtig Dein Freund!
Wichtig ist nur unter: "Default argument type" "User ID from logged in user" zu wählen!
-------------------------------------
Öfter mal was neues ... warum nicht mal DRUPAL :-) Meinen "Drupal Kampf" als Anfänger schildere ich mal unter http://www.thoor.de
Es ist klar, dass View
am 06.01.2009 - 08:18 Uhr
Es ist klar, dass View dafür genau das Richtige ist. aber ich wollte eigentlich selbst eine Funktion erstellen, die diese Abfage macht, damit ich später mit dem Ergebniss besser arbeiten kann.
Kann mir niemand sagen wie ich bestimmte Beiträge des angemeldeten Users auslesen kann?
Also wenn du eher der
am 06.01.2009 - 09:59 Uhr
Also wenn du eher der Programmierer bist, dann wirste hier glücklich d6-api.drupal.org . Falls Dir das nicht hilft, dann solltest du doch lieber Views nehmen.
----------------------------------------
Alle Angaben ohne Gewähr!!:D
http://www.tobiasbaehr.de/
Nutzerbeiträge
am 06.01.2009 - 12:32 Uhr
Moin!
<?php
function getUserNodes($uid) {
$result = db_query('SELECT n.* FROM {node} n WHERE n.uid = %d', $uid);
$nodes = array();
while ($nd = db_fetch_object($result)) {
$nodes[$nd->nid] = $nd;
}
return $nodes;
}
function getNodes() {
global $user;
$usernodes = getUserNodes($user->uid); // alternativ auch mit anderer uid
// Jetzt kannst Du die Liste durchlaufen und notfalls auch noch das gesamte Objekt mit node_load() laden.
foreach ($usernodes as $nid => $usernode) {
// ...
}
}
?>
Nur so als Ansatz...
hth,
Stefan
Super Stefan, danke, du hast
am 15.01.2009 - 11:32 Uhr
Super Stefan, danke, du hast mir sehr geholfen. Nur diesen Teil verstehe ich nicht ganz:
('SELECT n.* FROM {node} n WHERE n.uid = %d', $uid)
Könntest du mir nicht kurz erkären was du hier genau machst? wofür stehen die "n"?
Leider kenne ich mich mit SQL nicht so gut aus :(
Mlg LuNa
n ist ein Alias für node.
am 15.01.2009 - 11:40 Uhr
n ist ein Alias für node. Somit wird aus node.uid ein n.uid.
----------------------------------------
http://tobiasbaehr.de/
SQL
am 15.01.2009 - 13:23 Uhr
Hallo.
('SELECT n.* FROM {node} n WHERE n.uid = %d', $uid)
Könntest du mir nicht kurz erkären was du hier genau machst? wofür stehen die "n"?
Du kannst bei SQL Aliase für verwendete Tabellen vergeben (bei jeder Abfrage neu, also nicht global). In diesem Fall sage ich dem System, dass ich für die Tabelle node den Alias n verwenden möchte. Das hat besonders bei Drupal einen entscheidenden Vorteil: da man nicht weiss, wie die Tabelle beim installierten System wirklich heisst, hat man den Alias zur Verfügung. Ohne Alias könnte die Abfrage
SELECT node.* FROM {node} WHERE node.uid = %d
lauten.Dies führt jedoch zu SQL-Fehlern, wenn bei der Installation von Drupal ein Tabellenpräfix angegeben wurde. In diesem Fall heisst die Tabelle dann nämlich nicht mehr "node", sondern "_node". Durch den Alias umgeht man dieses Problem. Drupal (speziell die Funktion db_query) ersetzt nämlich "{node}" durch den wirklichen Tabellennamen.
hth,
Stefan