Ankündigung

Einklappen
Keine Ankündigung bisher.

Zugriff auf seperate Datei mit Datenbankaufbau

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von brandost Beitrag anzeigen
    Wie müsste es den heißen? Da ich mehrmals auf meiner Homepage auf die Datenbank zugreifen möchte, würde es doch aber Sinn machen mit einer Klasse zu arbeiten oder?
    irgendwie schon.
    Du nimmst eine klasse db,
    dort übergibst du im constructpor die zugangsdaten
    diese klasse übergibt Du im constuctor an die die klasse, welche daten aus der db extrahiert.

    Kommentar


    • #17
      Die Klasse habe ich ja bereits... in meinem Fall heißt sie jetzt Database.

      in meiner funktion.php steht:

      PHP-Code:
      namespace Database;

      class 
      Database {
          private static 
      $dbName '....' ;
          private static 
      $dbHost 'localhost' ;
          private static 
      $dbUsername '.....';
          private static 
      $dbUserPassword '.....';
          private static 
      $cont  null;
              private static 
      $options = array(
                       
      PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
                       
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                       
      PDO::ATTR_PERSISTENT => true,
                       
      PDO::ATTR_AUTOCOMMIT => true,
                    );

          public function 
      __construct() {
              exit(
      'Init function is not allowed');
          }

          public static function 
      connect()
          {
             
      // One connection through whole application
             
      if ( null == self::$cont )
             {      
              try
              {
                
      self::$cont =  new PDO"mysql:host=".self::$dbHost.";"."dbname=".self::$dbNameself::$dbUsernameself::$dbUserPasswordself::$options);  
                
      self::$cont->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_ASSOC);
              }
              catch(
      PDOException $err)
              {
                echo 
      'The connection could not be established.<br />'.$err->getMessage().'<br />'.strval($err->getCode()).'<br />'.$err->getFile().'<br />';
                echo 
      $err->getTrace().'<br />'.strval($err->getLine()).'<br />'.$err->getPrevious();            
              }
             }
             return 
      self::$cont;
          }

          public static function 
      disconnect()
          {
              
      self::$cont null;
          }

      Auf der Seite steht:
      PHP-Code:
      use Database;
      require_once (
      'inhalt/function.php');


      $pdo Database::connect();
      $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
      $pdo $conn->prepare('SELECT bildname FROM projekte');
      foreach (
      $pdo->query($sql) as $row) {
        echo 
      '<td>'$row['bildername'] . '</td>';
      }
      Database::disconnect(); 
      Die function.php befindet sich im ordner inhalt und die eigentliche seite unter inhalt/projekte
      Vielleicht ist es so möglich, den Fehler zu erkennen bzw. mir aufzuzeigen wie ich was programmieren muss.
      Ich danke euch für die unterstützung.

      Bei diesem Code erscheint die Meldung:
      Warning: The use statement with non-compound name 'Database' has no effect in /users/wmcomputerdienst/www/inhalt/projekte/pro_websites.php on line 3

      Wie meinst du das mit dem constructor? Ich stehe komplett auf dem Schlauch... Ich muss auch dazu sagen, ich bin kein php crack.... sorry

      Kommentar


      • #18
        Schau es dir mal in der Wissenssammlung an, unter Wiederverwendung der Verbindung findest du ein Beispiel, so wie es tomBuilder gemeint hat. PDO ist nämlich bereits ein Klasse.

        Kommentar


        • #19
          Danke für eure Antworten aber ich bin wohl etwas zu doof das zu verstehen. Sorry... Um so mehr ich daran versuche etwas zu machen um so mehr Fehler kommen. Kann hier vielleicht jemand einen funktionierenden Code einstellen den ich dann anpassen kann bzw. sehe wie es geht oder meinen so umbiegen wie es richtig sein muss?
          Bei mir kommen immer mehr Fragezeichen wie Ausrufezeichen...

          Kommentar


          • #20
            Der Link unter #18 zeigt funktionierenden Code. Jedenfalls Ansätze dazu. Dein Konstrukt oben kannst du wegschmeissen, das ist unnötig und wie du siehst verläuft du dich da nur. Lass es weg, nutze PDO wie gedacht (zB Link oben) und gut ist.

            Und sonst kann ich das hier auch in die Scriptbörse schieben, ev. erbarmt sich da ja jemand. Kurze Info hier reicht (wg. verschieben).
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #21
              Zitat von brandost Beitrag anzeigen
              Danke für eure Antworten aber ich bin wohl etwas zu doof das zu verstehen. Sorry...
              Dann mache doch erst mal eine funktionierende Lösung ohne OOP. Die brauchst du bei DB und Abfragen sowie Ausgabe auf dem Browser eh nicht unbedingt.

              Kommentar


              • #22
                Und vor allem lass die namespaces weg, wenn Du dort auftretende fehler nicht debuggen kannst.
                nebenbei, genau protestix

                Kommentar


                • #23
                  Was mir noch auffällt in deinem Code, ist de persistente Verbindung
                  PHP-Code:
                  PDO::ATTR_PERSISTENT => true,
                  PDO::ATTR_AUTOCOMMIT => true
                  Warum machst du das, wenn du nach dem Aufruf die Verbindung zum DB Server sowieso beendest?
                  PHP-Code:
                  Database::disconnect(); 
                  Du solltest dein Konzept vielleicht noch mal überdenken.

                  Kommentar


                  • #24
                    Zitat von protestix Beitrag anzeigen
                    Du solltest dein Konzept vielleicht noch mal überdenken.
                    Das sehe ich auch so. Eine Klasse sollte der Wiederverwendung dienen und keine hardcodierten Zugangsdaten erhalten. Das ganze Konzept ist Murks.

                    Kommentar


                    • #25
                      Zitat von brandost Beitrag anzeigen
                      Vielleicht ist es so möglich, den Fehler zu erkennen bzw. mir aufzuzeigen wie ich was programmieren muss.
                      Du findest den Fehler, wenn du erklären kannst, was das $conn soll...

                      Zitat von brandost Beitrag anzeigen
                      Bei diesem Code erscheint die Meldung:
                      Warning: The use statement with non-compound name 'Database' has no effect in /users/wmcomputerdienst/www/inhalt/projekte/pro_websites.php on line 3
                      Weil du PHP sagst, du willst die Klasse Database aus dem aktuellen Namespace nutzen. Die kannst du aber auch so nutzen. -> "has no effect" Dein Code ist hier aber auch widersprüchlich. Die Klasse Database ist im Namespace Database. Korrekt wäre also use Database/Database; (Du hast entweder zwischenzeitlich den Namespace entfernt, oder noch eine andere Klasse Database -> alles andere wäre ein fatal error/class not found)

                      Kommentar


                      • #26
                        Um eine Lösung für mein Problem zu finden habe ich viel mit google gearbeitet und war damalls unter anderen auf folgende Seite gestoßen: https://www.w3schools.com/php/php_my...statements.asp
                        in meinem beispiel müsste es $cont heißen.
                        Um näher auf deine Frage einzugehen ja das eine ist mysqli und das andere ist pdo
                        Zu den Namespace, nein einen anderen habe ich nicht. Ich hatte ihn mal test1 genannt, da ich etwas geändert hatte aber ich habe es zurück geändert. Ich bin mit dem verbindungsaufbau überfordert...

                        Kommentar

                        Lädt...
                        X