Listview predefinedSQL

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Listview predefinedSQL

Beitragvon blickfang » Do 25. Mär 2010, 09:45

Hallo,

also ganz egal was ich dem sql Statement mitgebe, ich kriege keine Feldwerte ausgegeben. Wo ist das Attribut denn dokumentiert? In der Tagreferenz kann ich das nicht finden, lediglich als Ankündigung in der Version 6.0.0.5. Das Beispiel unter http://qa.webedition.de/tracker/view.php?id=3650 läßt die Vermutung zu, das es das Attribute wirklich gibt.

Müssen alle Felder die ausgegebenw erden wollen mi Feldname as we_feldname abgeholt werden? Oder geht auch * => bei mir allerdings nicht?

Kann mir hierzu jemand weiterhlefen?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Jörn-Bernd
Member
Beiträge: 88
Registriert: Do 27. Nov 2008, 23:21

Re: Listview predefinedSQL

Beitragvon Jörn-Bernd » Fr 26. Mär 2010, 12:47

Sag uns doch, was du genau machen möchtest bzw. brauchst.

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview predefinedSQL

Beitragvon blickfang » Fr 26. Mär 2010, 18:58

eigentlich möchte ich ein Select mit <option> Einträgen dynamisch füllen. Die Options sollen aus den Objekten ausgelesen werden.
Da die Condition meiner Ansicht nach nicht mit webEdition abgebildet werden kann, dachte ich, ich bediene mich des predefinedSQL.

Mein Statement:

Code: Alles auswählen

<?php
$conditionID = array(...);
$sql = "SELECT ID AS we_serviceID, input_serviceDescription as we_serviceDescription FROM we_tblobject_3 WHERE OF_ID NOT IN (" . implode(",",$conditionID) . ") order by input_serviceDescription";					
?>

<select name="we_ui_serviceForm[calculationForm]">
  <we:listview type="object" name="service" classid="3" predefinedSQL="\$sql" offset="0">
	<we:repeat>
		<option value="<we:field name="serviceID" />"><we:field name="serviceDescription" /></option>
	</we:repeat>
  </we:listview>	
</select>
In den we:fields stehen aber keine Werte. Über diesen Weg könnten man dann laut Beispiel (siehe Link oben) auch INNERJOINS von Objekten abbilden.
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Jörn-Bernd
Member
Beiträge: 88
Registriert: Do 27. Nov 2008, 23:21

Re: Listview predefinedSQL

Beitragvon Jörn-Bernd » Fr 26. Mär 2010, 22:05

Da kann ich auf jeden Fall nicht helfen! Tut mir leid.

Sonst jemand?

Sophia
Member
Beiträge: 62
Registriert: Mo 4. Mai 2009, 22:56

Re: Listview predefinedSQL

Beitragvon Sophia » Sa 27. Mär 2010, 01:47

naja, du hast doch schon den query (ist allerdings fehlerhaft!!) - dann brauchst du die listview ja nicht mehr, stattdessen:
im ersten Schritt erstmal den Query korrigieren, am besten erstmal select * from tblObject_3 (ohne we_ vorweg und Object groß!!!!) ...
dann direkt ausgeben:
$sql="select * from tblObject_3 ... where OF_published > 0" // keine geparkten..
$result = mysql_query( $sql);

while($row = mysql_fetch_assoc($result)) {
hier das select füllen mit $row['input_serviceDescription'] etc. oder
erstmal mit p_r($row) alle Felder anzeigen lassen, damit man sie richtig anspricht
}

wahrscheinlich willst du auch nicht die ID, sondern OF_ID

LG Sophia

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview predefinedSQL

Beitragvon blickfang » So 28. Mär 2010, 19:17

...über sql ist mir das schon klar...sorry für das nich ganz orrekte sql statement...

Mich interessiert ja aber das Attribut "predefinedSQL"! Für was gibt es das dann, wenn ich es dann dennoch komplett mit sql machen muss? Weiß da niemand etwas drüber?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

we:willRockYou
Senior Member
Beiträge: 919
Registriert: Fr 22. Mai 2009, 21:40
Wohnort: Berlin
Kontaktdaten:

Re: Listview predefinedSQL

Beitragvon we:willRockYou » Mo 29. Mär 2010, 09:19

Ich habs nicht ausprobiert, da bisher nie gebraucht. Aber ich denke es besteht die Möglichkeit, dass wenn der Query korrekt ist, es auch mit dem Attribut predefinedSQL funktioniert. :-)

Wenn es bei Dir aber nur um die Condition geht, die kannst Du ja auch ohne predefinedSQL selbst erzeugen.

Code: Alles auswählen

<?php
   $where="OF_ID NOT IN (" . implode(",",$conditionID) . ")";
?>
<we:listview type="object" name="service" classid="3" condition="\$where" offset="0">
EOF; //totally retired

we:willRockYou
Senior Member
Beiträge: 919
Registriert: Fr 22. Mai 2009, 21:40
Wohnort: Berlin
Kontaktdaten:

Re: Listview predefinedSQL

Beitragvon we:willRockYou » Sa 5. Feb 2011, 16:37

OK, nach ECHT langem Rumprobieren habe ich den Parameter nun endlich zum laufen bekommen. Damit der Nächste nicht auch 90 Minuten nach der Lösung suchen muss:

Damit im Listview die we:field-Tags funktionieren, muss zwingend ein Feld OF_ID im Query enthalten sein! Sonst bekommt man keinerlei Ausgabe hin, obwohl alle Werte erfolgreich aus der DB geholt wurden. Was in dem OF_ID drin steht ist hingegen mistegal! Es reicht also ein SELECT 1 AS OF_ID...

Des weiteren muss jedem Feldnamen ein we_ vorangestellt werden.

Übrigens enthält jede Objekt-Tabelle einen leeren Eintrag, den müsst Ihr noch filtern.

Hier ein kleines Beispiel:

Code: Alles auswählen

SELECT
   1 AS OF_ID,
   input_Jahr AS we_Jahr
FROM
   tblObject_42
WHERE
   input_Jahr!=""
GROUP BY
   input_Jahr
ORDER BY
   input_Jahr

Code: Alles auswählen

<we:listview type="object" predefinedSQL="\$query">
   <we:repeat>
      -<we:field name="Jahr" /><br />
   </we:repeat>
</we:listview>
Was aus der Doku auch nicht klar wird: Damit sind nicht nur eigene SQL-Queries über die Objekt-Tabellen möglich, sondern auch Abfragen über WE-fremde Tabellen oder sonstwas! Hauptsache Ihr haltet euch an die obigen Regeln!

Code: Alles auswählen

SELECT
   1 AS OF_ID,
   "Testeintrag" AS we_Feldname
EOF; //totally retired

we:willRockYou
Senior Member
Beiträge: 919
Registriert: Fr 22. Mai 2009, 21:40
Wohnort: Berlin
Kontaktdaten:

Re: Listview predefinedSQL

Beitragvon we:willRockYou » Sa 5. Feb 2011, 18:31

Und noch etwas: Damit Felder, die in der DB als meta_* abgelegt werden (das sind z.B. Felder vom Typ Select) per we:field ausgegeben werden können, muss im Listview unbedingt das Attribut classid gesetzt sein. Der Query wird zwar auch ohne dieses Attribut problemlos ausgeführt, doch ein <we:field type="select" name="whatever" /> findet nur die korrekte Zuordnung mit diesem Attribut. Hintergrund ist, dass in der tblObject_X nur die Keys, nicht aber die Values stehen. Die Values sind vermutlich irgendwo in der tblContent verkramt und werden dann (ganz webEdition-typisch) für jedes einzelne LV-Element aus der DB geholt...
EOF; //totally retired

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview predefinedSQL

Beitragvon blickfang » Di 6. Mai 2014, 18:00

diese Anleitung war heute mal wieder gold wert!!!! Ohne diese Anleitung ist das Attribut schlichtweg nicht zu gebrauchen...
Ich komme aber nicht drum herum, jedes Feld das ich mit we:field ausgeben möchte, auch in den select zu packen?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Bing [Bot] und 13 Gäste