Ergebnis 1 bis 13 von 13

Thema: Datenbankabfrage im Template

  1. #1
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Standard Datenbankabfrage im Template

    Hallo zusammen,

    Kurze Frage:
    Kann man im Template "metamodel_unrendered.html5" keine
    PHP-Code:
    $this->import('Database'); 
    ausführen?

    Erhalte diese Meldung
    Code:
    Call to a member function prepare() on a non-object in
    Besten Dank

    Grüessli
    Steven

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Mal abgesehen davon, daß so etwas nicht in ein Template gehört: das $this ist im Template das Template Objekt und nicht das Modul, das die Methode import() bereit stellt. Es kann so also nicht funktionieren.

  3. #3
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    import Befehle funktionieren in MetaModels garnicht! Du musst getInstance nehmen.

  4. #4
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Darf man fragen wofür du die Datenbankabfrage benötigst?

  5. #5
    Contao-Nutzer
    Registriert seit
    02.04.2012.
    Beiträge
    149
    Partner-ID
    9663

    Standard

    Ich habe zuletzt eine PHP-Datei mit folgendem Inhalt inkludiert:

    PHP-Code:
    mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($dbname); 
    Allerdings musste ich auf eine weitere Datenbank (nicht Contao) zugreifen.
    Das funktioniert einwandfrei im MM-Template.

  6. #6
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Ja das funktioniert sollte man aber NIEMALS machen. Was brauchtest du von der anderen DB? Der beste Weg wäre die andere DB über Tags ins System zu holen und dann sauber über die MetaModels Komponenten drauf zu zu greifen

  7. #7
    Contao-Nutzer
    Registriert seit
    02.04.2012.
    Beiträge
    149
    Partner-ID
    9663

    Standard

    Zitat Zitat von andreasisaak Beitrag anzeigen
    Ja das funktioniert sollte man aber NIEMALS machen. Was brauchtest du von der anderen DB? Der beste Weg wäre die andere DB über Tags ins System zu holen und dann sauber über die MetaModels Komponenten drauf zu zu greifen
    Ich habe ja eine Händlersuche über MM umgesetzt, da der Textfilter aber noch nicht funktioniert, habe ich eine Seite vorgeschaltet, die die PLZ abfragt und diese in der externen DB mit Koordinaten abgleicht + Entfernung zu den einzelnen MM Datensätzen berechnet. Dann sortiere ich das MM Array um und begrenze es auf den eingestellten Umkreis.
    "NIEMALS" aus Sicherheitsgründen, Performance oder warum?
    Kannst du das mit den Tags kurz erläutern? Kann da gerade nichts mit anfangen… Danke und Grüße

  8. #8
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Genau die selbe Anforderung hatten wir auch und haben es dann so gemacht:

    https://community.contao.org/de/show...l=1#post259668

    Aus Sicherheitsgründen sollte man sowas niemals im Template machen und wenn du unbedingt die 2te Tabelle brauchst (ich schätze du meinst eine Tabelle und keine Datenbank, alles andere wäre noch schlimmer) dann würde ich schon die Database Klasse von Contao nutzen um wenigstens ein Hauch an Sicherheit mitzubringen.

  9. #9
    Contao-Nutzer
    Registriert seit
    02.04.2012.
    Beiträge
    149
    Partner-ID
    9663

    Standard

    Ja, euer Projekt habe ich mir schon angesehen. Hatte den Storelocator auch schon im Einsatz, allerdings war mir das Anpassen der Eingabefelder/die Detailausgabe zu umständlich, da ich das ziemlich flexibel und einfach zu erweitern haben muss. Es sind tatsächlich mehrere Tabellen in einer weiteren Datenbank –*man könnte sie sicherlich in die Contao DB integrieren, allerdings wollte ich da erstmal auf Nummer sicher gehen um nichts kaputt zu machen (ja, ich habe einen Cron laufen, der mir regelmäßig einen Dump abspeichert). Ich befürchte für das was du beschreibst reichen meine Kenntnisse einfach noch nicht aus.

  10. #10
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Wir stehen dir zur Verfügung wenn du Hilfe buchen willst. Du kannst es auch so lassen aber ich mach mir Sorgen dass das nicht lange gut geht.

  11. #11
    Contao-Nutzer
    Registriert seit
    02.04.2012.
    Beiträge
    149
    Partner-ID
    9663

    Standard

    Zitat Zitat von andreasisaak Beitrag anzeigen
    Wir stehen dir zur Verfügung wenn du Hilfe buchen willst. Du kannst es auch so lassen aber ich mach mir Sorgen dass das nicht lange gut geht.
    Danke dir, ich habe euch noch auf dem Plan –*allerdings zieht sich das Projekt länger nach hinten als gedacht und unser Budget ist derzeit noch sehr überschaubar.
    Meintest du mit "Tags" die Contao Inserttags?

  12. #12
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Nein ich meinte das Attribute "Tags".

  13. #13
    Contao-Fan Avatar von Hauge
    Registriert seit
    31.01.2010.
    Beiträge
    643

    Standard

    Und schon wieder eine Frage:

    Es geht darum, dass ich gerne auf eine externe Tabelle zugreifen möchte,
    ich habe das immer mit der Datenbankklasse von Contao in etwa so gelöst:

    Code:
    <?php 
    $phrase = $this->raw;
    $this->import('Database'); 
    $objData = $this->Database->prepare("SELECT mp_date FROM mm_tagespost WHERE hp_menue LIKE '%$phrase%' ORDER BY mp_date DESC")->execute(1); 
    if ($objData->mp_date):
    echo 'zuletzt verwendet: '.$objData->mp_date;
    endif;
    ?>
    bis ich auf diesen Thread gekommen bin.
    Ich spiele mich schon eine Weile und komme auch mit getInstance hier nicht wirklich weiter was hier definitiv auf meine fehlenden Kenntnisse zurückzuführen ist.

    Ich würde Euch bitten, hier evtl. den grundsätzlichen Code zu posten mit welchem man von einem metamodels-Template aus auf eine andere (wenn möglich beliebige) Tabelle innerhalb der gleichen Contao-Installation zugreifen kann.

    das Einzige was ich in etwa in diese Richtung gefunden habe ist das hier:
    PHP-Code:
    <?php #Vorbereiten $producer = MetaModelFactory::byTableName('mm_producer')->findById($arrItem['raw']['producer']); # Die spalte 'name' aus dem array $producer ausgeben echo $producer->get('name'); ?>
    Leider möchte ich aber keine andere mm_tabelle im herkömmlichen Sinne referenzieren, sondern die Ausgabe an eine andere Bedingung knüpfen (in meinem Falle eine Durchsuchung)

    Über den Code würde ich mich freuen...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •