- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Arbeiten mit zwei Tabellen
Ich habe zwei Tabellen. In der einen sind die US-Bundesstaaten hinterlegt und in der anderen die dazugehรถrigen Adressen (1 zu N Beziehung).
Ich habe auch eine Abfrage eingebaut. In den Vorschau funktioniert die EInschrรคnkung der Daten weil ich auch eine Regel anwende .
Formular Syntax:
<CMS_INPUT_COMBOBOX name="st_name" sortOrder="ascending" useLanguages="no">
<CMS_INCLUDE_OPTIONS type="database">
<LABELS>
<LABEL lang="*">#item.name</LABEL>
</LABELS>
<TABLE>helukabel_cms_schema.us_state</TABLE>
</CMS_INCLUDE_OPTIONS>
<LANGINFOS>
<LANGINFO lang="*" label="State"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
<CMS_INPUT_COMBOBOX name="st_address" sortOrder="ascending" useLanguages="no">
<CMS_INCLUDE_OPTIONS type="database">
<LABELS>
<LABEL lang="*">#item.fs_id</LABEL>
</LABELS>
<QUERY name="helukabel_cms_schema.us_state2location">
<PARAM name="id">1</PARAM>
</QUERY>
<TABLE>helukabel_cms_schema.location_us_state</TABLE>
</CMS_INCLUDE_OPTIONS>
<LANGINFOS>
<LANGINFO lang="*" label="State"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
Regel:
<ON_EVENT>
<WITH>
<PROPERTY source="st_name" name="VALUE" />
</WITH>
<DO>
<PROPERTY source="st_address" name="query.id" />
</DO>
</ON_EVENT>
In der HTML Ausgabe kriege ich es nicht hin. In Abhรคngigkeit des Auswahls der ersten Tabelleninfos die dazugehรถrige Daten aus der zweiten Tabelle auszugeben.
Die Varainte fรผr jede Option von der Tabelle1 eine eigene Abfrage mit dem entsprechenden Parameter zu hinterlegen, wรผrde ich gerne vermeiden.
Ist mein Anliegen mรถglich ?
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wenn zwischen den beiden Tabellen eine Fremdschlรผsselbeziehung liegt, dann einfach der Beziehung รผber das Objektmodell folgen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Was meinen Sie hier genau ? Ein Beispiel hierzu wรคre nicht schlecht.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Im mitgelieferten Demo-Projekt ("Mithras Energy") gibt es einige Beispiele dazu. Z.B. bei den Produkten.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
leider ist bei uns Mithras Projekt nicht installiert. Da wir schon zwei Projekte haben ist das einspielen weiterhin nicht mรถglich. Gibt es eine Mรถglichkeit auf die Daten zuzugreifen ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Du kannst dir einen lokalen Server aufsetzen, zum Ausprobieren sollte das reichen.
Noch mal zu dem "Problem". Ich postuliere mal, die Tabellen heiรen "address" und "state" und die Fremdschlรผsselbeziehung in Adresse heiรt ebenfalls "state". Wenn du dann ein Objekt x aus der Tabelle "state" hast, bekommst du mit x.getValue("state") ein Objekt aus der Tabelle "state" (oder "null", wenn die Fremdschlรผsselbeziehung nicht gesetzt ist.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Anbei รbersicht der beiden Datenbank Tabellen.
Ich habe auch vergessen mein HTML Code mitzuteilen.
<CMS_FUNCTION name="contentSelect" resultname="cs_us_state">
<CMS_PARAM name="schema" value="helukabel_cms_schema" />
<QUERY entityType="us_state">
<ORDER>
<ORDERCRITERIA attribute="name" ascending="1" />
</ORDER>
</QUERY>
</CMS_FUNCTION>
<select name="us-select" id="us-select" >
<option value="choose">$CMS_VALUE(#global.gca("languagedependantcontent").getData().get("pt_contact_please_choose").getEditor().get(#global.language))$ ...</option>
$CMS_FOR(state,cs_us_state)$
<option value="$CMS_VALUE(state.fs_id)$">$CMS_VALUE(state.name)$</option>
$CMS_END_FOR$
</select>
Wie erhalte ich die Daten von der zweiten Tabelle ? Muss ich ein CMS_FUNCTION fรผr die zweite Tabelle machen ? Aus deinem Hinweis Text werdeich nicht schlau !
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich werde aus deiner Frage nicht schlau
Was ist fรผr dich die "zweite Tabelle"?
Wenn das Element aus der Tabelle "location_us_state" stammt, kommst du รผber das Attribut "us_state" an das Element aus der Tabelle "us_state":
$CMS_VALUE(location.us_state.name)$
Umgekehrt hast du eine Liste, รผber welche du iterieren kannst:
$CMS_FOR(location, state.location_us_stateList)$
Location: $CMS_VALUE(location.web)$
$CMS_END_FOR$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich will die Adress Daten aus der Tabelle location_us_state ausgeben, in Abhรคngigkeit was in der Tabelle us_State (Eingrichtet als Combobox) ausgewรคhlt wurde.
Ich habe versucht dein Code zu benutzen. Aber es werden keine Daten im HTML ausgegeben.
Hier nochmal mein HTML Code
<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="cs_us_state">
<CMS_PARAM name="schema" value="helukabel_cms_schema" />
<QUERY entityType="us_state">
<ORDER>
<ORDERCRITERIA attribute="name" ascending="1" />
</ORDER>
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
<div id="worldmap" class="world"$CMS_VALUE(editorId())$>
<select name="us-select" id="us-select" >
<option value="choose">$CMS_VALUE(#global.gca("languagedependantcontent").getData().get("pt_contact_please_choose").getEditor().get(#global.language))$ ...</option>
$CMS_FOR(state,cs_us_state)$
<option value="$CMS_VALUE(state.fs_id)$">$CMS_VALUE(state.name)$</option>
$CMS_END_FOR$
</select>
$CMS_VALUE(state.location_us_stateList)$
$CMS_FOR(location, state.location_us_stateList)$
Location: $CMS_VALUE(location.address)$
$CMS_END_FOR$
$--
$CMS_FOR(location_us_state,cs_location_us_state)$
$CMS_IF(location_us_state.us_state.fs_id == sv_activeStateId)$
<div class="country-contact">
<div class="address">
$CMS_VALUE(location_us_state.address)$
</div>
$CMS_IF(location_us_state.phone.isEmpty && location_us_state.fax.isEmpty)$
$CMS_ELSE$
<div class="phone">
$CMS_IF(!location_us_state.phone.isEmpty)$
<p>Tel $CMS_VALUE(location_us_state.phone)$</p>
$CMS_END_IF$
$CMS_IF(!location_us_state.fax.isEmpty)$
<p>Fax $CMS_VALUE(location_us_state.fax)$</p>
$CMS_END_IF$
</div>
$CMS_END_IF$
$CMS_IF(location_us_state.email.isEmpty && location_us_state.web.isEmpty)$
$CMS_ELSE$
<div class="online">
$CMS_IF(!location_us_state.email.isEmpty)$
<p>E-Mail: <a href="mailto:$CMS_VALUE(location_us_state.email)$" class="wm-mailto">$CMS_VALUE(location_us_state.email)$</a></p>
$CMS_END_IF$
$CMS_IF(!location_us_state.web.isEmpty)$
<p>Internet: <a href="$CMS_IF(!location_us_state.web.contains("://"))$http://$CMS_END_IF$$CMS_VALUE(location_us_state.web)$" target="_blank" class="wm-web">$CMS_VALUE(location_us_state.web)$</a></p>
$CMS_END_IF$
</div>
</div>
$CMS_END_IF$
$CMS_END_FOR$
--$
</div>
Was mache ich hier falsch ?
Die Anzeige sollte dynamisch sein. Wenn in Combobox ein andere US Staat ausgewรคhlt wurde, sollte auch die dazugehรถrige Adresse in der HTML Ausgabe erfolgen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Du hast jetzt eine Datenbankabfrage รผber alle "location_us_state" Eintrรคge gebaut. Wenn da in der Schleife nichts ausgegeben wird, wird die Schleife wohl nicht durchlaufen. Gibt es denn Eintrรคge in der Tabelle?

