Seite 1 von 1

Scheitern an einfacher DB_abfrage

Verfasst: Di 31. Mai 2005, 09:54
von JCG
Hallo zusammen,
ich weiss zu meiner Frage gib es ein Tutorial und auch einige Fragen schon im Forum, aber ich komme trozdem nicht weiter.
Ich möchte einfach eine kleine Vorschau des neusten Artikels einer Kategorie haben, mit einem wordwrapper der eben nur 150 Zeichen etc . ausgibt und einem "weiter" link o.ä. .
Hört sich auch für mich simpel an, aber ich muss gestehen ich scheitere schon an der sql-syntax. Dabei soll das ganze nur einfach ohne einstellungen im Backend gehen.
Würde ich das ganze ausserhalb von contenido machen sähe es wahrscheinlich so o.ä. aus:

Code: Alles auswählen

$abfrage = mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT 1");
$show = mysql_fetch_assoc($abfrage);
$datum=$show[date];
$text=$show[content];
$id=$show[newsid];
Könnte villeicht jemand so freundlich sein und mir anhand meines benötigten Beispiels "das" nochmals erklären? Ich weiss ich bin schwer von Begriff, aber mit dem Tutorial komme ich nicht weiter bzw. ich weis nicht wie die SQL-Abfrage bei mir aussehen muss.
Danke im Vorraus
Chris

Verfasst: Di 31. Mai 2005, 11:31
von emergence
hmm... eine tabelle news gibts in contenido nicht...

ad. db klasse
schon gelesen ?
-> http://contenido.org/forum/viewtopic.php?p=34783#34783

Verfasst: Di 31. Mai 2005, 13:00
von JCG
Ja leider schon gelesen, ich glaube da liegen auch die Hauptpunkte meines Verständnisproblmes.

Code: Alles auswählen

$sql = "SELECT 
                       CAT.idcat AS idcat, 
                       name 
                    FROM 
                       ".$cfg["tab"]["cat"]." AS CAT, 
                       ".$cfg["tab"]["cat_lang"]." AS CATLANG 
                    WHERE 
                       CAT.idcat = ".$val." 
                       AND CAT.idcat = CATLANG.idcat 
                       AND CATLANG.idlang = '$lang' 
                       AND CATLANG.visible = '1'"; 

            $db->query($sql);
A.idcat AS idcat hat den hintergrund das das feld nicht den bezeichner A.idcat hat sondern nur mittels idcat angesprochen werden kann...

nun gut warum hat name das nicht ?
weil name innerhalb der beiden tabellen nur einmal vorkommt ! und somit ist es eindeutig...
idcat kommt sowohl in der ersten tabelle A als auch in der zweiten tabelle B vor
selektiert werden soll der wert von der ersten tabelle... (
Ok ich weiss das wir hier die Felder bestimmen die ausgelesen werden sollen, aber was das genau mit dem A.idact AS idact soll ist mir nicht klar.
Wenn ich jetzt zum Besipiel in meiner Hauptnavigation einen Punkt news habe, möchte ich einerseits den Titel dieser kategorie(also News) sowie den text des zuletzt eingestellten Artikels und seine id.
FROM
".$cfg["tab"]["cat"]." AS A,
".$cfg["tab"]["cat_lang"]." AS B
Ok mir ist klar das hier die tabllen ausgewählt werden aber was effektiv hier steht ist für mich unklar bzw. was ich schreiben müsste.
WHERE
A.idcat = ".$val."
AND A.idcat = B.idcat
AND B.idlang = '$lang'
AND B.visible = '1'";
Ok hier sieht es schon wieder besser aus. Übergabe des Wertes von $val als idcat.
AND A.idcat = B.idcat
ok die prinzipielle syntax davon ist klar wieso das hier steht leider nicht.
Ok der rest halt welche sprache und ob online oder nicht.

Ich hoffe mein Problem ist etwas klarer geworden.
Habe mir auch die einzelnen Tabellen schon angeshen und versucht zu vertsehen, was ich da falsch mache, leider ohne erfolg sonst wäre ich nicht hier. Hoffe jemand kann mir weiterhelfen....

Verfasst: Di 31. Mai 2005, 13:12
von MichFress
ein bisserl lesen auf www.mysql.com würde sicherlich helfen.. ,-)

Code: Alles auswählen

FROM
  tabelle1 AS A,
  tabelle2 AS B
Wenn man in einer SQL-Abfrage mit mehreren Tabellen arbeitet, muß man diese auseinander halten. A.spalte1 steht dann für die Spalte "spalte1" der "tabelle1".

Code: Alles auswählen

WHERE
A.idcat = ".$val." 
ist keine Werteübergabe, sondern es werden nur die Einträge aus der Tabelle geholt, bei denen das Feld "idcat" der Tabelle "A" gleich $val sind.


hthh,
mF

Verfasst: Di 31. Mai 2005, 13:22
von JCG
ist keine Werteübergabe, sondern es werden nur die Einträge aus der Tabelle geholt, bei denen das Feld "idcat" der Tabelle "A" gleich $val sind.
Das hatte ich gemeint falsch ausgedrückt.
ICh hoffe ich setzte mcih mit der nächsten Frage nicht wieder iin die Brennesseln :?
Woher wei ich denn welche id meine kategorie hat, ich konnte in den tabellen keinen hinweis finden wo sthet das eine meiner kategorien news heist und welche id sie hat weill dann könnte ich sie direkt ansprechen oder habe ich da immer noch einen denkfehler?

Verfasst: Di 31. Mai 2005, 13:57
von MichFress
Tipp:
http://www.thilo-sommer.de/PHPMyFAQ/ind ... 74&lang=de

und phpmyadmin deiner Datenbank