Seite 1 von 1

universeller Abfragequelltext ?

Verfasst: Fr 9. Jul 2004, 21:12
von Tom Quenten
Etwas was mich ärgert, ist die Tatsache das ich beim Auslesen eines Artikels aus der Datenbank immer genau wissen muss welche Anzahl von Typen ich zurückerhalten werde. Also ich erkläre das mal so. Ich habe im Backend einen Artikel erfasst der hat folgende Module.

Code: Alles auswählen

CMS_HTMLHEAD[1] 
CMS_HTMLHEAD[2] 
CMS_HTML[1] 
CMS_HTML[2] 
CMS_HTML[3] 
CMS_HTML[4] 
CMS_HTML[5]
Nun kann ich diese Informationen mit

Code: Alles auswählen

sql =" 
SELECT * 
FROM   {$cfg['tab']['content']} AS a, 
       {$cfg['tab']['type']} AS b 
WHERE    a.idtype=b.idtype 
// als Beispiel Artikel Nummer 63 
AND    idartlang=63 
"; 
$db2->query($sql); 
abfragen und mit einer Schleife dann die Felder ausgeben.

Code: Alles auswählen

while ($db2->next_record()) 
  { 
    echo $db2->f('value'); 
  } 
So weit so gut. Aber wie bekomme ich es hin das die mir zur Verfügung stehenden Variablen dann so aussehen werden, ich also im HTML Quelltext keine Schleife mehr proggen muss, sondern einfach mit echo $var den Wert platziere.

Code: Alles auswählen

type[typeid] 
type aus der Tabelle contenido_type 
typeid aus der tabelle contenido_content 
Am Ende müsste also, ausgehend vom oben genannten Beispiel, folgende Variablen entstehen

Code: Alles auswählen

$CMS_HTMLHEAD[1] 
$CMS_HTMLHEAD[2] 
$CMS_HTML[1] 
$CMS_HTML[2] 
$CMS_HTML[3] 
$CMS_HTML[4] 
$CMS_HTML[5] 
Das wäre extrem praktisch, da im Output dann genau die Variblen nach Belieben platziert werden können, die gerade benötigt werden, sozusagen ein universeller Abfragequelltext.

Grund dafür bei mir ist, das im Template der Quelltext nicht von oben nach unten aufgebaut werden kann. Die Variblen sollen kreuz de quer im Quelltext platziert werden können, ohne das ich bei einer Erweiterung wieder die Abfrage ändern muss.

Mein Gedankengang war der, das ich erst die Menge x pro Type ermittle und damit dann mit einer Schleife die benötigte Menge Variablen erzeuge. In dieser Schleife lege ich dann noch eine Schleife an die den gerade generierten Variable den Wert zuweist.

Also ungefähr so

Code: Alles auswählen

Schleife 1 
  { 
    $Erzeugte Variable[x] 
      Schleife 2 
        { 
          $Erzeugte Variable[x] = $db2->f('value'); 
        } 
  } 
Schwebe ich da mit meinen Vorstellungen zu hoch und konnte ich mich so einigermasen ausdrücken?

Gruss
Tom

Verfasst: Mo 12. Jul 2004, 10:51
von kummer
ich würde dir ja gerne helfen. aber ich sehe offengestanden nicht ganz, was du machen willst. die abfrage ist bereits ungeheuer universell. du kannst nämlich machen, was immer du willst. und die reihenfolge der ausgabe kannst du ja über ein order steuern.

Verfasst: Mi 14. Jul 2004, 23:37
von Tom Quenten
naja, das dachte ich mir beim schreiben schon...

eigentlich ganz einfach, beim erstellen eines templates platziere ich module, diese sind ja eigentlich nummeriert, die werte sind in der content gespeichert als typeid und idtype, nun wollte ich mit diesen beiden eben eine universelle abfrage erstellen

also angenommen das modul1 hat folgenden quelltext

Code: Alles auswählen

<?php
if ("CMS_IMG[1]" != "")
  {
    $img = '<img src="CMS_IMG[1]" border="0" alt="">';
    echo $img;
  }
echo "CMS_IMGDESCR[1]";
?>
und das modul 2 eben diesen

Code: Alles auswählen

<?php
if ("CMS_IMG[2]" != "")
  {
    $img = '<img src="CMS_IMG[2]" border="0" alt="">';
    echo $img;
  }
echo "CMS_IMGDESCR[2]";
?>
und diese beiden module wurden in einem Template eingebaut, dann weiß der benutzer eben das er CMS_IMG[1] und CMS_IMG[2] im Output mit den Variablen $CMS_IMG[1] und CMS_IMG[2] irgendwo platzieren kann oder auch nicht wenn er einzelne Variablen nicht benötigt.

das wäre meiner meinung mehr als universell!

wenn dies irgendwie zu realisieren geht, (meine vermutuung ist mit mehrdimensionalen arrays) dann könnte man sich die ganzen artikelmodule mit den ganzen veränderung sparen.

ich setze einfach ein paar CMS_TEXT und CMS_IMG und von mir aus auch CMS_HEADLINE die ich ja nummeriert habe also zum beispiel

CMS_TEXT[1]
CMS_TEXT[2]

usw. und frage die in dem output auch genau so wieder ab, nur eben mit einem $ davor.

Beispiel eines Outputs

Code: Alles auswählen

// Quelltext an dem der Benutzer nix mehr ändern oder anpassen muss
SQL Anfragen
und sonstiger PHP Code
------------------------------------
// Ausgabe an den Browser
// Ab hier kann der benutzer dann individuell anpassen
// im oberen bereich brauch er nix mehr machen
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td width="100%" colspan="2"><? echo CMS_HEADLINE[1]; ?></td>
  </tr>
  <tr>
    <td width="100%" colspan="2"><? echo CMS_HEADLINE[2]; ?></td>
  </tr>
  <tr>
    <td width="11%"></td>
    <td width="89%"><? echo CMS_TEXT[1]; ?></td>
  </tr>
</table>
Konnte ich es einigermaßen verständlich rüberbringen? Wird dies realisierbar sein?

Gruss
Tom

Verfasst: Do 15. Jul 2004, 07:21
von emergence

Verfasst: Do 15. Jul 2004, 09:23
von Tom Quenten
Mhhh, sehr interessant. Läuft das bei Dir auch schon in der Art?

Verfasst: Do 15. Jul 2004, 10:17
von emergence
der patch ist in der 4.5.2alpha glaube ich bereits enthalten...
und nein ich verwende es momentan nicht...