Ergebnis 1 bis 4 von 4

Thema: Database einbinden kann nicht gefunden werden

  1. #1
    Contao-Nutzer
    Registriert seit
    20.02.2014.
    Beiträge
    1

    Standard Database einbinden kann nicht gefunden werden

    Guten Tag,
    leider bin ich neu und kein Thema passt so richtig hier, deshalb gebe ich die Frage so hier weiter.
    Ich habe ein Problem die Database wird nicht übernommen, wer kann mir helfen?


    Code:
    $this->connect();<?php error_reporting(E_ALL); // Zum Aufbau der Verbindung zur Datenbank
     
    define ( 'MYSQL_HOST'dbXXX.db.1and1.com, 'localhost' ); 
    define ( 'MYSQL_BENUTZER'dboXXX, '' ); 
    define ( 'MYSQL_KENNWORT'xxxxxxxxxxx, '' ); 
    define ( 'MYSQL_DATENBANK'dbXXX, 'adressverwaltung' ); 
    $db_link = mysqli_connect (MYSQL_HOST dbXXX.db.1and1.com, MYSQL_BENUTZER dboXXX, MYSQL_KENNWORT xxxxxxxxxxx, MYSQL_DATENBANK dbXXX); 
    if ( $db_link ) { echo 'Verbindung erfolgreich: '; 
    print_r( $db_link); } else { 
      // hier sollte dann später dem Programmierer eine 
      // E-Mail mit dem Problem zukommen gelassen werden 
    die('keine Verbindung möglich: ' . mysqli_error()); } ?>
    einen freundlichen Gruß
    Eric
    Geändert von Umweltansicht Eric (20.02.2014 um 13:49 Uhr)

  2. #2
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Bevor du den ganzen Rest meines Beitrages liest, spring mal vorab bitte direkt zu meiner fettgedruckten Frage unten sowie der grünen Anmerkung. Damit erledigt sich der obere Teil nämlich möglicherweise bereits.

    Mal ganz spontan, ohne dass ich selbst jetzt irgendwelche relevanteren PHP-Kenntnisse habe, fällt mir der Anfang gleich auf:

    Du schreibst:
    Code:
    $this->connect();<?php error_reporting(E_ALL); // Zum Aufbau der Verbindung zur Datenbank
     
    define ( 'MYSQL_HOST'dbXXX.db.1and1.com, 'localhost' ); 
    define ( 'MYSQL_BENUTZER'dboXXX, '' ); 
    define ( 'MYSQL_KENNWORT'xxxxxxxxxxx, '' ); 
    define ( 'MYSQL_DATENBANK'dbXXX, 'adressverwaltung' ); 
    $db_link = mysqli_connect (MYSQL_HOST dbXXX.db.1and1.com, MYSQL_BENUTZER dboXXX, MYSQL_KENNWORT xxxxxxxxxxx, MYSQL_DATENBANK dbXXX); 
    if ( $db_link ) { echo 'Verbindung erfolgreich: '; 
    print_r( $db_link); } else { 
      // hier sollte dann später dem Programmierer eine 
      // E-Mail mit dem Problem zukommen gelassen werden 
    die('keine Verbindung möglich: ' . mysqli_error()); } ?>.
    Ich denke, korrekt wäre:
    Code:
    <?php $this->connect();
    error_reporting(E_ALL);
     
    define ( 'MYSQL_HOST', 'dbXXX.db.1and1.com'); 
    define ( 'MYSQL_BENUTZER', 'dboXXX' ); 
    define ( 'MYSQL_KENNWORT', 'xxxxxxxxxxx' ); 
    define ( 'MYSQL_DATENBANK', 'dbXXX' ); 
    $db_link = mysqli_connect (
                         MYSQL_HOST, 
                         MYSQL_BENUTZER, 
                         MYSQL_KENNWORT, 
                         MYSQL_DATENBANK
                        );
    if ( $db_link )
    {
        echo 'Verbindung erfolgreich: ';
        print_r( $db_link);
    }
    else
    {
        die('keine Verbindung möglich: ' . mysqli_error());
    }
     ?>
    Bei meinem angepassten Beispiel müsstest du jetzt nur noch statt dbXXX.db.1and1.com, dboXXX, xxxxxxxxxxx und dbXXX die XXX mit jeweils der Angabe deiner individuellen Daten von 1&1 ersetzen und jeweils darauf achten, dass sie weiterhin sauber in einfache Anführungszeichen gesetzt sind. Bitte die Angaben nicht nochmal in connect-Anweisung darunter dazu schreiben.

    Abgesehen davon habe ich mir erlaubt, deinen Code oben in einen Code-Block zu geben und in einzelne Zeilen zu unterteilen, damit man ihn leichter lesen kann und nicht riskiert wird, dass Auskommentierungen und nachfolgender Code in einer Zeile sind (sonst wäre dieser auch auskommentiert und würde gar nicht erst ausgeführt werden)
    Ich vermute mal, du bist PHP-Laie und hast versucht da diese Anleitung nachzubauen?

    An der Stelle die Frage: Was willst du überhaupt erreichen? Willst du irgendwas Externes in Contao einbinden?

    Wenn es nur darum ginge, Contao selbst mit der Datenbank zu verbinden, ist dein kompletter Code unnötig, weil Contao selbst eine Installationsroutine hat, in der man die DB-Verbindung zuweist.

  3. #3
    Contao-Nutzer
    Registriert seit
    20.12.2009.
    Ort
    Leipzig
    Beiträge
    61

    Standard

    Hallo Nina, ich greif Deinen post auf da es teilweise zu meinem Problem passt:

    Ich habe kürzlich von 2.11 auf 3.2 upgedated. Dabei musste/sollte ich den Datenbankzugriff von MySQL auf MySQLi umstellen (in der localconfig). Die neuen Fehlermeldung in der error.log sagen nun, dass die in der angepassten fe_page-Datei eingebauten php-Befehle zum zugreifen auf die Datenbank fehlerhaft sind. (mysqli_query und mysqli_fetch_array). [Anm.: Ich hatte im ersten Schritt einfach an die alten mysql-Befehle ein 'i' angehängt.] Da die mysqli-Befehle in der fe_page-Datei nicht funktionieren, wird auch ein Teil der Webseite nicht mehr dargestellt.

    Die Frage ist nun: Wie muss ich folgendes php-script mit der Umstellung auf mySQLi anpassen:

    PHP-Code:
    $res mysqli_query("SELECT text FROM tl_content WHERE pid = 6 ORDER BY RAND()");
    while(
    $row mysqli_fetch_array($res))
           {
            echo .... 
    gekürzt ....;
            
    $counter++;
           } 
    Osterliche Grüße und vielen Dank,
    Andre

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.116
    Partner-ID
    10107

    Standard

    Am besten verwendest du Models:
    PHP-Code:
    if( ( $objContent = \ContentModel::findByPid(6, array('order' => 'RAND()') ) !== false )
    {
        while( 
    $objContent->next() )
        {
            echo \
    Controller::getContentElement$objContent->id );
        }

    Geändert von Spooky (28.03.2016 um 16:15 Uhr)

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
  •