php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.04.2005, 18:14  
Gast
 
Beiträge: n/a
Standard Problem beim Joinen

Ich programmiere zurzeit ein kleines Forum, dabei stocke ich aber schon relativ am Anfang. Ich habe erstmal die beiden Tabellen:

kategorie:
kategorieid
kategoriename
...

forum:
forumid
forumname
kategorieid

Ich will nun, dass alle Foren ausgegeben werden, wo kategorie.kategorieid = forum.kategorieid. Aber wenn ich

PHP-Code:
<?php
$sql 
"SELECT * FROM forum,kategorie WHERE forum.kategorieid = kategorie.kategorieid";
?>
eingebe, dann klappt es irgendwie nicht. Außerdem weiß ich, dass man kein "*" benutzen sollte, aber die Tabelle forum hat ca. 15 Einträge, ich wollte hier nicht alles durcheinander bringen.

Aber was muss ich nun eingeben. Wenn ich das obige eingebe, zeigt er mir einen MySQL Fehler mit WHERE an. Und wie muss ich das ausgeben?

PHP-Code:
<?php
//Mit while-Schleife
$row = while(mysql_fetch_assoc($result))
{
    ...
}

//oder ohne
$row mysql_fetch_assoc($result);

?>
Please help me!
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.04.2005, 18:22  
Gast
 
Beiträge: n/a
Standard

bin zwar nicht lange im geschäft
was ich aber ganz "eindeutig" gelernt habe ist:
verwende nie "SELECT * FROM"
sondern nur die nötigen felder selektieren!
 
Alt 26.04.2005, 18:23  
Gast
 
Beiträge: n/a
Standard

Und guck mal was ich darunter geschrieben habe...
 
Alt 26.04.2005, 18:24  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

versuch mal
$sql = "SELECT * FROM forum LEFT JOIN kategorie ON forum.kategorieid = kategorie.kategorieid";

soweit ich das so kurz vor feierabend noch richtig verstehe :P
robo47 ist offline  
Alt 26.04.2005, 18:25  
Gast
 
Beiträge: n/a
Standard

oops sorry..
meine glocken haben halt schon an der stelle geläutet...
 
Alt 26.04.2005, 18:34  
Gast
 
Beiträge: n/a
Standard

Komisch, wenn ich jetzt

PHP-Code:
<?php
$sql 
"SELECT * FROM forum LEFT JOIN kategorie ON forum.kategorieid = kategorie.kategorieid"
$result mysql_query($sql) or die (conn_error());
$row mysql_fetch_assoc($result);
    echo 
$row['kategoriename'];
?>
eingegebe, kommt nichts. "conn_error" ist eine selbsterstellt Fehlermeldung :wink:
 
Alt 26.04.2005, 21:37  
Erfahrener Benutzer
 
Registriert seit: 01.08.2004
Beiträge: 113
Kofi
Kofi eine Nachricht über ICQ schicken
Standard

Vorweg: Ich kann nicht so viel SQL, darum verstehe den Befehl von robo47 nicht.

Allerdings sehe ich glaube ich einen Deckfehler bei deinem Code:

PHP-Code:
<?php 
$sql 
"SELECT * FROM forum,kategorie WHERE forum.kategorieid = kategorie.kategorieid"
?>
kategorie.kategorieid ist ja eine Spalte. Das bedeutet, sie hat im Normalfall mehrere Einträge. Du kannst aber ja nicht einfach eine ganze Spalte auf Überschneiden mit einer anderen Prüfen, sondern kannst nur sagen, dass du die Felder selektieren möchtest, die gleich wie ein anderes FELD sind.

Also:

PHP-Code:
<?php 
$ressource 
mysql_query("SELECT kategorieid FROM kategorie");
while(
$zelle mysql_fetch_array($ressource))
{
   
$kategorieid $zelle["kategorieid"];
   
$ressource2 mysql_query("SELECT * FROM forum WHERE kategorieid = $kategorieid");
   
/* Verwertung */
}
?>
Du bekommst halt nacheinander für alle KategorieIDs die Einträge im Forum, die darauf matchen.

Vielleicht hab ich auch einfach alles nur falsch verstanden.
Kofi ist offline  
Alt 26.04.2005, 21:47  
Gast
 
Beiträge: n/a
Standard

Ich werde es mal ausprobieren, thx
 
Alt 27.04.2005, 10:03  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard Re: Problem beim Joinen

Zitat:
Zitat von Ma-Ju
Wenn ich das obige eingebe, zeigt er mir einen MySQL Fehler mit WHERE an. Und wie muss ich das ausgeben?
Und wo ist die genaue Fehlermeldung? Ich meine die Ausgabe von mysql_error(). Syntaktisch ist die Abfrage korrekt, wenn auch diejenige von robo besser ist,

@KOFI
Wenn du so wenig Ahnung hast von SQL, dann solltest du dich zuerst etwas damit befassen, bevor du so einen Schrott schreibst.
__________________
Gruss
L
lazydog ist offline  
Alt 27.04.2005, 16:15  
Gast
 
Beiträge: n/a
Standard

Komisch, jetzt zeigt er mir kein Fehler mehr mit WHERE an, aber ich habe ein anderes Problem.

Hier ersmal meine Dateien:

PHP-Code:
<?php
//functions.php

funtion conn()
{
    
$host "localhost";
    
$user "root";
    
$pass "";
    
$db "forum";

@
mysql_connect($localhost,$user,$root) or die (mysql_error());
mysql_select_db($db) or die (mysql_error());
?>
PHP-Code:
<?php
//main.php
require "functions.php";
conn();
?>

<html>
<head>
    <meta name="Content-Type" type="text/html" charset="ISO-8859-1">
    <title>Forumtitel</title>
</head>
<body>
<?php
$sql 
"SELECT * FROM kategorie,forum WHERE kategorie.kategorieid = forum.kategorieid";
$result mysql_query($sql) or die (mysql_error());
$row mysql_fetch_assoc($result);
    echo 
$row['kategoriename'];
?>
</body>
</html>
Ich habe folgende Datenbanken(ich habe nicht alle Tabellen hier reingeschrieben)

Code:
//kategorie

kategorieid
kategoriename
kategoriestatus
kategoriedatum

//Einträge:2

kategorieid:6
kategoriename:GamesArea

kategorieid:7
kategoriename:Funmeile
Code:
//forum

forumid
forumname
forumstatus
forumdatum
kategorieid

//Einträge: 2

forumid:1
forumname:kA
kategorieid:6

forumid:2
forumname:kA
kategorieid:7
Als Ausgabe des ganzen bekomme ich allerdings nur

Code:
GamesArea
 
 


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
problem beim mehrfachen joinen einer tabelle und count() PHS Datenbanken 3 03.08.2006 16:49
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 09:57 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.