php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.01.2005, 16:38  
Gast
 
Beiträge: n/a
Standard Problem mit Tabellenverknüpfung

Hi,

ich bin dabei ein kleines Forum zu proggen. Meine Tabellen sehen so aus:

Zitat:
forums:

forum
title
status
id


threads:

author
title
message
date
status
forum_id
id


topics:

author
title
message
date
thread_id
id

Ich möchte jetzt die Anzahl aller Threads und Antworten zu den Threads eines bestimmten Forums holen. Nur mit den Threads klappt es schon:
PHP-Code:
<?
$replies 
= new Database;
        
$replies->connect($cfg['db']['forum']);
        
$sql "SELECT {$cfg['db_threads']}.author, DATE_FORMAT({$cfg['db_threads']}.date, '%d.%m.%Y, %H:%i') AS date_thread, {$cfg['db_threads']}.id FROM {$cfg['db_threads']} WHERE {$cfg['db_threads']}.forum_id = '".$forum_id."'";

        
$replies->send_query($sql .= ";");
        if(
$replies->error())
        {
            echo 
$replies->getError();
        }
        
$num_posts $replies->numRows();
?>
Da gibt er mir die richtig Zahl aus. Hab für die Antworten mal versucht:

- Autor, Datum, thread_id holen
- in der WHERE Bedingung noch "OR {$cfg['db_replies']}.thread_id = '{$cfg['db_threads']}.id'

Mit AND statt OR, ist num_rows = 0.

Kann mir einer helfen? Mit JOIN komm ich irgendwie gar net zurecht.

mfg koelle
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.01.2005, 16:55  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Verarbeitest du die Ergebnisse auch weiter? Wenn nciht, solltest du nicht so einen komschen Query machen, sondern in einem MySQL-Handbuch mal "COUNT" nachschlagen.

Wenn du mt JOIN nicht zurecht kommst, slltest du es lernen Stell dir einfach vor, du hast zwei Tabellen und willst eine daraus machen, schon hast du OIN verstanden. Alles klar?
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 06.01.2005, 16:59  
Gast
 
Beiträge: n/a
Standard

Hi,

ja ich will die Daten noch verarbeiten. Will danach noch den letzten Eintrag herausholen.

Soll ein "Letzer Beitrag" werden. Wie kann ich denn das Datum aus der Tabelle holen, welches am neuesten ist?? Die Spalten sind als DATETIME formatiert.

mfg koelle
 
Alt 06.01.2005, 17:01  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

ORDER BY Spalte [DESC | ASC] LIMIT 1, 0
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 06.01.2005, 17:23  
Gast
 
Beiträge: n/a
Standard

Hey,

ich brauch doch noch Hilfe. Hier hab ich was versucht:
PHP-Code:
<?
$replies 
= new Database;
$replies->connect($cfg['db']['forum']);
$sql "SELECT 
                  {$cfg['db_threads']}.author,
                  DATE_FORMAT({$cfg['db_threads']}.date, '%d.%m.%Y, %H:%i') AS date_thread, 
                  {$cfg['db_threads']}.id,
                 {$cfg['db_replies']}.author, 
                 DATE_FORMAT({$cfg['db_replies']}.date, '%d.%m.%Y, %H:%i') AS date_reply, 
                 {$cfg['db_replies']}.thread_id
          FROM
                {$cfg['db_threads']}
          LEFT OUTER JOIN
                 {$cfg['db_replies']} 
         ON 
                 {$cfg['db_replies']}.thread_id = '{$cfg['db_threads']}.id' 
         WHERE
               {$cfg['db_threads']}.forum_id = '"
.$forum_id."'";

$replies->send_query($sql .= ";");
if(
$replies->error())
{
    echo 
$replies->getError();
}
$num_posts $replies->numRows();
?>
Es müsste 2 rauskommen. (ich hab 1 Thread in forum1 und 1 antwort zu thread1)

Es kommt aber 1 raus. Hilfe. Meine Idee ist zuerst die ganzen Daten (Autor, Datum, Thread id, ) zu holen, die Tabellen Threads und Replies über die thread_id (in replies gespeichert) tu joinen und dann noch die Bedingung nur die Threads, die zu dem Forum gehören.

Was muss ich ändern?
 
Alt 06.01.2005, 17:59  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Es kommt eins raus. Weil es EINE Ergebniszeile ist. Hast du zwei Antworten kommt auch zwei raus. hast du 0 Antworten (was aufgrund des ersten initialen Beitrages eigentlich unmöglich sein sollte) kommt ebenfalls eins raus.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 06.01.2005, 18:07  
Gast
 
Beiträge: n/a
Standard

Hi,

er liest nur die Threads aus, nicht aber die Antworten. Bitte gib mir ein Beispiel wie ich es schaffe auch noch die Antworten zu bekommen...

mfg koelle
 
Alt 06.01.2005, 18:09  
Gast
 
Beiträge: n/a
Standard

Hi,

ich weiß woran es liegt:
PHP-Code:
<?
 
{$cfg['db_replies']}.thread_id '{$cfg['db_threads']}.id' 
?>
Da kennt er {$cfg['db_threads']}.id net.. wenn ich ne zahl einsetze gehts....
 
Alt 06.01.2005, 18:20  
Gast
 
Beiträge: n/a
Standard

Warum verwendest Du beim JOIN kein Alias? Dein Quelltext wäre zumindest lesbarer...
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.