code fehler oder ich sehe dann Wald vor lauter Bäumen nicht

Gesperrt
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

code fehler oder ich sehe dann Wald vor lauter Bäumen nicht

Beitrag 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
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Re: code fehler oder ich sehe dann Wald vor lauter Bäumen ni

Beitrag von mvf »

schon mal ohne komma probiert

Code: Alles auswählen

                    $cfg["tab"]["lay"]." AS LAY, ".
->

Code: Alles auswählen

                    $cfg["tab"]["lay"]." AS LAY ".

*********************
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 ";
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ähm, nicht

Code: Alles auswählen

$cfg["tab"]["template"]
sondern

Code: Alles auswählen

$cfg["tab"]["tpl"]
*** make your own tools (wishlist :: thx)
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

emergence du hast wie immer recht. Jetzt habe ich auch herausgefunden, warum :lol: 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
Zuletzt geändert von Beleuchtfix am Do 16. Mär 2006, 12:06, insgesamt 1-mal geändert.
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

@mfv: Das Komma war natürlich auch falsch, hat aber keine Fehlermeldung prodziert, weil schon vorher die Abfrage abbrach.

Gruß
Florian Behrendt
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag 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.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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');
*** make your own tools (wishlist :: thx)
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Also die Entscheidung war schon zwischendurch richtig gefallen :wink:

Code: Alles auswählen

echo $db->f('LAYOUT.name');
ist immer leer
ebenso

Code: Alles auswählen

echo $db->f("LAYOUT.name");
während

Code: Alles auswählen

echo $db->f('name');
den Namen des Templates ausgibt.
:?: :?:
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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>";
}
*** make your own tools (wishlist :: thx)
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag 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
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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 ...
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

@steese
ich schaus mir am Wochenende noch einmal in Ruhe an. Steckt mehr drinn, als im ersten Moment vermutet :wink: , denn die ganzen MySQL Abfragen sind schon da.
Gruß
Florian
Gesperrt