Daten aus 2 Tabellen ausgeben

BartTotal

Mitglied
Hallo

Ich stehe vor einem Problem dass ich mit hilfe von Google nicht lösen kann.
Und zwar möchte ich aus 2 Tabellen (pinnwand_comment und news_comment) ausgeben

Es soll am Schluss eine Tabelle geben wo der User sehen kann welcher beitrag von Ihm der letzte war egal ob bei der Pinnwand oder bei der News, diese sollen vermischt aufgelistet werden, sprich einfach die neueste zuerst.

Damit ich es stylen kann möchte ich das ganze mit Variablen machen.

Danke für eure Hilfe.

(Brauche glaub die komplete abfrage ansonsten kann ich mit meiner Erfahrung nix anfagen).
 
Hi,

wie sehen denn die beiden Tabellen aus, bzw. was ist das Datumsfeld und wie hängen diese mit dem Benutzer zusammen?

Grüße,
BK
 
Die Tabellen sehen wie folgt aus:

Pinnwand_comment:
ID - CONTENT - AUTOR - CREATE_DATE

News_comment
ID - CONTENT - AUTOR - CREATE_DATE

create_date wird mit Mktime gespeichert.
 
Deine Antwort betreffs der Benutzertabelle beantwortet nur nicht meine Frage.

Du brauchst jedenfalls irgendetwas in der Richtung, um eine Verbindung herstellen zu können.
Da du geschrieben hast, das es ein CMS ist wird es bestimmt eine Benutzertabelle geben.

Mangels genaueren Informationen gehe ich jetzt davon aus, dass in den beiden Kommentar Tabellen die Userid gespeichert wird,
die Benutzertabelle users heisst und folgenden Aufbau hat.
_______________________________
| id_user | username | ........ |
---------------------------------

Dann könntest du eine Abfrage stellen, die wie folgt aussieht

Code:
SELECT IF( p.ID IS NOT NULL, p.content, n.content ) AS cont,
       IF( p.ID IS NOT NULL, p.CREATE_DATE, n.CREATE_DATE ) AS cdate
   FROM users AS u
        INNER JOIN Pinnwand_comment AS p ON u.id_user = p.AUTOR
        INNER JOIN News_comment AS n ON u.id_user = n.AUTOR
     WHERE u.username = 'nutzername'
     ORDER BY cdate DESC

Den Query habe ich nicht getestet, kann daher noch Fehler enthalten, müsste aber funktionieren.
 
php-faq-und-haeufig-auftretende-fehlermeldungen

Wenn Du Dich an diese Vorgehensweise der Fehlerbeschreibung anlehnst bin ich sicher, das da auch mehr Antworten kommen. Bratkartoffel hat Dir ja schon was aus der Nase gezogen, aber das reicht nun mal nicht.

Es ist mühsam, wenn statt einer konkreten Frage mit Lösungsansatz, Quelltext und Fehlermeldungen nur so Sachen kommen wie: Brauche glaub die komplete abfrage...

Wovon denn? Zeig doch mal einen Dump der Tabellenstrukturen. Hast Du auch schon was versucht?

Zitate wie:
Benutzer werden mit $userdata[name] ausgegeben ist im CMS schon definiert.
Das vereinfacht schon sehr vieles

ist wohl höhere Dialektik...
 
Gab diese Meldung:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in/home/.sites/121/site6189746/web/version_2/index.php(61) : eval()'d code(1) : eval()'d code on line 9


Hab hier die DB:
Code:
-- phpMyAdmin SQL Dump
-- version 3.5.8.2
-- http://www.phpmyadmin.net
--
-- Host: mysqlsvr40.world4you.com
-- Erstellungszeit: 13. Feb 2015 um 19:04
-- Server Version: 5.5.39
-- PHP-Version: 5.3.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Datenbank: `6189746db2`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `iv_news_comment`
--

CREATE TABLE IF NOT EXISTS `iv_news_comment` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `news` int(10) unsigned NOT NULL,
  `content` text NOT NULL,
  `ip` varchar(15) NOT NULL,
  `autor` varchar(32) NOT NULL,
  `update_date` int(10) unsigned DEFAULT NULL,
  `update_by` int(10) unsigned DEFAULT NULL,
  `create_date` int(10) unsigned DEFAULT NULL,
  `create_by` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `news` (`news`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `iv_pinnwand_comment`
--

CREATE TABLE IF NOT EXISTS `iv_pinnwand_comment` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content_id` varchar(250) NOT NULL,
  `content` text NOT NULL,
  `autor` varchar(32) NOT NULL,
  `create_date` int(10) NOT NULL DEFAULT '0',
  `report` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=45 ;

--
-- Daten für Tabelle `iv_pinnwand_comment`
--

INSERT INTO `iv_pinnwand_comment` (`id`, `content_id`, `content`, `autor`, `create_date`, `report`) VALUES
(44, '58', '[b] test', 'BartTotal', 1423842269, 0),
(43, '58', '<img align="center" src="version_2/layout/v2/image/smileys/daumen_hoch.png" />  Ich sterbe es ist 04:42 Uhr <br>Ich bin nicht M&uuml;de, hab daf&uuml;r eine komplette Pinnwand gecodet<br>und den style dazu gemacht.<br>Und langsam weiss ich nicht mehr was ich machen soll <img align="center" src="version_2/layout/v2/image/smileys/lachen.png" />', 'BartTotal', 1423712582, 0),
(39, '61', 'MOD-Molly? ECHT? Cool das du hier bist. :P ', 'BartTotal', 1423701034, 0),
(40, '61', '<img align="center" src="version_2/layout/v2/image/smileys/erstaunt.png" />  ach ja molly warum hast mir den <b>PENIS</b> nicht gelutscht?', 'MOD-Molly', 1423702602, 0),
(41, '61', 'Achja ich hasse alle andern MODS! Darum kommst du immer in den Test-Post von mir vor <img align="center" src="version_2/layout/v2/image/smileys/lachen.png" />', 'BartTotal', 1423708661, 0),
(42, '61', '<img align="center" src="version_2/layout/v2/image/smileys/lachen.png" /> Jaja du elende Schlampe! wir hassen dich also damit mein ich Dreamwalker\n', 'BartTotal', 1423709960, 0);

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `iv_user_data`
--

CREATE TABLE IF NOT EXISTS `iv_user_data` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type` tinyint(4) NOT NULL,
  `name` varchar(32) NOT NULL,
  `pass` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `points` int(255) NOT NULL DEFAULT '0',
  `last_login` int(10) unsigned DEFAULT NULL,
  `last_refresh` int(10) unsigned DEFAULT NULL,
  `last_ip` varchar(15) DEFAULT NULL,
  `create_date` int(10) unsigned DEFAULT NULL,
  `create_by` int(10) unsigned DEFAULT NULL,
  `update_date` int(10) unsigned DEFAULT NULL,
  `update_by` int(10) unsigned DEFAULT NULL,
  `verifi_code` text NOT NULL,
  `verifi` varchar(2) NOT NULL DEFAULT '0',
  `pass_code` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `type` (`type`,`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Daten für Tabelle `iv_user_data`
--

INSERT INTO `iv_user_data` (`id`, `type`, `name`, `pass`, `email`, `points`, `last_login`, `last_refresh`, `last_ip`, `create_date`, `create_by`, `update_date`, `update_by`, `verifi_code`, `verifi`, `pass_code`) VALUES
(1, 7, 'BartTotal', '$1$dWoHcAQB$fHYAuQKPdvP1lJgnepCna1', 'support@habbogame.de', 3, 1423850510, NULL, '84.72.91.189', NULL, NULL, 1423850510, 1, '0', '1', '4'),
(2, 0, 'Habboname', '$1$lDo3yikD$pfL2zV07WC8TaDkl4hrdF0', 'Email (Muss bestätigt werden)', 20, NULL, NULL, NULL, 1423360061, 1, NULL, NULL, '83679', '0', ''),
(3, 3, 'Legofan13.', '$1$Bs3rO/VQ$WIIfFmEwCos8SDvE7psPB1', 'Legofan13@hotmail.com', 10, 1423588269, NULL, '78.48.87.125', 1423399972, 1, 1423588269, 1, '', '0', '');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
Dieser Code hier Funktioniert.
Das ein zigste ist, wenn der Nutzer nicht in der usertabelle (iv_user_data) steht, oder wenn der Name nicht passt (falsch in den Kommentar Tabellen ist).
Dann kann auch nichts angezeigt werden.

Code:
SELECT IF( p.id IS NOT NULL, p.content, IF( n.id IS NOT NULL, n.content, '' ) ) AS cont,
       IF( p.id IS NOT NULL, p.CREATE_DATE, IF( n.id IS NOT NULL, n.CREATE_DATE, '' ) ) AS cdate
   FROM iv_user_data AS u
        LEFT JOIN iv_pinnwand_comment AS p ON u.name = p.autor
        LEFT JOIN iv_news_comment AS n ON u.name = n.autor
     WHERE u.name = '<username>'
   ORDER BY cdate DESC
 
Zurück