Seite 1 von 1
code fehler oder ich sehe dann Wald vor lauter Bäumen nicht
Verfasst: Mi 15. Mär 2006, 22:32
von Beleuchtfix
Ich versuche gerade eine mysql Abfrage zu schreiben.
der code sieht so aus:
Code: Alles auswählen
$query = "SELECT LAY.name, TEMPLATE.name FROM ".
$cfg["tab"]["template"]." AS TEMPLATE, ".
$cfg["tab"]["lay"]." AS LAY, ".
"WHERE LAY.idlay = TEMPLATE.idlay ".
"AND TEMPLATE.idclient =1 ".
"ORDER BY LAY.name , TEMPLATE.name ";
bei echo"$query" bekomme ich folgendes Ergebnis:
Code: Alles auswählen
SELECT LAY.name, TEMPLATE.name FROM AS TEMPLATE, con_lay AS LAY, WHERE LAY.idlay = TEMPLATE.idlay AND TEMPLATE.idclient =1 ORDER BY LAY.name , TEMPLATE.name
Der Fehler liegt hinter dem
FROM
als das erste Ma wird die "Vorsilbe" nicht übernommen.
Was mache ich falsch?
Gruß
Florian
Re: code fehler oder ich sehe dann Wald vor lauter Bäumen ni
Verfasst: Mi 15. Mär 2006, 22:51
von mvf
schon mal ohne komma probiert
->
*********************
EDIT:
man sollte genau lesen
aber die query sieht eigentlich ok aus
versuch mal
Code: Alles auswählen
$query = "SELECT
LAYOUT.name
,TEMPLATE.name
FROM
" . $cfg["tab"]["lay"] . " AS LAYOUT
," . $cfg["tab"]["template"] . " AS TEMPLATE
WHERE
LAY.idlay = TEMPLATE.idlay
AND TEMPLATE.idclient = 1
ORDER BY
LAY.name
,TEMPLATE.name ";
Verfasst: Do 16. Mär 2006, 09:40
von emergence
Verfasst: Do 16. Mär 2006, 11:32
von Beleuchtfix
emergence du hast wie immer recht. Jetzt habe ich auch herausgefunden, warum

Das die Tabellenvariable anders genannt wird, als die Tabelle, ist schon ein fieser Trick.
Soweit ich herausgefunden habe trifft das nur auf die Tabellen
_template (alias
tpl)und
_frame_files zu, die nur
framefiles heißt.
Danke
Florian
Verfasst: Do 16. Mär 2006, 11:44
von Beleuchtfix
@mfv: Das Komma war natürlich auch falsch, hat aber keine Fehlermeldung prodziert, weil schon vorher die Abfrage abbrach.
Gruß
Florian Behrendt
Verfasst: Do 16. Mär 2006, 11:59
von Beleuchtfix
Jetzt habe ich noch eine Frage:
Wie kann ich bei der Rückgabe der MySQL Werte die Tabelle bestimmen. Der Wert Name kommt in Lay und template vor, und ich brauche auch beide
$xyz = .$db->f("LAY.name") geht nicht.
Verfasst: Do 16. Mär 2006, 12:13
von emergence
einmal LAY und ansonsten LAYOUT ?
du musst dich schon für was entscheiden...
ich nehm jetzt mal LAYOUT...
ist nicht getestet
Code: Alles auswählen
$query = "SELECT
LAYOUT.name,
TEMPLATE.name
FROM
" . $cfg["tab"]["lay"] . " AS LAYOUT,
" . $cfg["tab"]["tpl"] . " AS TEMPLATE
WHERE
LAYOUT.idlay = TEMPLATE.idlay AND
TEMPLATE.idclient = '1'
ORDER BY
LAYOUT.name,
TEMPLATE.name";
$db->query($query);
$db->next_record();
echo $db->f('LAYOUT.name');
Verfasst: Do 16. Mär 2006, 12:36
von Beleuchtfix
Also die Entscheidung war schon zwischendurch richtig gefallen
ist immer leer
ebenso
während
den Namen des Templates ausgibt.

Verfasst: Do 16. Mär 2006, 12:42
von emergence
bei mir geht das query anstandslos.. wäre aber auch möglich das es von mysql version abhängt...
folgendes müsste auch gehen...
Code: Alles auswählen
$query = "SELECT
LAYOUT.name as lname,
TEMPLATE.name as tname
FROM
" . $cfg["tab"]["lay"] . " AS LAYOUT,
" . $cfg["tab"]["tpl"] . " AS TEMPLATE
WHERE
LAYOUT.idlay = TEMPLATE.idlay AND
TEMPLATE.idclient = '1'
ORDER BY
LAYOUT.name,
TEMPLATE.name";
$db->query($query);
while ($db->next_record()) {
echo $db->f('lname')." - ".$db->f('tname')."<br>";
}
folgendes müsste auch gehen...
Code: Alles auswählen
$query = "SELECT
LAYOUT.name,
TEMPLATE.name
FROM
" . $cfg["tab"]["lay"] . " AS LAYOUT,
" . $cfg["tab"]["tpl"] . " AS TEMPLATE
WHERE
LAYOUT.idlay = TEMPLATE.idlay AND
TEMPLATE.idclient = '1'
ORDER BY
LAYOUT.name,
TEMPLATE.name";
$db->query($query);
while ($db->next_record()) {
echo $db->f(0)." - ".$db->f(1)."<br>";
}
Verfasst: Do 16. Mär 2006, 13:11
von Beleuchtfix
Danke, das wars, beider Versionen klappen
Das ganze geht darum, ein Modul zu erstellen, das anzeigt, welche Layouts von welchen Templates benutzt werden, und dann kommt noch die Zuoordnung von Modulen zu Templates und Kategorien bzw. Artikeln zu Templates.
Aber erst jetzt lohnt es sich weiter zu machen.
Gruß
Florian
Verfasst: Do 16. Mär 2006, 13:21
von stese
vll. hilft dir das da weiter:
http://contenido.org/forum/viewtopic.php?p=66153#66153
das ist ein modul, was alle verwendeten layouts und module herausfiltert - das kann man recht leicht dazu ausbauen auch die namen der templates zu nutzen ...
Verfasst: Do 16. Mär 2006, 16:02
von Beleuchtfix
@steese
ich schaus mir am Wochenende noch einmal in Ruhe an. Steckt mehr drinn, als im ersten Moment vermutet

, denn die ganzen MySQL Abfragen sind schon da.
Gruß
Florian