liebewinter: phpmyadmin nicht start

0 94

phpmyadmin nicht start

  1. 0
    1. 0
  2. 1
    1. 0
      1. 0
      2. 0
        1. 0
          1. 0
            1. 0
              1. 0
                1. 0
                  1. 0
                    1. 0
                      1. 0
                        1. 0
                          1. 0
                            1. 0
                              1. 1
                                1. 0
                                  1. 0
                                    1. 0
                                      1. 0
                                  2. 0
                                    1. 0
                                      1. 0
                                        1. 0
                                          1. 0
                                            1. 0
                                              1. 0
                                                1. 0
                                                  1. 0
                                                    1. 0
                                                      1. 0
                                                        1. 0
                                                          1. 0
                                                          2. 1

                                                            Es lag definitiv am PHP...

                                                            1. 0

                                                              Was an der Kommentarfunktion konzeptionell schlecht ist

                                                              1. 0
                                                                1. 0
                                                                  1. 0
                                                                    1. 0
                                                                    2. 0

                                                                      Altes Zeug löschen

                                                                      1. 0
                                                                        1. 0
                                                            2. 0
                                                              1. 0
                                                                1. 0

                                                                  Deine Datenbank-Tabelle ist wahrscheinlich (noch) falsch.

                                                                  1. 0
                                                                    1. 0
                                                                      1. 0
                                                                        1. 0
                                                                  2. 0
                                                                    1. 0
                                                                      1. 0
                                                                        1. 0

                                                                          Auf dem Weg zum DELETE

                                                                        2. 0

                                                                          Nein! Du machts jetzt einen Plan.

                                                                          1. 0
                                                                      2. 0
                                                                        1. 0
                                                                          1. 0
                                                                            1. 0
                                                                              1. 0
                                                                                1. 0
                                                                                  1. 0
                                                                                    1. 0
                                                                                    2. 0
                                                                                    3. 0
                                                                                      1. 0
                                                                                        1. 0
                                                                                          1. 0
                                                                                        2. 0
                                                                                      2. 0

                                                                                        Tabelle wird nicht gezeigt

                                                                2. 0
                                                                  1. 0

                                                                    Kleine Verfeinerung der reportPDOError - Methode

                                                                    1. 0
                                                                      1. 0
                                                                        1. 0
                                                                        2. 0
                                                                          1. 0
                                                                            1. 0
                                                                              1. 0
                                                                                1. 0
                                                                                  1. 0
                                                                                    1. 0
                                                                                      1. 0
                                                                                        1. 0
                                                                                          1. 0
                                                      2. 0
                                                2. 0
                                                  1. 0
                                                    1. 0
                        2. 0
                          1. 0

ich habe gemacht wie hier , sagt ,um eine neue version von phpmyadmin zu installiert, dieser ; phpMyAdmin-4.8.5 , aber phpmyadmin wird nicht gestart...

ich habe Debian stretch , habe php-7.2 , noch mein Datei infophp.php wird nicht gezeigt... , noch habe eine html Datei in /var/www/html , sie wird gezeigt , aber ohne der CSS ...

mein contact html

akzeptierte Antworten

  1. Hallo Joseba,

    ich kann Dir hier nicht helfen. Ich habe kein Linux, und auf der Webseite, wo ich gelegentlich mit entwickle, ist ein uraltes phpMyAdmin mit einem uralten PHP.

    Rolf

    --
    sumpsi - posui - clusi
    1. keine probleme habe auch auf andere forum gefragt (als keine antwortet bekomme habe , habe hier gefragt..) , du hast mich viellllll geholfe !

      ich wünsche dir eine schöne wochenende !

  2. Lieber liebewinter!

    Zuerst einmal: Du hast Informationen geliefert, allerdings nur in einem stark beschränkten Umfang. Es sind zu wenige und die falschen Informationen, niemand kann daraus das Problem erkennen.

    Kommen wir zum wichtigsten Punkt: Wenn es ein webserver ist, der im Internet für jeden erreichbar ist, dann solltest Du unter keinen Umständen phpMyAdmin selbst installieren.

    Diese Anleitung gilt also NUR DANN, wenn für ein Server ist, der NICHT aus dem Internet erreichbar ist.

    ich habe gemacht wie hier ,

    Und das ist falsch! Dort wird empfohlen, phpmyadmin manuell nach /usr/share/phpmyadmin/ zu kopieren bzw. zu entpacken.

    In das Verzeichnis /usr/share gehören aber nur Dateien, die mit dem Standard-Verfahren von Debian, also apt installiert werden!

    ToDo:

    1. Lösche das Verzeichnis /usr/share/phpmyadmin/ mit allen Inhalten.
    2. Führe in einem einem Terminal diese Befehle in genau dieser Reihenfolge aus:
    sudo apt update;
    sudo apt -y autoremove;
    sudo apt -y full-upgrade;
    sudo apt -y install phpmyadmin;
    

    Beim Setup gehe so vor, wie es hier beschrieben ist. Vorteil für Dich: Du bekommst automatisch Sicherheitsupdates.

    1. Danke für deinen Vorschlagen ! ,

      aber als ich keine losung gefunde habe , jetzt versuche mit Workbench ... ,aber er auch macht probleme , wenn auf Debian Stretch , schreibe # apt install mysql-server Mysql bringt zusammen MariaDB , und sie 'streit' mit Workbench.. , ich habe eine losung gefunde , aber jetzt Workbench fragt nach Unix socket Datei...

      1. aber jetzt Workbench fragt nach Unix socket Datei…

        Dann wird es an anderer Stelle Probleme geben, die "Unix socket Datei" wird nämlich automatisch angelegt und gelöscht, wenn der MySQL-Server startet bzw. beendet wird. Diese liegt dann in

        /var/run/mysqld/mysqld.sock

        in

        /var/run/mysqld/mysqld.pid

        liegt nach einem Start des Servers eine weitere Datei mit einer Nummer (Prozess-Id) drin.

        Fehler werden nach /var/log/mysql/error.log geschrieben.

        Bitte zeige mir die Ausgaben von:

        sudo systemctl status mysql
        

        und von

        sudo dpkg -l | grep -P "mysql|mariadb"
        

        Kopiere die Befehle dazu in ein Terminal.

      2. ich habe eine losung gefunde , aber jetzt Workbench fragt nach Unix socket Datei...

        Bitte lese auch hier: A Quick Guide to Using the MySQL APT Repository

        Vermutlich hast Du übersehen, dass Du den MySQL-Server auch starten musst.

        Allerdings ist Oracle hier "nicht auf dem neuesten Stand" bzw. nimmt Rücksicht auf alte Installationen und veraltete Vorgehensweisen. Bei aktuellen Versionen von Debian bzw. Ubunbtu geht das wie folgt:

        Den Server starten:

        sudo systemctl start mysql

        Den Server stoppen:

        sudo systemctl stop mysql

        Den Server bei folgenden Systemstarts IMMER mit starten:

        sudo systemctl enable mysql

        Den Server beim folgenden Systemstarts NICHT mit starten:

        sudo systemctl disable mysql

        Den Status erfahren:

        sudo systemctl status mysql

        Den Server neustarten:

        sudo systemctl restart mysql

        1. ich bekomme dieser warnung,

          Warnung die ich bekomme

          1. Ja. Das ist das zu erwartende Ergebnis, wenn der Server nicht gestartet wurde.

            1. was bekomme mit sudo systemctl status mysql und sudo dpkg -l | grep -P "mysql|mariadb" .

              was bekomme

              wenn geben sudo mysql -u root , bekomme gleiche Warnung,

              [sudo] Passwort für me: ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded

              1. Ok. Der Server läuft also.

                Demnach kommen die Punkte 3 und 4 der von Dir gezeigten Fehlermeldungen in Betracht. Wenn der root kein Passwort hat, dann kommt auch die Fehlermeldung "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded".

                • MySQL hat eine eigene Benutzerverwaltung.

                FRAGE: Hast Du dem (mysql-)root bei der Installation ein Passwort vergeben? (ja/nein)

                Wenn "ja":

                Versuche im Teminal:

                mysql -u root -p
                

                und gib nach der Aufforderung das von Dir vergebene Passwort ein. Zeige hier, was passiert oder versuche Dich in der Workbench mit genau diesen Zugangsdaten anzumelden.

                Wenn "nein":

                Versuche im Terminal:

                sudo mysql_secure_installation
                

                Lesen!

                1. jetzt bekomme keine Warnung mehr...

                  ich habe wie hier sagt gemacht;

                  Lose alles von Mysql; $ sudo apt-get remove --purge --auto-remove mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7

                  Diese ist die Mysql version die ich mit MySQL APT Repository installiert habe .

                  dann ,

                  wird sie neu installiert (Mysql-5.7) mit sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb

                  Diese ist der Paket from MySQL APT Repository der ich von hier download habe...

                  dann Download Workbench von Debain repository…

                  und installier mit sudo dpkg -i mysql-workbench_6.3.8+dfsg-1_amd64.deb

                  ....und jetzt bekomme keine Warnung mehr...........

                  ich bedanke mich dir für deine Hilfe ! , ich wünsche dir eine schöne wochenanfang !

                  1. Diese ist der Paket from MySQL APT Repository der ich von hier download habe...

                    dann Download Workbench von Debain repository… und installier mit sudo dpkg -i mysql-workbench_6.3.8+dfsg-1_amd64.deb

                    NEIN! Das ist nicht richtig! Wenn das Paket mysql-workbench im Debian-Repositority oder in einem vertrauenswürdigem Hersteller-Repositority vorhanden ist und von dort mit apt oder synaptic installiert werden kann, dann ist es ein Fehler, das Paket manuell herunterzuladen und manuell zu installieren. Auf Dauer betrachtet kann und wird man sich so die Paketabhängigkeiten und somit das System so kaputt machen, dass es sich wie bezüglich der Softwareinstallation Windows verhält… Das gilt nicht nur für MySQL oder die MySQL-Workbench, sondern für alle Pakete.

                    1. ....und was wird du mir empfehlt um Workbench zu installieren ?

                      weil mir schwieriger Tabelle bauen mit Workbench ist , versuche es mit phpmyadmin , jetzt habe sie installiert ,aber bekomme untern dieser warnung,

                      Der phpMyAdmin-Konfigurationsspeicher ist nicht vollständig konfiguriert, einige erweiterte Funktionen wurden deaktiviert. Finden Sie heraus warum. Oder wechseln Sie in einer beliebigen Datenbank zum Tab „Operationen“, um die Einstellung dort vorzunehmen.

                      jetz bekomme nicht mehr dieser warnung, ich habe das gemacht;

                      sudo dpkg-reconfigure phpmyadmin <Ok>

                      Reinstall database for phpmyadmin: <Yes>

                      Connection method for MySQL database server for phpmyadmin: TCP/IP

                      Host name of the MySQL database server for phpmyadmin: localhost

                      Port number for the MySQL service: 3306

                      MySQL database name for phpmyadmin: phpmyadmin

                      <Ok>

                      MySQL username for phpmyadmin: root

                      MySQL application password for phpmyadmin: pass # OR ANY PASSWORD YOU WANT

                      Password confirmation: pass

                      Name of the database's administrative user: root

                      Web server to reconfigure automatically: apache2

                      An error occurred while installing the database: ignore

                      1. ...und was wird du mir empfehlt um Workbench zu installieren ?

                        Das Standardvorgehen:

                        Vorbereitung, weil Du das Paket manuell installiert hast:

                        dpkg --purge mysql-workbench

                        1. Hole aktuelle Informationen über verfügbare Pakete:

                        sudo apt -y update

                        2. Lösche Pakete, welche nicht mehr gebraucht werden (spart Zeit bei 3. und auf der Festplatte):

                        sudo apt -y autoremove

                        3. Vollständiges Update der Software (soll man bei solchen Gelegenheiten tun):

                        sudo apt -y full-upgrade

                        4. Installation und Konfiguration des Paketes:

                        sudo apt -y install mysql-workbench

                        1. jetz habe meine datebank mit phpmyadmin gebaut,

                          datenbank

                          mit diesen Code,

                          <?php
                          
                          
                          class ClassProveContakt3 
                          {
                          
                                private $Name;
                                private $Email;
                                private $Message;
                                private $PostOK;
                                private $DateTime;
                                private $items;
                                private $ips;
                                
                                
                          
                           
                              function __construct() 
                              {
                          
                                   $this -> ips = $_SERVER['REMOTE_ADDR'];
                                   $this -> DateTime = date('m/d/Y h:i:s a');  
                                   $this -> items = ['Name', 'Email', 'Message']; 
                          
                                   
                                   
                                   
                                   $flag = true;
                                    foreach ( $this -> items as $key ) {  
                          			           if ( empty ( $_POST[$key] ) )  {
                          			             $flag = false;    
                          			           } else {    
                          			             $this -> $key = trim( filter_var( $_POST[$key], FILTER_SANITIZE_STRING ) ); 
                          			            }    
                          		   }	     
                                   $this -> PostOk = $flag; 
                                   
                              }
                          
                           
                              
                          
                            
                              function ShowForm() 
                              {
                          ?>
                                <form  method="POST">
                                  <label for="name"><b>Name * </b></label>
                                  <input type="text" id="name" name="Name" value="">
                                  <label for="email"><b>E-mail * </b></label>
                                  <input type="email" id="email" name="Email" value="">
                                  <br><br>
                                  <label><b> Message * </b><br>
                                     <textarea cols="45" rows="6" id="text" name="Message"></textarea>      
                                  </label>
                                  <br><br>
                                  <input  type="submit" name="post" value="POST COMMENT" id="comment">
                                </form>
                          <?php
                              }
                              function PostOkT() 
                              {
                                       if (! $this -> PostOK)
                                       {
                                         echo "<br><b><h3>*** Please enter all required fields ***</h3></b>";  
                                       } 
                                       else 
                                       {
                                         
                                         
                          
                                           $this->writeCommentToDatabase(); 
                          
                                           $messages = $this->getMessages();
                          
                                           foreach ($messages as $message)
                                           {
                          ?>
                          <article>
                             <h2>Message from <?= htmlspecialchars($message['name']) ?> (<?= htmlspecialchars($message['email'])?>)</h2>
                             <p>Created <?= $message['datetime'] ?></p>
                             <p><?= $message['message'] ?></p>
                          </article>
                          <?php
                                           
                                               
                                         }    
                                       }     
                               }
                               function writeCommentToDatabase()
                               {
                                // Establish connection with MYSQL Server
                                try
                                {
                                   $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                }
                                catch (PDOException $pe)
                                {
                                   echo "<br>Cannot connect to database: " . $pe->getMessage();
                                   return false;
                                }
                          
                                //Prepare Query of SQL
                                $statement = $db->prepare("INSERT INTO mela(name, email, message, datetime, ips) VALUES (:name, :email, :message, :date, :ips)");
                                if (!$statement)
                                {
                                   echo "<br><br>prepare failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($dbh->errorInfo(), true) . "</p>";
                                   $ok = FALSE;
                                }
                                else
                                {
                                   $ok = $statement->bindValue(':name', $this->Name, PDO::PARAM_STR)
                                      && $statement->bindValue(':email', $this->Email, PDO::PARAM_STR)
                                      && $statement->bindValue(':message', $this->Message, PDO::PARAM_STR)
                                      && $statement->bindValue(':date', date("Y-m-d H:i:s"), PDO::PARAM_STR)
                                      && $statement->bindValue(':ips', $this->ips, PDO::PARAM_STR);
                                   if (!$ok)
                                   {
                                      echo "<br><br>bindValue failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($dbh->errorInfo(), true) . "</p>";
                                   }
                                }
                                if ($ok)
                                {
                                   $ok = $statement->execute();
                                   if (!$ok)
                                   {
                                      echo "<br><br>execute failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($dbh->errorInfo(), true) . "</p>";
                                   }
                          
                          
                                }
                                echo "<br/><br/><span>Data Inserted successfully...!!</span>";
                                 $this->db = null;
                                 return $ok;
                          
                          
                              }    
                              function getMessages()
                              {
                                  $db = getConnection();
                                  if (!$db)
                                  {
                                      return false;
                                  }
                          
                                  $sql = "SELECT name, email, message, datetime FROM mela ORDER BY datetime DESC";
                                  $statement = $db->query($sql);
                          
                                  if (!$statement)
                                  {
                                      $this->reportPDOError("Cannot create query", $sql, $db);
                                      return false;
                                  }
                          
                                  $result = $statement->fetchAll(PDO::FETCH_ASSOC);
                          
                                  if ($result === FALSE)
                                  {
                                      $this->reportPDOError("fetchAll(ASSOC) failed", $sql, $statement);
                                  }
                                  return $result;
                                   
                              }
                              function getConnection() 
                              {
                                    // Establish connection with MYSQL Server
                                    try
                                    {
                                       return new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                    }
                                    catch (PDOException $pe)
                                    {
                                       echo "<br>Cannot connect to database: " . $pe->getMessage();
                                       return false;
                                    }
                                }
                          
                                private function reportPDOError($message, $sql, $pdo)
                                {
                                   $info = $pdo->errorInfo();
                          
                                   echo "<div style='color:red'><b>Error in SQL Access: $message</b>";
                                   echo "<br>SQL-Statement: $sql";
                                   echo "<br>PDO SQLSTATE: $info[0]";
                                   echo "<br>MySQL error code: $info[1]";
                                   echo "<br>MySQL error message: $info[2]</div>";
                                }
                               
                          }
                                      
                          $Newobject = new ClassProveContakt3();
                          $Newobject -> ShowForm();
                          $Newobject ->  PostOkT(); 
                          $Newobject -> getConnection();
                          
                          
                          
                              
                          
                          ?>
                          
                          

                          aber wenn füllen alles bekomme nichts weder auf der Website noch Datenbank

                          1. aber wenn füllen alles bekomme nichts weder auf der Website noch Datenbank

                            Du weißt inzwischen sehr genau, dass wir Informationen brauchen um Dir helfen zu können.

                            Du hast zwei Error-Logs.

                            1. /var/log/apache2/error.log
                            2. /var/log/mysql/error.log

                            Was steht da drin?

                            Mit

                            sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log
                            

                            kannst du Dir das in einem Terminal anzeigen lassen und den Versuch des Eintrages wiederholen. Die neuen Fehler werden dann angezeigt.

                            1. mit /var/log/apache2/error.log

                              error zeigen

                              mit /var/log/mysql/error.log

                              log error

                              bei letze Unknow database'meine' , habe das Probleme gelost , das Fehler war , das ich False name an dem Databank gegeben habe...

                              mit

                              sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log

                              wenn füllen der Website zeigt das,

                              was console zeigt

                              1. Also ist das Problem gelöst?

                                Bitte mache künftig von den Ausgaben der logfiles keine Bildschirmfotos, sondern kopiere die als (Quell)Text hier in Forum.

                                Dann ich das nicht nur lesen sondern auch durchsuchen.

                                1. Also ist das Problem gelöst?

                                  nein , aber die letzte warnung sagt ,

                                  2019-05-13T10:36:09.072808Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

                                  jetzt versuche eine lösung für dieser probleme...

                                  über das Warnung vom datetime , habe eine Lösung hier gefunde..

                                  nur als info…

                                  ich habe dieser phpmyadmi version; Versionsinformationen: 4.6.6deb4

                                  Php , habe php7.1

                                  1. 2019-05-13T10:36:09.072808Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
                                    

                                    Das ist eine Warnung, kein Fehler. Wenn es davor keine Fehlermeldung gab wurde der Eintrag gemacht.

                                    datenbank

                                    Es geht um die Definition der Spalte "datatime" (in Zeile 4). Entferne den default (Standard) oder ändere den Datentyp in datetime. Ich bin mir aber nicht sicher, ob bei dem Datentyp datetime ein Default/Standard gesetzt werden darf.

                                    1. Vielleich kann nicht seien wegen meine phpmyadmin version..

                                      ich habe dieser phpmyadmi version; Versionsinformationen: 4.6.6deb4

                                      oder meine php version...

                                      Php , habe php7.1

                                      1. Nein. Daran liegt es vermutlich nicht. In Deinem Fall (Nutzung am Localhost, Datenbank auf localhost) ist phpmyadmin aber nicht die beste Lösung, weil es Einschränkungen durch den Webserver und PHP unterliegt. Du hast die Workbench? Benutze nur die Workbench!

                                  2. nein , aber die letzte warnung sagt ,

                                    Du hast die Spalte ips als Integer festgelegt. Du willst aber etwas wie

                                    '167.168.169.170' eintragen. Das ist ein String.

                                    Lösung:

                                    Entweder änderst Du den Datentyp für IPS in varchar(11) oder aber du änderst in Deinem Skript die Zeile:

                                    $this -> ips = $_SERVER['REMOTE_ADDR'];
                                    

                                    in:

                                    $this -> ips = ip2long( $_SERVER['REMOTE_ADDR'] );
                                    

                                    Manual:

                                    Warum text oder varchar womöglich besser ist:

                                    Allerdings wird sich in Zukunft vieles verändern und Du musst an IPv6 denken. Außerdem daran, dass je nach Serverkonfiguration $_SERVER['REMOTE_ADDR'] auch einen Hostname liefern kann.

                                    1. ich habe gemacht wie du sagst , aber bekomme noch nichts... , ich habe hier gelesen , und es gibt keine probleme zwischen phpmyadmin version und meine php version...

                                      1. Wenn der Datensatz nicht eingetragen wird liegt es an einem Fehler.

                                        Der Fehler kann angezeigt werden.

                                        Es kann aber sein, Du vermutest nur, dass der Datensatz nicht eingetragen wurde.

                                        ~> mysql -u root -p Datenbank 
                                        

                                        und dann

                                        mysql> select * from tabelle;
                                        

                                        kann in einem Terminal zeigen, ob die Vermutung stimmt.

                                        1. was zeigt

                                          me@me:~$ mysql -u root -p meine
                                          Enter password: 
                                          Reading table information for completion of table and column names
                                          You can turn off this feature to get a quicker startup with -A
                                          
                                          Welcome to the MySQL monitor.  Commands end with ; or \g.
                                          Your MySQL connection id is 416
                                          Server version: 5.7.26 MySQL Community Server (GPL)
                                          
                                          Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
                                          
                                          Oracle is a registered trademark of Oracle Corporation and/or its
                                          affiliates. Other names may be trademarks of their respective
                                          owners.
                                          
                                          Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
                                          
                                          mysql> select * from mela
                                              -> ^C
                                          mysql> select * from mela;
                                          Empty set (0,00 sec)
                                          
                                          mysql> 
                                          
                                          
                                            1. Öffne ein Terminal.
                                            2. Gib sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log ein.
                                            3. Lass das Terminal geöffnet.
                                            4. Gib im Browser die Daten ein.
                                            5. Zeige uns die Ausgaben im Terminal.
                                            1. ich habe gemacht wie du willst aber wird nicht gezeigt,

                                              me@me:~$ sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log
                                              [sudo] Passwort für me: 
                                              ==> /var/log/apache2/error.log <==
                                              
                                              ==> /var/log/mysql/error.log <==
                                              
                                              
                                              

                                              der Terminal zeigt nicht...

                                              1. sorry als ich kampfe mit phpmyadmin , habe vergesen ... jetzt habe etwas…

                                                [Mon May 13 18:20:06.185792 2019] [php7:notice] [pid 25078] [client ::1:56256] PHP Notice:  Undefined variable: dbh in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:20:06.185898 2019] [php7:error] [pid 25078] [client ::1:56256] PHP Fatal error:  Uncaught Error: Call to a member function errorInfo() on null in /var/www/html/classprove.php:112\nStack trace:\n#0 /var/www/html/classprove.php(73): ClassProveContakt3->writeCommentToDatabase()\n#1 /var/www/html/classprove.php(126): ClassProveContakt3->PostOkT()\n#2 /var/www/html/contact.php(85): require('/var/www/html/c...')\n#3 {main}\n  thrown in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:21:43.724258 2019] [php7:notice] [pid 25641] [client ::1:56258] PHP Notice:  Undefined variable: dbh in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:21:43.724320 2019] [php7:error] [pid 25641] [client ::1:56258] PHP Fatal error:  Uncaught Error: Call to a member function errorInfo() on null in /var/www/html/classprove.php:112\nStack trace:\n#0 /var/www/html/classprove.php(73): ClassProveContakt3->writeCommentToDatabase()\n#1 /var/www/html/classprove.php(126): ClassProveContakt3->PostOkT()\n#2 /var/www/html/contact.php(85): require('/var/www/html/c...')\n#3 {main}\n  thrown in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:23:18.778282 2019] [php7:notice] [pid 25133] [client ::1:56260] PHP Notice:  Undefined variable: dbh in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:23:18.778377 2019] [php7:error] [pid 25133] [client ::1:56260] PHP Fatal error:  Uncaught Error: Call to a member function errorInfo() on null in /var/www/html/classprove.php:112\nStack trace:\n#0 /var/www/html/classprove.php(127): ClassProveContakt3->writeCommentToDatabase()\n#1 /var/www/html/contact.php(85): require('/var/www/html/c...')\n#2 {main}\n  thrown in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:36:49.787307 2019] [php7:notice] [pid 26053] [client ::1:56302] PHP Notice:  Undefined variable: dbh in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:36:49.787427 2019] [php7:error] [pid 26053] [client ::1:56302] PHP Fatal error:  Uncaught Error: Call to a member function errorInfo() on null in /var/www/html/classprove.php:112\nStack trace:\n#0 /var/www/html/classprove.php(127): ClassProveContakt3->writeCommentToDatabase()\n#1 /var/www/html/contact.php(85): require('/var/www/html/c...')\n#2 {main}\n  thrown in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:42:05.163658 2019] [php7:notice] [pid 25641] [client ::1:56372] PHP Notice:  Undefined variable: dbh in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                [Mon May 13 18:42:05.163792 2019] [php7:error] [pid 25641] [client ::1:56372] PHP Fatal error:  Uncaught Error: Call to a member function errorInfo() on null in /var/www/html/classprove.php:112\nStack trace:\n#0 /var/www/html/classprove.php(127): ClassProveContakt3->writeCommentToDatabase()\n#1 /var/www/html/contact.php(85): require('/var/www/html/c...')\n#2 {main}\n  thrown in /var/www/html/classprove.php on line 112, referer: http://localhost/contact.php
                                                
                                                
                                                1. Lasse die Datenbank, phpmyadmin & co mal zur Seite, denn

                                                  Du hast zahlreiche Tippfehler.

                                                  In Zeile 95 steht z.B.:

                                                  $db = new PDO...

                                                  In Zeile 107 aber:

                                                  $db->errorCode() … $dbh->errorInfo()

                                                  (Das h ist falsch.)

                                                  Weiter:

                                                  Deine Spalte mit dem Zeitpunkt heißt "datatime". In Zeile 104 willst Du aber in eine Spalte datetime schreiben.

                                                  Ich kann die Tippfehler nicht alle für Dich finden.

                                                  Rezept:

                                                  Skript ausführen, den ersten neuen Fehler im error-log berichtigen und von vorn - bis beim Ausführen keine Fehler mehr gemeldet werden.

                                                  1. alle diesen Fehler sind von die anderen Code, Code B , die Fehler die geschrieben hast , habe selbst korrigieren.... , weil lange zeit braucht, habe versucht mit dem andere, Code B , mit dem andere Code. Code B, bekomme auf der Tabelle , ich möchte Prüfen warum mit dieser Code , Code B, bekomme an der Tabelle aber nicht bekomme mit der Code A.…

                                                    Bin mit der Code A , nach halbe Stünde habe nur das Bekommt, 2019-05-13T17:48:23.842837Z 967 [Note] Event Scheduler: scheduler thread started with id 967 , und habe 4 mal ihr gefüllt....

                                                    1. alle diesen Fehler sind von die anderen Code, Code B , die Fehler die geschrieben hast , habe selbst korrigieren.... , weil lange zeit braucht, habe versucht mit dem andere, Code B , mit dem andere Code. Code B, bekomme auf der Tabelle , ich möchte Prüfen warum mit dieser Code , Code B, bekomme an der Tabelle aber nicht bekomme mit der Code A.…

                                                      Bin mit der Code A

                                                      Ich habe davon kein Wort verstanden.

                                                      , nach halbe Stünde habe nur das Bekommt, 2019-05-13T17:48:23.842837Z 967 [Note] Event Scheduler: scheduler thread started with id 967 , und habe 4 mal ihr gefüllt....

                                                      Du hast 4 mal diese Meldung im error-log? In welchem?

                                                      Wie lautet diese vollständig? Gibt es vor diesem Text eine andere Meldung?

                                                      1. Wie lautet diese vollständig? Gibt es vor diesem Text eine andere Meldung?

                                                        ich habe keine andere Meldung bekomme als ich Frühe gepostet habe , das bedeutet die keine Fehler auf dem Code gibt....wie ich verstand habe...aber ich bekomme nichts weder auf der Webseite noch Datenbank

                                                        1. Dann schauen wir mal:

                                                          [Mon May 13 18:42:05.163792 2019] [php7:error] [pid 25641] [client ::1:56372] PHP Fatal error: Uncaught Error: Call to a member function errorInfo() on null in /var/www/html/classprove.php:112

                                                          Die "neue" Fehlermeldung kam um

                                                          2019-05-13T17:48:23

                                                          Also 54 Minuten früher. Das stammt von mysql und die "neue" Fehlermeldung ist eine alte Fehlermeldung.

                                                          Du musst Deine Arbeitsweise straffen: Ein Fenster error-log (tail -f /var/log/apache2/error.log), ein Fenster mit dem Browser, eines mit dem Editor.

                                                          1. ich habe mysql neu installiert , aber bekomme gleiche…

                                                            ich möchte feier abends machen... ich bedanke mich dich für deine Hilfe ! , wenn morgen nicht arbeite , möchte weiter machen... um muss eine Lösung auf meine Probleme zu finden …

                                                            ich wünsche dir eine schöne nachts !

                                                          2. Ich habe mal alle Typos korrigiert, den Code ein wenig aufgeräumt und die allergröbsten Strukturfehler beseitigt.

                                                            Ich markiere den Code als "schlecht", weil er zwar funktioniert aber als Gästebuch nicht wirklich brauchbar ist.

                                                            <?php
                                                            
                                                            class ClassProveContakt3 {
                                                            
                                                            	private $dbHost = 'localhost'; # Host der Datenbank
                                                            	private $dbName = 'name';      # Name der Datenbank
                                                            	private $dbUser = 'user';      # Name der Datenbank
                                                            	private $dbPass = 'pass';      # Passwort
                                                            
                                                            	private $Name;
                                                            	private $Email; 
                                                              private $Message;
                                                            	private $PostOK;
                                                            	private $DateTime;
                                                            	private $items;
                                                            	private $ip;
                                                            	private $dbh;
                                                            
                                                            	function __construct() {
                                                            
                                                            		 $this -> ip = $_SERVER['REMOTE_ADDR'];
                                                            		 $this -> DateTime = date('m/d/Y h:i:s a');  
                                                            		 $this -> items = ['Name', 'Email', 'Message']; 
                                                            		 $flag = true;
                                                            
                                                                     foreach ( $this -> items as $key ) {  
                                                            			if ( empty ( $_POST[$key] ) )  {
                                                            				$flag = false;    
                                                            			} else {    
                                                            				#trigger_error('Codepoint __construct:1  ' . $key . ': ' . $_POST[$key]);
                                                            				$this -> $key = trim( filter_var( $_POST[$key], FILTER_SANITIZE_STRING ) ); 
                                                            				$this -> $key = trim( $_POST[$key] ); 
                                                            			}    
                                                            		}
                                                            		#trigger_error('Codepoint __construct:2  TRUE');   
                                                                    $this -> PostOk = $flag;
                                                                    #trigger_error('Codepoint __construct:3 ' . $this -> PostOk );  
                                                            	}
                                                            
                                                                private function getConnection() {
                                                                      // Establish connection with MYSQL Server
                                                                      try {
                                                                         $this -> dbh =  new PDO( 'mysql:host=' . $this -> dbHost  . ';dbname=' . $this -> dbName, $this -> dbUser, $this -> dbPass );
                                                                      } catch ( PDOException $pe ) {
                                                                         trigger_error ("Cannot connect to database: " . $pe -> getMessage() , E_USER_ERROR );
                                                                      }
                                                                  }
                                                            
                                                            	private function reportPDOError( $message, $sql ) {
                                                                     $info = $this -> dbh -> errorInfo();
                                                            
                                                                     echo "<div style='color:red'><b>Error in SQL Access: $message</b>";
                                                                     echo "<br>SQL-Statement: $sql";
                                                                     echo "<br>PDO SQLSTATE: $info[0]";
                                                                     echo "<br>MySQL error code: $info[1]";
                                                                     echo "<br>MySQL error message: $info[2]</div>";
                                                            	}
                                                                
                                                                private function unsetFormdata() {
                                                            		foreach ( $this -> items as $key ) { 
                                                            			unset( $_POST[$key] );
                                                            		}
                                                            	}
                                                                  
                                                            
                                                                function ShowForm()  {
                                                            ?>
                                                            <!-- <form  method="POST" action="https://home.fastix.org/phpinfo.php">-->
                                                            <form  method="POST"">
                                                            	<label for="name"><b>Name * </b></label>
                                                            	<input type="text" id="name" name="Name" value="<?=@htmlentities( $_POST['Name'] );?>">
                                                            	<label for="email"><b>E-mail * </b></label>
                                                            	<input type="email" id="email" name="Email" value="<?=@htmlentities( $_POST['Email'] );?>">
                                                            	<br><br>
                                                            	<label><b> Message * </b><br>
                                                            		<textarea cols="45" rows="6" id="text" name="Message"><?=@htmlspecialchars( $_POST['Message'] );?></textarea>      
                                                            	</label>
                                                            	<br><br>
                                                            	<input  type="submit" name="post" value="POST COMMENT" id="comment">
                                                            </form>
                                                            <?php
                                                                }
                                                                
                                                                
                                                                function TestPostData() {
                                                            		
                                                            		if ( $this -> PostOk ) {
                                                            			$this -> writeCommentToDatabase();
                                                            		} else {
                                                            			echo '<div class="msg">*** Please enter all required fields ***</div>';  
                                                            		}
                                                                } 
                                                            
                                                            	function writeCommentToDatabase() {
                                                            	// Establish connection with MYSQL Server
                                                            	
                                                            		if ( ! $this -> dbh ) {
                                                            			$this -> getConnection();
                                                            		}
                                                            		//Prepare Query of SQL
                                                            		$statement = $this -> dbh -> prepare("INSERT INTO mela(name, email, message, datetime, ip) VALUES (:name, :email, :message, :date, :ip)");
                                                            		if ( ! $statement ) {
                                                            			trigger_error( 'prepare failed: SQLSTATE=' . $this -> dbh -> errorCode() . ', Error Info=' . print_r( $this -> dbh -> errorInfo(), true ), E_USER_ERROR ) ;
                                                            		} else {
                                                            			$ok = $statement -> bindValue( ':name',    $this -> Name,         PDO::PARAM_STR )
                                                            			   && $statement -> bindValue( ':email',   $this -> Email,        PDO::PARAM_STR )
                                                            			   && $statement -> bindValue( ':message', $this -> Message,      PDO::PARAM_STR )
                                                            			   && $statement -> bindValue( ':date',    date("Y-m-d H:i:s"), PDO::PARAM_STR )
                                                            			   && $statement -> bindValue( ':ip',      $this -> ip,          PDO::PARAM_STR );
                                                            			if ( ! $ok )  {
                                                            				echo "<br><br>bindValue failed: SQLSTATE=" . $this -> dbh -> errorCode() . ", Error Info=" . print_r( $dbh -> errorInfo(), true ) . "</p>";
                                                            			}
                                                            		}
                                                            		if ( $ok ) {
                                                            			$ok = $statement -> execute();
                                                            		} 
                                                            		
                                                            		if ( ! $ok ) {
                                                                        trigger_error( "execute failed: SQLSTATE=" . $this -> dbh -> errorCode() . ", Error Info=" . print_r($this -> dbh -> errorInfo(), true),  E_USER_ERROR );
                                                            		} else {
                                                            			echo '<div class="msg">Data Inserted successfully!</div>';
                                                            			$this ->  unsetFormdata();
                                                            			return $ok;
                                                            		}
                                                                }    
                                                            
                                                                function getMessages()
                                                                {
                                                            		if ( ! $this -> dbh ) {
                                                            			$this -> getConnection();
                                                            		}
                                                            
                                                                    $sql = "SELECT name, email, message, datetime FROM mela ORDER BY datetime DESC";
                                                                    $statement = $this -> dbh -> query( $sql );
                                                            
                                                                    if ( ! $statement ) {
                                                                        $this -> reportPDOError('SQL-Error:', $sql );
                                                                        return false;
                                                                    }
                                                            
                                                                    $result = $statement -> fetchAll( PDO::FETCH_ASSOC );
                                                            
                                                                    if ( false === $result ) {
                                                                        $this->reportPDOError( "fetchAll(ASSOC) failed", $sql );
                                                                    }
                                                                    foreach ($result as $message) {
                                                            ?>
                                                            <article>
                                                               <h2>Message from <?=htmlspecialchars( $message['name'] ) ?> &lt;<?= htmlspecialchars( $message['email'] ); ?>&gt;</h2>
                                                               <p>Created <?=htmlspecialchars( $message['datetime'] ); ?></p>
                                                               <p><?=htmlspecialchars( $message['message'] ); ?></p>
                                                            </article>
                                                            <?php
                                                            		}    
                                                                }
                                                            }
                                                                        
                                                            $Newobject = new ClassProveContakt3();
                                                            $Newobject -> TestPostData();
                                                            $Newobject -> ShowForm();
                                                            $Newobject -> getMessages();
                                                            
                                                              1. Die Mailadresse wird angezeigt. Das nützt nur Spammern.
                                                              2. Keine Möglichkeit, Kommentare zu moderieren.
                                                              3. Spamfilter fehlt.
                                                              4. Kein Blockieren wiederholter Einträge. (z.B. mit [F5])
                                                              5. Warum eigentlich 3 Methodenaufrufe?
                                                              6. Ignoriert in der PHP.ini hinterlegte Zugangsdaten zur Datenbank
                                                              7. Keine Zuordnung zu verschiedenen Seiten/Themen möglich.
                                                              8. Das HTML ist grausig und basiert nicht auf Templates.
                                                              • Was den anderen noch so einfällt.
                                                              1. Danke für deinen Empfehlungen !

                                                                Die Mailadresse wird angezeigt. Das nützt nur Spammern.

                                                                ich möchte nicht das die emails werden gezeigt,vielleich soll meine Code prüfen ..

                                                                Kannst du Bitte helfe mit deinen Empfehlungen ...

                                                                Frühe mit diesen Code bekomme zu meine Datenbank , aber jetzt bekomme nicht mehr....

                                                                1. Hier ist wie meine php.ini habe;

                                                                  
                                                                  
                                                                  ;;;;;;;;;;;;;;;;;;;
                                                                  ; About php.ini   ;
                                                                  ;;;;;;;;;;;;;;;;;;;
                                                                  ; PHP's initialization file, generally called php.ini, is responsible for
                                                                  ; configuring many of the aspects of PHP's behavior.
                                                                  
                                                                  ; PHP attempts to find and load this configuration from a number of locations.
                                                                  ; The following is a summary of its search order:
                                                                  ; 1. SAPI module specific location.
                                                                  ; 2. The PHPRC environment variable. (As of PHP 5.2.0)
                                                                  ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
                                                                  ; 4. Current working directory (except CLI)
                                                                  ; 5. The web server's directory (for SAPI modules), or directory of PHP
                                                                  ; (otherwise in Windows)
                                                                  ; 6. The directory from the --with-config-file-path compile time option, or the
                                                                  ; Windows directory (C:\windows or C:\winnt)
                                                                  ; See the PHP docs for more specific information.
                                                                  ; http://php.net/configuration.file
                                                                  
                                                                  ; The syntax of the file is extremely simple.  Whitespace and lines
                                                                  ; beginning with a semicolon are silently ignored (as you probably guessed).
                                                                  ; Section headers (e.g. [Foo]) are also silently ignored, even though
                                                                  ; they might mean something in the future.
                                                                  
                                                                  ; Directives following the section heading [PATH=/www/mysite] only
                                                                  ; apply to PHP files in the /www/mysite directory.  Directives
                                                                  ; following the section heading [HOST=www.example.com] only apply to
                                                                  ; PHP files served from www.example.com.  Directives set in these
                                                                  ; special sections cannot be overridden by user-defined INI files or
                                                                  ; at runtime. Currently, [PATH=] and [HOST=] sections only work under
                                                                  ; CGI/FastCGI.
                                                                  ; http://php.net/ini.sections
                                                                  
                                                                  ; Directives are specified using the following syntax:
                                                                  ; directive = value
                                                                  ; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
                                                                  ; Directives are variables used to configure PHP or PHP extensions.
                                                                  ; There is no name validation.  If PHP can't find an expected
                                                                  ; directive because it is not set or is mistyped, a default value will be used.
                                                                  
                                                                  ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
                                                                  ; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
                                                                  ; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a
                                                                  ; previously set variable or directive (e.g. ${foo})
                                                                  
                                                                  ; Expressions in the INI file are limited to bitwise operators and parentheses:
                                                                  ; |  bitwise OR
                                                                  ; ^  bitwise XOR
                                                                  ; &  bitwise AND
                                                                  ; ~  bitwise NOT
                                                                  ; !  boolean NOT
                                                                  
                                                                  ; Boolean flags can be turned on using the values 1, On, True or Yes.
                                                                  ; They can be turned off using the values 0, Off, False or No.
                                                                  
                                                                  ; An empty string can be denoted by simply not writing anything after the equal
                                                                  ; sign, or by using the None keyword:
                                                                  
                                                                  ;  foo =         ; sets foo to an empty string
                                                                  ;  foo = None    ; sets foo to an empty string
                                                                  ;  foo = "None"  ; sets foo to the string 'None'
                                                                  
                                                                  ; If you use constants in your value, and these constants belong to a
                                                                  ; dynamically loaded extension (either a PHP extension or a Zend extension),
                                                                  ; you may only use these constants *after* the line that loads the extension.
                                                                  
                                                                  ;;;;;;;;;;;;;;;;;;;
                                                                  ; About this file ;
                                                                  ;;;;;;;;;;;;;;;;;;;
                                                                  ; PHP comes packaged with two INI files. One that is recommended to be used
                                                                  ; in production environments and one that is recommended to be used in
                                                                  ; development environments.
                                                                  
                                                                  ; php.ini-production contains settings which hold security, performance and
                                                                  ; best practices at its core. But please be aware, these settings may break
                                                                  ; compatibility with older or less security conscience applications. We
                                                                  ; recommending using the production ini in production and testing environments.
                                                                  
                                                                  ; php.ini-development is very similar to its production variant, except it is
                                                                  ; much more verbose when it comes to errors. We recommend using the
                                                                  ; development version only in development environments, as errors shown to
                                                                  ; application users can inadvertently leak otherwise secure information.
                                                                  
                                                                  ; This is php.ini-production INI file.
                                                                  
                                                                  ;;;;;;;;;;;;;;;;;;;
                                                                  ; Quick Reference ;
                                                                  ;;;;;;;;;;;;;;;;;;;
                                                                  ; The following are all the settings which are different in either the production
                                                                  ; or development versions of the INIs with respect to PHP's default behavior.
                                                                  ; Please see the actual settings later in the document for more details as to why
                                                                  ; we recommend these changes in PHP's behavior.
                                                                  
                                                                  ; display_errors
                                                                  ;   Default Value: On
                                                                  ;   Development Value: On
                                                                  ;   Production Value: Off
                                                                  
                                                                  ; display_startup_errors
                                                                  ;   Default Value: Off
                                                                  ;   Development Value: On
                                                                  ;   Production Value: Off
                                                                  
                                                                  ; error_reporting
                                                                  ;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
                                                                  ;   Development Value: E_ALL
                                                                  ;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
                                                                  
                                                                  ; html_errors
                                                                  ;   Default Value: On
                                                                  ;   Development Value: On
                                                                  ;   Production value: On
                                                                  
                                                                  ; log_errors
                                                                  ;   Default Value: Off
                                                                  ;   Development Value: On
                                                                  ;   Production Value: On
                                                                  
                                                                  ; max_input_time
                                                                  ;   Default Value: -1 (Unlimited)
                                                                  ;   Development Value: 60 (60 seconds)
                                                                  ;   Production Value: 60 (60 seconds)
                                                                  
                                                                  ; output_buffering
                                                                  ;   Default Value: Off
                                                                  ;   Development Value: 4096
                                                                  ;   Production Value: 4096
                                                                  
                                                                  ; register_argc_argv
                                                                  ;   Default Value: On
                                                                  ;   Development Value: Off
                                                                  ;   Production Value: Off
                                                                  
                                                                  ; request_order
                                                                  ;   Default Value: None
                                                                  ;   Development Value: "GP"
                                                                  ;   Production Value: "GP"
                                                                  
                                                                  ; session.gc_divisor
                                                                  ;   Default Value: 100
                                                                  ;   Development Value: 1000
                                                                  ;   Production Value: 1000
                                                                  
                                                                  ; session.sid_bits_per_character
                                                                  ;   Default Value: 4
                                                                  ;   Development Value: 5
                                                                  ;   Production Value: 5
                                                                  
                                                                  ; short_open_tag
                                                                  ;   Default Value: On
                                                                  ;   Development Value: Off
                                                                  ;   Production Value: Off
                                                                  
                                                                  ; track_errors
                                                                  ;   Default Value: Off
                                                                  ;   Development Value: On
                                                                  ;   Production Value: Off
                                                                  
                                                                  ; variables_order
                                                                  ;   Default Value: "EGPCS"
                                                                  ;   Development Value: "GPCS"
                                                                  ;   Production Value: "GPCS"
                                                                  
                                                                  ;;;;;;;;;;;;;;;;;;;;
                                                                  ; php.ini Options  ;
                                                                  ;;;;;;;;;;;;;;;;;;;;
                                                                  ; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
                                                                  ;user_ini.filename = ".user.ini"
                                                                  
                                                                  ; To disable this feature set this option to empty value
                                                                  ;user_ini.filename =
                                                                  
                                                                  ; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
                                                                  ;user_ini.cache_ttl = 300
                                                                  
                                                                  ;;;;;;;;;;;;;;;;;;;;
                                                                  ; Language Options ;
                                                                  ;;;;;;;;;;;;;;;;;;;;
                                                                  
                                                                  ; Enable the PHP scripting language engine under Apache.
                                                                  ; http://php.net/engine
                                                                  engine = On
                                                                  
                                                                  ; This directive determines whether or not PHP will recognize code between
                                                                  ; <? and ?> tags as PHP source which should be processed as such. It is
                                                                  ; generally recommended that <?php and ?> should be used and that this feature
                                                                  ; should be disabled, as enabling it may result in issues when generating XML
                                                                  ; documents, however this remains supported for backward compatibility reasons.
                                                                  ; Note that this directive does not control the <?= shorthand tag, which can be
                                                                  ; used regardless of this directive.
                                                                  ; Default Value: On
                                                                  ; Development Value: Off
                                                                  ; Production Value: Off
                                                                  ; http://php.net/short-open-tag
                                                                  short_open_tag = Off
                                                                  
                                                                  ; The number of significant digits displayed in floating point numbers.
                                                                  ; http://php.net/precision
                                                                  precision = 14
                                                                  
                                                                  ; Output buffering is a mechanism for controlling how much output data
                                                                  ; (excluding headers and cookies) PHP should keep internally before pushing that
                                                                  ; data to the client. If your application's output exceeds this setting, PHP
                                                                  ; will send that data in chunks of roughly the size you specify.
                                                                  ; Turning on this setting and managing its maximum buffer size can yield some
                                                                  ; interesting side-effects depending on your application and web server.
                                                                  ; You may be able to send headers and cookies after you've already sent output
                                                                  ; through print or echo. You also may see performance benefits if your server is
                                                                  ; emitting less packets due to buffered output versus PHP streaming the output
                                                                  ; as it gets it. On production servers, 4096 bytes is a good setting for performance
                                                                  ; reasons.
                                                                  ; Note: Output buffering can also be controlled via Output Buffering Control
                                                                  ;   functions.
                                                                  ; Possible Values:
                                                                  ;   On = Enabled and buffer is unlimited. (Use with caution)
                                                                  ;   Off = Disabled
                                                                  ;   Integer = Enables the buffer and sets its maximum size in bytes.
                                                                  ; Note: This directive is hardcoded to Off for the CLI SAPI
                                                                  ; Default Value: Off
                                                                  ; Development Value: 4096
                                                                  ; Production Value: 4096
                                                                  ; http://php.net/output-buffering
                                                                  output_buffering = 4096
                                                                  
                                                                  ; You can redirect all of the output of your scripts to a function.  For
                                                                  ; example, if you set output_handler to "mb_output_handler", character
                                                                  ; encoding will be transparently converted to the specified encoding.
                                                                  ; Setting any output handler automatically turns on output buffering.
                                                                  ; Note: People who wrote portable scripts should not depend on this ini
                                                                  ;   directive. Instead, explicitly set the output handler using ob_start().
                                                                  ;   Using this ini directive may cause problems unless you know what script
                                                                  ;   is doing.
                                                                  ; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
                                                                  ;   and you cannot use both "ob_gzhandler" and "zlib.output_compression".
                                                                  ; Note: output_handler must be empty if this is set 'On' !!!!
                                                                  ;   Instead you must use zlib.output_handler.
                                                                  ; http://php.net/output-handler
                                                                  ;output_handler =
                                                                  
                                                                  ; URL rewriter function rewrites URL on the fly by using
                                                                  ; output buffer. You can set target tags by this configuration.
                                                                  ; "form" tag is special tag. It will add hidden input tag to pass values.
                                                                  ; Refer to session.trans_sid_tags for usage.
                                                                  ; Default Value: "form="
                                                                  ; Development Value: "form="
                                                                  ; Production Value: "form="
                                                                  ;url_rewriter.tags
                                                                  
                                                                  ; URL rewriter will not rewrites absolute URL nor form by default. To enable
                                                                  ; absolute URL rewrite, allowed hosts must be defined at RUNTIME.
                                                                  ; Refer to session.trans_sid_hosts for more details.
                                                                  ; Default Value: ""
                                                                  ; Development Value: ""
                                                                  ; Production Value: ""
                                                                  ;url_rewriter.hosts
                                                                  
                                                                  ; Transparent output compression using the zlib library
                                                                  ; Valid values for this option are 'off', 'on', or a specific buffer size
                                                                  ; to be used for compression (default is 4KB)
                                                                  ; Note: Resulting chunk size may vary due to nature of compression. PHP
                                                                  ;   outputs chunks that are few hundreds bytes each as a result of
                                                                  ;   compression. If you prefer a larger chunk size for better
                                                                  ;   performance, enable output_buffering in addition.
                                                                  ; Note: You need to use zlib.output_handler instead of the standard
                                                                  ;   output_handler, or otherwise the output will be corrupted.
                                                                  ; http://php.net/zlib.output-compression
                                                                  zlib.output_compression = Off
                                                                  
                                                                  ; http://php.net/zlib.output-compression-level
                                                                  ;zlib.output_compression_level = -1
                                                                  
                                                                  ; You cannot specify additional output handlers if zlib.output_compression
                                                                  ; is activated here. This setting does the same as output_handler but in
                                                                  ; a different order.
                                                                  ; http://php.net/zlib.output-handler
                                                                  ;zlib.output_handler =
                                                                  
                                                                  ; Implicit flush tells PHP to tell the output layer to flush itself
                                                                  ; automatically after every output block.  This is equivalent to calling the
                                                                  ; PHP function flush() after each and every call to print() or echo() and each
                                                                  ; and every HTML block.  Turning this option on has serious performance
                                                                  ; implications and is generally recommended for debugging purposes only.
                                                                  ; http://php.net/implicit-flush
                                                                  ; Note: This directive is hardcoded to On for the CLI SAPI
                                                                  implicit_flush = Off
                                                                  
                                                                  ; The unserialize callback function will be called (with the undefined class'
                                                                  ; name as parameter), if the unserializer finds an undefined class
                                                                  ; which should be instantiated. A warning appears if the specified function is
                                                                  ; not defined, or if the function doesn't include/implement the missing class.
                                                                  ; So only set this entry, if you really want to implement such a
                                                                  ; callback-function.
                                                                  unserialize_callback_func =
                                                                  
                                                                  ; When floats & doubles are serialized store serialize_precision significant
                                                                  ; digits after the floating point. The default value ensures that when floats
                                                                  ; are decoded with unserialize, the data will remain the same.
                                                                  ; The value is also used for json_encode when encoding double values.
                                                                  ; If -1 is used, then dtoa mode 0 is used which automatically select the best
                                                                  ; precision.
                                                                  serialize_precision = -1
                                                                  
                                                                  ; open_basedir, if set, limits all file operations to the defined directory
                                                                  ; and below.  This directive makes most sense if used in a per-directory
                                                                  ; or per-virtualhost web server configuration file.
                                                                  ; http://php.net/open-basedir
                                                                  ;open_basedir =
                                                                  
                                                                  ; This directive allows you to disable certain functions for security reasons.
                                                                  ; It receives a comma-delimited list of f
                                                                  
                                                                  1. ich habe dieser script um zu prüfen ob Verbindung zum Datenbank habe,

                                                                    <?php
                                                                    $connection = mysql_connect("localhost", "root", "pass"); // Establishing Connection with Server
                                                                    $db = mysql_select_db("meine", $connection); // Selecting Database from Server
                                                                    if(isset($_POST['submit'])){ // Fetching variables of the form which travels in URL
                                                                    $name = $_POST['name'];
                                                                    $email = $_POST['email'];
                                                                    $message = $_POST['message'];
                                                                    $datatime = $DateTime;
                                                                    $ips = $ips;
                                                                    
                                                                    
                                                                    if($name !=''||$email !=''){
                                                                    //Insert Query of SQL
                                                                    $query = mysql_query("insert into mela(name, email, message, datetime, ips) values ('$name', '$email', '$message', '$datatime, '$ips')");
                                                                    echo "<br/><br/><span>Data Inserted successfully...!!</span>";
                                                                    }
                                                                    else{
                                                                    echo "<p>Insertion Failed <br/> Some Fields are Blank....!!</p>";
                                                                    }
                                                                    }
                                                                    mysql_close($connection); // Closing Connection with Server
                                                                    
                                                                    
                                                                    ?>
                                                                    

                                                                    Der Datei heißt connection.php , wenn schreibe auf dem Brownser , wird nichts passiert ... keine script verbindung

                                                                    1. Hallo,

                                                                      ändere

                                                                      }
                                                                      }
                                                                      

                                                                      in

                                                                      }
                                                                      }
                                                                      else{
                                                                      echo "<p>'submit' is not set!</p>";
                                                                      }

                                                                      Gruß
                                                                      Kalk

                                                                    2. ich habe dieser script um zu prüfen ob Verbindung zum Datenbank habe,

                                                                      Warnung
                                                                      
                                                                      Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 entfernt.
                                                                      
                                                                      • Das kann also gar nicht funktionieren.
                                                                      • Eine Prüfroutine mit PDO ist in den obigen Skript schon mit enthalten.

                                                                      Empfohlene Handlung:

                                                                      <?php
                                                                      define ('DEBUG', true );
                                                                      
                                                                      if ( DEBUG ) {
                                                                          error_reporting( E_ALL );
                                                                          ini_set( 'display_errors', 1 );
                                                                      } else {
                                                                          error_reporting( E_NONE );
                                                                          ini_set( 'display_errors', 0 );
                                                                      }
                                                                      
                                                                      ### Hier das Skript
                                                                      
                                                                      1. Dein Skript verwendet das alte und in PHP 7.0 entfernte Mysql-Zeug:

                                                                        ich habe hier gelesen...

                                                                        mit dieser Script der benutz die neu Weg ,

                                                                        <?php
                                                                        ini_set('display_errors', 1);
                                                                        ini_set('display_startup_errors', 1);
                                                                        error_reporting(E_ALL);
                                                                        
                                                                        $servername ='localhost';
                                                                        $dbname = 'mein';
                                                                        $usarname ='root';
                                                                        $password = 'pass';
                                                                        
                                                                        try {
                                                                        
                                                                              $conn = new PDO("mysql:host=$servername;$dbname=mein", $usarname, $password);
                                                                        
                                                                              $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                                                                              echo "connected successfully";
                                                                              }
                                                                              catch(PDOException $e)
                                                                              {
                                                                               echo "Connection Failed: " . $e->get.Message();
                                                                              }
                                                                        
                                                                        ?>
                                                                        

                                                                        bekomme das ,

                                                                        neue weg

                                                                        Was ich versuche jetzt eine kleine script zu bauen um zum Datenbank zu schicken.. , ich möchte wissen warum mit dem andere script, das nicht schaffen....

                                                                        1. so , auf meine Datenbak habe einen neue Datenbank gebaut , er heißt 'myDB' ,

                                                                          neue datenbank

                                                                          dann mit diesen Code , schicken zum Datenbank,

                                                                          <?php
                                                                          ini_set('display_errors', 1);
                                                                          ini_set('display_startup_errors', 1);
                                                                          error_reporting(E_ALL);
                                                                          
                                                                          
                                                                          $servername = 'localhost';
                                                                          $username= 'root';
                                                                          $password = 'pass';
                                                                          $dbname = 'myDB';
                                                                          
                                                                          // Create connection
                                                                          $conn = new mysqli($servername, $username, $password , $dbname);
                                                                          
                                                                          // Check connection
                                                                          if ($conn->connect_error) {
                                                                              die("Connection failed: " . $conn->connect_error);
                                                                          }
                                                                          
                                                                          // prepare and bind
                                                                          $stmt = $conn->prepare("INSERT INTO myDB (firstname, lastname, email) VALUES (?, ?, ?)");
                                                                          $stmt->bind_param("sss", $firstname, $lastname, $email);
                                                                          
                                                                          // set parameters and execute
                                                                          $firstname = "John";
                                                                          $lastname = "Doe";
                                                                          $email = "john@example.com";
                                                                          $stmt->execute();
                                                                          
                                                                          $firstname = "Mary";
                                                                          $lastname = "Moe";
                                                                          $email = "mary@example.com";
                                                                          $stmt->execute();
                                                                          
                                                                          $firstname = "Julie";
                                                                          $lastname = "Dooley";
                                                                          $email = "julie@example.com";
                                                                          $stmt->execute();
                                                                          
                                                                          echo "New records created successfully";
                                                                          
                                                                          $stmt->close();
                                                                          $conn->close();
                                                                          ?>
                                                                          

                                                                          Die datei heißt me.php

                                                                          Dann , auf der Brownser schreibe me.php ,

                                                                          me datei

                                                                          wie der Screenshot zeigt , habe auf der Datenbank geschickt..

                                                                          und hier der Beweis , dass das getan hat…

                                                                          beweis

                                                                          so , das bedeutet das auf meine Erste Code gibt etwas, der macht nicht die Daten zum Datenbank zu schicken , auch wenn keine Fehler hat...

                                                            1. ich habe jetzt bemerke das du der Code korrigiert hast , ich bedanke mich dich !

                                                              auf der Zeile 119 , bekomme diese Fehler,

                                                              Fatal error: execute failed: SQLSTATE=00000, Error Info=Array ( [0] => 00000 [1] => [2] => ) in /var/www/html/classprove.php on line 119

                                                              Zeile 119,

                                                              if ( ! $ok ) {
                                                                   zeile 119       trigger_error( "execute failed: SQLSTATE=" . $this -> dbh -> errorCode() . ", Error Info=" . print_r($this -> dbh -> errorInfo(), true),  E_USER_ERROR );
                                                              		} else {
                                                              
                                                              1. Wie habe verstand

                                                                Hier geben als lösung benutze , === false

                                                                ich habe gewechselt von if ( !$ok ) zum if ( $ok === False ) , aber war keine Veränderung ....

                                                                SQLSTATE=00000

                                                                Bedeutet dass die Code Gut ist, aber sie nicht ausführen weil sie kann nicht einsetzen und geben sie zurück .

                                                                1. Also, liebewinter. Das Skript funktioniert, das habe ich getestet. Natürlich musst Du Deine Zugangsdaten eintragen.

                                                                  Vielleicht ist Deine Datentabelle "mela" anders als meine:

                                                                  DROP TABLE IF EXISTS `mela`;
                                                                  CREATE TABLE `mela` (
                                                                    `name` tinytext,
                                                                    `email` tinytext,
                                                                    `message` text,
                                                                    `datetime` datetime DEFAULT NULL,
                                                                    `ip` tinytext,
                                                                    KEY `datetime` (`datetime`),
                                                                    FULLTEXT KEY `name` (`name`),
                                                                    FULLTEXT KEY `email` (`email`),
                                                                    FULLTEXT KEY `message` (`message`),
                                                                    FULLTEXT KEY `ip` (`ip`)
                                                                  
                                                                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
                                                                  

                                                                  Immerhin war ja bei Dir die IP ein Integer, also eine Zahl - was FALSCH ist.

                                                                  Um Deine Tabelle neu anzulegen kopiere den Code in das SQL-Fenster der Workbench bzw. von phpmyadmin. Natürlich geht das auch in einem Terminal.

                                                                  1. ich habe die Tabelle mit phpmyadmin gebaut , wie sie aussiehst ,

                                                                    meine Tabelle

                                                                    jetzt versuche mache wie du hast , wie baut mit Mysql gleich wie du gebaut hast ?

                                                                    1. Ja. Du nimmst exakt mein Skript und exakt meine Tabelle. Sonst wird es nicht funktionieren.

                                                                      1. ich habe die Name auf die Datenbank 'meine' und die Tabelle 'mela'

                                                                        1. Wie ich schon schrieb: die Zugangsdaten zur Datenbank musst Du natürlich anpassen. Das ändert aber am Skript selbst nichts:

                                                                          	private $dbHost = 'localhost'; # Host der Datenbank
                                                                          	private $dbName = 'name';      # Name der Datenbank
                                                                          	private $dbUser = 'user';      # Name der Datenbank
                                                                          	private $dbPass = 'pass';      # Passwort
                                                                          

                                                                          [Die Tabelle wird wird mit dem Name mela](https://forum.selfhtml.org/self/2019/may/11/phpmyadmin-nicht-start/1748743#m1748743 angelegt).

                                                                  2. geschafft !, danke!

                                                                    wie sie aussiehst, wie sie aussiehst

                                                                    ich möchte auch bei Datenbank Seite , die Möglichkeit der Kommentar zu lösen... wie dieser Beispiel,

                                                                    kommentart lösen

                                                                    Hier sagt wie man macht , habe ich weiß nicht wie auf meine Code implementiert kann ....

                                                                    1. Hallo Joseba,

                                                                      aber ich weiß nicht wie auf meine Code implementiert kann

                                                                      das ist auch gut so, denn bei taniarascia ist ein entscheidender Fehler. Man nimmt keine Links, um Funktionen für eine Zeile anzubieten, sondern Buttons. Das hat zwei Gründe:

                                                                      • Ein Link erzeugt einen GET Request, und GET Requests sollen idempotent sein (das bedeutet: ich kann einen GET Request immer wieder aufrufen und bekomme immer das gleiche Ergebnis). Idempotent bedeutet, dass die gespeicherten Daten nicht verändert werden. Deswegen muss es ein POST Request sein, und POST bekommst Du mit Form und Submit-Button

                                                                      • Wenn Du es mit Links machst, kann ich Dir eine Mail mit einem Bild darin schicken. Und als src des <img> Elements setze ich http://example.org/joseba/deleteposting.php?id=4711. Du öffnest Dir Mail, erlaubst dem Mailprogramm das Anzeigen von Bildern, und WUMM ist ein Eintrag auf der Kommentarseite weg.

                                                                      Also: Es muss ein Button sein.

                                                                      Was Du auch noch brauchst, ist eine ID. Die gibt es in deiner Datenbank bisher nicht. Füge in deiner Tabelle eine neue Spalte ID ein, mit Typ INT, und mache daraus eine AUTO_INCREMENT Spalte (das ist bei mir eine Checkbox mit A_I als Überschrift). Beim INSERT erzeugt MYSQL jedesmal einen neuen INT Wert. Die ID Spalte kannst Du in getMessages einfach ins SQL einbauen:

                                                                      $sql = "SELECT id, name, email, message, datetime FROM mela ORDER BY datetime DESC";
                                                                      

                                                                      Füge den Button beim Anzeigen der Kommentare hinzu:

                                                                      <article>
                                                                         <h2>Message from <?=htmlspecialchars( $message['name'] ) ?> &lt;<?= htmlspecialchars( $message['email'] ); ?>&gt;</h2>
                                                                         <p>Created <?=htmlspecialchars( $message['datetime'] ); ?></p>
                                                                         <p><?=htmlspecialchars( $message['message'] ); ?></p>
                                                                         <button type="submit" name="delete" value="<?= $message['id'] ?>">Delete</button>
                                                                      </article>
                                                                      

                                                                      Der Button hat den Namen 'delete' und die ID des Kommentars als Value. D.h. wenn man ihn klickt, wird das Form, in dem er steht, mit POST gesendet und in $_POST['delete'] findet man die ID des Kommentars, der gelöscht werden soll.

                                                                      Wie es nun weitergeht, weiß ich nicht so genau. Ursus hat mit Dir ein paar Sachen an deinem Code geändert. Die Idee ist, dass Du in PostOkT unterscheidest, ob ein Button mit name="post" oder name="delete" gedrückt wurde.

                                                                      Zum Beispiel so. Ich habe PostOkT in einen Verteiler geändert, es wird nur geprüft, welche Funktion ausgewählt wurde. Die Arbeit findet in neuen Methoden statt. In PostNewComment passiert das, was vorher in PostOkT stand. Ich habe sie noch etwas mehr aufgeteilt: es gibt eine neue Methode displayMessages(), die sich um das Laden und Anzeigen der Kommentare kümmert. Das habe ich gemacht, damit ich die Anzeige auch nach dem Löschen aufrufen kann. Neu ist in displayMessages ein <form>, das die Kommentare einschließt. Das braucht man, damit der Button etwas submitten kann.

                                                                      Die Methode DeleteComment ist ganz neu. Sie ist erst einmal ein Stub (das ist eine Methode, die noch nichts macht) und zeigt die ID, die gelöscht werden soll, nur an. Danach werden alle Messages ausgegeben, sonst würdest Du nach Klick auf einen Delete Button nichts mehr sehen.

                                                                      
                                                                          function PostOkT() 
                                                                          {
                                                                              if (isset($_POST['post'])
                                                                              {
                                                                                  $this -> PostNewComment();
                                                                              }     
                                                                              else if (isset($_POST['delete'])
                                                                              {
                                                                                  $this -> DeleteComment($_POST['delete']);
                                                                              }
                                                                          }
                                                                      
                                                                          function PostNewComment()
                                                                          {
                                                                              if (! $this -> PostOK)
                                                                              {
                                                                                  echo "<br><b><h3>*** Please enter all required fields ***</h3></b>";  
                                                                              } 
                                                                              $this->writeCommentToDatabase(); 
                                                                              $this->displayMessages();        
                                                                          }
                                                                      
                                                                          function displayMessages()
                                                                          {
                                                                              $messages = $this->getMessages();
                                                                      ?>
                                                                         <form method="POST">        
                                                                      <?php
                                                                              foreach ($messages as $message):
                                                                      ?>
                                                                           <article>
                                                                             <h2>Message from <?= htmlspecialchars($message['name']) ?> (<?= htmlspecialchars($message['email'])?>)</h2>
                                                                             <p>Created <?= $message['datetime'] ?></p>
                                                                             <p><?= $message['message'] ?></p>
                                                                             <button action="submit" name="delete" value="<?= $message['id'] ?>">Delete</button>
                                                                           </article>
                                                                      <?php
                                                                              endforeach;                 
                                                                      ?>
                                                                         </form>
                                                                      <?php
                                                                          }
                                                                      
                                                                          function DeleteComment($id)
                                                                          {
                                                                              echo "<br>Lösche jetzt Kommentar $id<br>";
                                                                              $this->displayMessages();
                                                                          }
                                                                      

                                                                      Bringe das erstmal zum Laufen. Es muss ja auch zu dem passen, was Ursus mit Dir gemacht hat. Wenn Du auf Delete klickst und "Lösche jetzt Kommentar 7" angezeigt wird, machen wir mit dem SQL Teil weiter.

                                                                      Rolf

                                                                      --
                                                                      sumpsi - posui - clusi
                                                                      1. Erste vielen Danks für deine bemüht!

                                                                        Als möchte die delete Kommentar nur auf dem Datenbank , nicht auf Gäste Seite , habe ihn von article Tag gelost .

                                                                        Ich habe der neu spalte für id gebaut ,

                                                                        meine id

                                                                        aber es wäre die Möglichkeit machen wie hier,

                                                                        wie ich möchte haben

                                                                        1. Hallo Joseba,

                                                                          die ID Spalte ist eine Voraussetzung, damit ein Löschen funktioniert. Die ist jetzt drin, das ist schon mal gut.

                                                                          Dass Du auf der Gästeseite nicht löschen willst, ist richtig. Löschen darf nur der Administrator der Webseite. Das hatte ich erstmal für unwichtig gehalten, wir experimentieren und lernen ja noch.

                                                                          Willst Du gleich die Admin-Seite für Kommentare bauen? Das müsste dann eine eigene PHP Datei werden. Du baust das Form zum Posten von Messages aus und zeigst die vorhandenen Kommentare gleich beim Aufruf der Seite an (also im ShowForm). In diese Liste kannst Du dann den DELETE Button einbauen.

                                                                          Der SQL Befehl zum Löschen heißt "DELETE FROM mela WHERE id = :id".

                                                                          1. prepare aufrufen für diesen SQL Befehl
                                                                          2. an das Statement, das man bekommt, den Wert für :id binden. Also den Wert, den der DELETE Button in $_POST['delete'] abgelegt hat.
                                                                          3. Statement ausführen.

                                                                          Wenn $_POST['delete'] zum Beispiel 3 enthält, werden dadurch alle Zeilen in mela gelöscht, in denen die id den Wert 3 hat. Es ist eine AUTO_INCREMENT Spalte, das ist also nur eine Zeile.

                                                                          Das schaffst Du. Du hast schon so viel gelernt!

                                                                          Rolf

                                                                          --
                                                                          sumpsi - posui - clusi
                                                                        2. Nein!

                                                                          Bevor jede gewünschte Funktion EINZELN hinzugefügt wird, machst Du jetzt einen Plan und sagst uns, was Du letztendlich willst.

                                                                          1. Mein Plan ist machen wie die Frau hier hat ...

                                                                            wie ich möchte

                                                                            ich möchte von jeden Kommentar ein Bottom um sich zu lösen..Rolf hat einiger Idee gegeben... ,

                                                                            Richtung wie die Frau Hat ,

                                                                            <?php
                                                                            
                                                                            
                                                                            
                                                                            /**
                                                                              * Delete a user
                                                                              */
                                                                            
                                                                            require "../config.php";
                                                                            require "../common.php";
                                                                            
                                                                            if (isset($_GET["id"])) {
                                                                              try {
                                                                                $connection = new PDO($dsn, $username, $password, $options);
                                                                            
                                                                                $id = $_GET["id"];
                                                                            
                                                                                $sql = "DELETE FROM users WHERE id = :id";
                                                                            
                                                                                $statement = $connection->prepare($sql);
                                                                                $statement->bindValue(':id', $id);
                                                                                $statement->execute();
                                                                            
                                                                                $success = "User successfully deleted";
                                                                            

                                                                            ich weiß, das ist nur der Anfang …

                                                                            <?php
                                                                            
                                                                            
                                                                            require "../classprove.php";
                                                                            
                                                                            
                                                                            if (isset($_POST["id"]))
                                                                               
                                                                                     try {
                                                                                $connection = new PDO($name, $email, $message, $datetime, $ip);
                                                                            
                                                                                $id = $_POST["id"];
                                                                            
                                                                                $sql = "DELETE FROM mela WHERE id = :id";
                                                                            
                                                                              .
                                                                              .
                                                                              .
                                                                            
                                                                            

                                                                            machst Du jetzt einen Plan und sagst uns, was Du letztendlich willst.

                                                                            das auch Gerne.…

                                                                            • Spamfilter fehlt.

                                                                            • Kein Blockieren wiederholter Einträge. (z.B. mit [F5])

                                                                            • Ignoriert in der PHP.ini hinterlegte Zugangsdaten zur Datenbank (das habe nicht gut verstande...)

                                                                            • Keine Zuordnung zu verschiedenen Seiten/Themen möglich.(ich würde gerne Empfehlungen von dir bekomme , das ist meine Erste Website...)

                                                                            • Das HTML ist grausig und basiert nicht auf Templates. ( auch würde gerne Empfehlungen von dir bekommen.. )

                                                                      2. Frühe habe eine Fehler gemacht... ich habe geprüft mit dem Ursus Code...

                                                                        als ich nicht mehr finde der Code der wir zusammen gemacht habe, habe sammel Teils von dem Frühe Post ... habe immer bekomme Fehler , weil wird Methode die auf dieser Code gibt nicht…

                                                                        Der Code,

                                                                        <?php
                                                                        
                                                                        
                                                                        class ClassProveContakt3 
                                                                        {
                                                                              private $dbHost = 'localhost'; # Host der Datenbank
                                                                        	  private $dbName = 'meine';      # Name der Datenbank
                                                                        	  private $dbUser = 'root';      # Name phpmyadmin
                                                                        	  private $dbPass = 'pass';      # Passwort
                                                                        
                                                                              
                                                                              private $Name;
                                                                              private $Email;
                                                                              private $Message;
                                                                              private $PostOK;
                                                                              private $DateTime;
                                                                              private $items;
                                                                              private $ip; 
                                                                        
                                                                         
                                                                            function __construct() 
                                                                            {
                                                                        
                                                                                 $this -> ip = $_SERVER['REMOTE_ADDR'];
                                                                                 $this -> DateTime = date('m/d/Y h:i:s a');  
                                                                                 $this -> items = ['Name', 'Email', 'Message']; 
                                                                                 
                                                                                 
                                                                                 $flag = true;
                                                                                  foreach ( $this -> items as $key ) {  
                                                                        			           if ( empty ( $_POST[$key] ) )  {
                                                                        			             $flag = false;    
                                                                        			           } else {    
                                                                        			             $this -> $key = trim( filter_var( $_POST[$key], FILTER_SANITIZE_STRING ) ); 
                                                                        			            }    
                                                                        		   }	     
                                                                                 $this -> PostOk = $flag; 
                                                                                 
                                                                            }
                                                                        
                                                                         
                                                                            
                                                                        
                                                                          
                                                                            function ShowForm() 
                                                                            {
                                                                        ?>
                                                                              <form  method="POST">
                                                                                <label for="name"><b>Name * </b></label>
                                                                                <input type="text" id="name" name="Name" value="">
                                                                                <label for="email"><b>E-mail * </b></label>
                                                                                <input type="email" id="email" name="Email" value="">
                                                                                <br><br>
                                                                                <label><b> Message * </b><br>
                                                                                   <textarea cols="45" rows="6" id="text" name="Message"></textarea>      
                                                                                </label>
                                                                                <br><br>
                                                                                <input  type="submit" name="post" value="POST COMMENT" id="comment">
                                                                              </form>
                                                                        <?php
                                                                            }
                                                                            function PostOkT() 
                                                                            {
                                                                                if (isset($_POST['post']))
                                                                                {
                                                                                    $this -> PostNewComment();
                                                                                }     
                                                                                else if (isset($_POST['delete']))
                                                                                {
                                                                                    $this -> DeleteComment($_POST['delete']);
                                                                                }
                                                                            }
                                                                        
                                                                            function PostNewComment()
                                                                            {
                                                                                if (! $this -> PostOK)
                                                                                {
                                                                                    echo "<br><b><h3>*** Please enter all required fields ***</h3></b>";  
                                                                                } 
                                                                                $this->writeCommentToDatabase(); 
                                                                                $this->displayMessages();        
                                                                            }
                                                                        
                                                                            function displayMessages()
                                                                            {
                                                                                $messages = $this->getMessages();
                                                                        ?>
                                                                           <form method="POST">        
                                                                        <?php
                                                                                foreach ($messages as $message):
                                                                        ?>
                                                                             <article>
                                                                               <h2>Message from <?= htmlspecialchars($message['name']) ?> (<?= htmlspecialchars($message['email'])?>)</h2>
                                                                               <p>Created <?= $message['datetime'] ?></p>
                                                                               <p><?= $message['message'] ?></p>
                                                                               <button action="submit" name="delete" value="<?= $message['id'] ?>">Delete</button>
                                                                             </article>
                                                                        <?php
                                                                                endforeach;                 
                                                                        ?>
                                                                           </form>
                                                                        <?php
                                                                            }
                                                                        
                                                                            function DeleteComment($id)
                                                                            {
                                                                                echo "<br>Lösche jetzt Kommentar $id<br>";
                                                                                $this->displayMessages();
                                                                            }
                                                                             function writeCommentToDatabase()
                                                                             {
                                                                              // Establish connection with MYSQL Server
                                                                              try
                                                                              {
                                                                                 $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                              }
                                                                              catch (PDOException $pe)
                                                                              {
                                                                                 echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                 return false;
                                                                              }
                                                                        
                                                                              //Prepare Query of SQL
                                                                              $statement = $db->prepare("INSERT INTO mela(name, email, message, datetime, ip) VALUES (:name, :email, :message, :date, :ip)");
                                                                              if (!$statement)
                                                                              {
                                                                                 echo "<br><br>prepare failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                                                 $ok = FALSE;
                                                                              }
                                                                              else
                                                                              {
                                                                                 $ok = $statement->bindValue(':name', $this->Name, PDO::PARAM_STR)
                                                                                    && $statement->bindValue(':email', $this->Email, PDO::PARAM_STR)
                                                                                    && $statement->bindValue(':message', $this->Message, PDO::PARAM_STR)
                                                                                    && $statement->bindValue(':date', date("Y-m-d H:i:s"), PDO::PARAM_STR)
                                                                                    && $statement->bindValue(':ip', $this->ip, PDO::PARAM_STR);
                                                                                 if (!$ok)
                                                                                 {
                                                                                    echo "<br><br>bindValue failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                                                 }
                                                                              }
                                                                              if ($ok)
                                                                              {
                                                                                 $ok = $statement->execute();
                                                                                 if (!$ok)
                                                                                 {
                                                                                    echo "<br><br>execute failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                                                 }
                                                                        
                                                                        
                                                                              }
                                                                              echo "<br/><br/><span>Data Inserted successfully...!!</span>";
                                                                               $this->db = null;
                                                                               return $ok;
                                                                        
                                                                        
                                                                            }    
                                                                            function getMessages()
                                                                            {
                                                                                 $db = getConnection();
                                                                                 if (!$db) return false;
                                                                                 {
                                                                                    $sql = "SELECT name, email, message, datetime FROM mela ORDER BY datetime DESC";
                                                                                    $statement = $db->query($sql);
                                                                                    if (!$statement)
                                                                                    {
                                                                                      $this->reportPDOError("Cannot create query", $sql, $db);
                                                                                       return false;
                                                                                    }
                                                                                   $result = $statement->fetchAll(PDO::FETCH_ASSOC);
                                                                        
                                                                                  if ($result === FALSE)
                                                                                     $this->reportPDOError("fetchAll(ASSOC) failed", $sql, $statement);
                                                                        
                                                                                  return $result;
                                                                               }
                                                                             }
                                                                        
                                                                              private function getConnection()
                                                                              {
                                                                                  // Establish connection with MYSQL Server
                                                                                  try
                                                                                  {
                                                                                     return new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                                  }
                                                                                  catch (PDOException $pe)
                                                                                  {
                                                                                     echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                     return false;
                                                                                  }
                                                                              }
                                                                        
                                                                              private function reportPDOError($message, $sql, $pdo)
                                                                              {
                                                                                 $info = $pdo->errorInfo();
                                                                        
                                                                                 echo "<div style='color:red'><b>Error in SQL Access: $message</b>";
                                                                                 echo "<br>SQL-Statement: $sql";
                                                                                 echo "<br>PDO SQLSTATE: $info[0]";
                                                                                 echo "<br>MySQL error code: $info[1]";
                                                                                 echo "<br>MySQL error message: $info[2]</div>";
                                                                              }
                                                                             
                                                                        }
                                                                                    
                                                                        $Newobject = new ClassProveContakt3();
                                                                        $Newobject -> ShowForm();
                                                                        $Newobject ->  PostOkT();
                                                                        $Newobject -> writeCommentToDatabase(); 
                                                                        $Newobject -> getMessages();
                                                                        
                                                                            
                                                                        
                                                                        ?>
                                                                        

                                                                        mit diesem Code bekomme dieser Warnung,

                                                                        Fatal error: Uncaught Error: Call to undefined function getConnection() in /var/www/html/classprove.php:160 Stack trace: #0 /var/www/html/classprove.php(86): ClassProveContakt3->getMessages() #1 /var/www/html/classprove.php(81): ClassProveContakt3->displayMessages() #2 /var/www/html/classprove.php(66): ClassProveContakt3->PostNewComment() #3 /var/www/html/classprove.php(208): ClassProveContakt3->PostOkT() #4 /var/www/html/contact.php(85): require('/var/www/html/c...') #5 {main} thrown in /var/www/html/classprove.php on line 160

                                                                        1. Hallo Joseba,

                                                                          getConnection ist eine Methode. Und Methoden ruft man wie auf?

                                                                          Rolf

                                                                          --
                                                                          sumpsi - posui - clusi
                                                                          1. getConnection ist eine Methode. Und Methoden ruft man wie auf?

                                                                            $Newobject -> getConnection(); ?

                                                                            1. Hallo Joseba,

                                                                              nein, $NewObject ist in getMessages() nicht bekannt.

                                                                              Tipp: Wie wird writeCommentToDatabase aufgerufen?

                                                                              Rolf

                                                                              --
                                                                              sumpsi - posui - clusi
                                                                              1. $this -> writeCommentToDatabase();

                                                                                ich denke....

                                                                                1. ich hatte auch eine Fehler beim Eingenschaft $datetime; , ich hatte bevor $DateTime und habe gewechselt zum $datetime;

                                                                                  Jetzt bekomme keine Warnung mehr mit deine Code…

                                                                                  wie die Website aussiehst…

                                                                                  ohne fehler

                                                                                  ....aber bekomme die warnung.

                                                                                  *** Please enter all required fields ***

                                                                                  auch wenn füllen alle ...

                                                                                  1. Hallo Joseba,

                                                                                    dann passt vielleicht irgendwo eine Schreibweise nicht.

                                                                                    Vielleicht ist ja nur meine Brille schmutzig, aber ich glaube da gibt es einen Unterschied mit PostOk und PostOK. Siehst Du es? Kleines und großes K. Für PHP sind das unterschiedliche Namen. Es sollte eigentlich eine Notice "Undefined Property" geben. Vielleicht habe ich das einmal falsch geschrieben.

                                                                                    Was ich auch noch sehe, ist der Aufruf von writeCommentToDatabase und getMessages am Ende des Programms. Das gehört da nicht hin!

                                                                                    writeCommentToDatabase darf nur aufgerufen werden, wenn ein Kommentar geschrieben wurde. Die Methode PostOkT kümmert sich darum.

                                                                                    getMessages liest die Datenbank, aber erzeugt nur ein Array. Dieser Aufruf am Ende kostet nur Zeit.

                                                                                    Diese beiden Aufrufe am Ende kannst du löschen.

                                                                                    Rolf

                                                                                    --
                                                                                    sumpsi - posui - clusi
                                                                                    1. Danke für deinen empfehlungen !,

                                                                                      Vielleicht ist ja nur meine Brille schmutzig, aber ich glaube da gibt es einen Unterschied mit PostOk und PostOK. Siehst Du es? Kleines und großes K.

                                                                                      ich habe Überall nach gesucht aber habe keine kleine k gesehen ...

                                                                                    2. sorry, ich denke habe eine gefunde…

                                                                                      }	     
                                                                                               $this -> PostOk = $flag; 
                                                                                               
                                                                                          }
                                                                                      
                                                                                      
                                                                                    3. ich habe gefolge deine Empfehlungen, und jetzt bekomme nicht mehr der Warnung ,

                                                                                      *** Please enter all required fields ***

                                                                                      Danke ! ,

                                                                                      heute arbeite Abends , ich möchte weiter machen wie habe gesagt, auch wenn du sagst die alleine schafft , ich denke nicht... , ich versuche alleine mache was ich kann , aber ich bin sicher das ich euch(Forum)frage soll....

                                                                                      1. Hallo Joseba,

                                                                                        von mir wirst Du 10 Tage lang keine Antwort mehr bekommen. Ich bin verreist!

                                                                                        Viel Glück!

                                                                                        Rolf

                                                                                        --
                                                                                        sumpsi - posui - clusi
                                                                                        1. Hallo Rolf B,

                                                                                          von mir wirst Du 10 Tage lang keine Antwort mehr bekommen. Ich bin verreist!

                                                                                          Viel Spaß. Ich hoffe, es ist Urlaub.

                                                                                          Bis demnächst
                                                                                          Matthias

                                                                                          --
                                                                                          Pantoffeltierchen haben keine Hobbys.
                                                                                          ¯\_(ツ)_/¯
                                                                                          1. Hallo Matthias,

                                                                                            das hoffe ich auch. Solange Graf Dracula in seiner Kiste bleibt, ist alles gut. Ich bin in Transsilvanien :-)

                                                                                            Rolf

                                                                                            --
                                                                                            sumpsi - posui - clusi
                                                                                        2. ich wünsche dir viel Spaß in deiner Urlaub !

                                                                                          man muss auch das leben genießen....

                                                                                      2. Kann Bitte jemand Hilfe mit diesem Probleme.…

                                                                                        Ich versuche mache wie Rolf hier gesagt hat , aber ohne Erfolgt…

                                                                                        Ich habe diese Datei um meine Kommentar zu Verwalten,

                                                                                        <?php
                                                                                        
                                                                                        
                                                                                        class ClassProveContakt1 
                                                                                        {
                                                                                              private $dbHost = 'localhost'; # Host der Datenbank
                                                                                        	  private $dbName = 'meine';      # Name der Datenbank
                                                                                        	  private $dbUser = 'root';      # Name phpmyadmin
                                                                                        	  private $dbPass = 'pass';      # Passwort
                                                                                        
                                                                                              
                                                                                              private $Name;
                                                                                              private $Email;
                                                                                              private $Message;
                                                                                              private $PostOK;
                                                                                              private $datetime;
                                                                                              private $items;
                                                                                              private $ip; 
                                                                                        
                                                                                           
                                                                                            function __construct() 
                                                                                            {
                                                                                        
                                                                                                 $this -> ip = $_SERVER['REMOTE_ADDR'];
                                                                                                 $this -> DateTime = date('m/d/Y h:i:s a');  
                                                                                                 $this -> items = ['Name', 'Email', 'Message']; 
                                                                                                  
                                                                                                 $flag = true;
                                                                                                  foreach ( $this -> items as $key ) {  
                                                                                        			           if ( empty ( $_POST[$key] ) )  {
                                                                                        			             $flag = false;    
                                                                                        			           } else {    
                                                                                        			             $this -> $key = trim( filter_var( $_POST[$key], FILTER_SANITIZE_STRING ) );
                                                                                        			            }    
                                                                                        		   }	     
                                                                                                 $this -> PostOK = $flag; 
                                                                                            }
                                                                                          
                                                                                         
                                                                                            
                                                                                        
                                                                                          
                                                                                            function ShowForm() 
                                                                                            {
                                                                                        ?>
                                                                                              <form  method="POST">
                                                                                                <br>
                                                                                                <label for="name"><b>Name * </b></label>
                                                                                                <input type="text" id="name" name="Name" value="">
                                                                                                <label for="email"><b>E-mail * </b></label>
                                                                                                <input type="email" id="email" name="Email" value="">
                                                                                                <br><br>
                                                                                                <label><b> Message * </b><br>
                                                                                                   <textarea cols="45" rows="6" id="text" name="Message"></textarea>      
                                                                                                </label>
                                                                                                <br><br>
                                                                                                <input  type="submit" name="post" value="POST COMMENT" id="comment">
                                                                                                <br> 
                                                                                              </form>
                                                                                        <?php
                                                                                            }
                                                                                            function PostOkT() 
                                                                                            {
                                                                                                if (isset($_POST['post']))
                                                                                                {
                                                                                                    $this -> PostNewComment();
                                                                                                }     
                                                                                                else if (isset($_POST['delete']))
                                                                                                {
                                                                                                    $this -> DeleteComment($_POST['delete']);
                                                                                                }
                                                                                            }
                                                                                        
                                                                                            function PostNewComment()
                                                                                            {
                                                                                                if (! $this -> PostOK)
                                                                                                {
                                                                                                    echo '<br><div class="msg">*** Please enter all required fields ***</div>';   
                                                                                                } 
                                                                                               $this->writeCommentToDatabase(); 
                                                                                               $this->displayMessages();        
                                                                                            }
                                                                                        
                                                                                            function displayMessages()
                                                                                            {
                                                                                                $messages = $this->getMessages();
                                                                                        ?>
                                                                                           <form method="POST">        
                                                                                        <?php
                                                                                                foreach ($messages as $message):
                                                                                        ?>
                                                                                             <article>
                                                                                               <br>
                                                                                               <p><strong>From: </strong> <?= htmlspecialchars($message['name'])?>
                                                                                               <strong>At: </strong> <?= $message['datetime'] ?></p>
                                                                                               <p><?= $message['message'] ?></p>
                                                                                               <hr>
                                                                                               
                                                                                             </article>
                                                                                        <?php
                                                                                                endforeach;                 
                                                                                        ?>
                                                                                           </form>
                                                                                        <?php
                                                                                            }
                                                                                        
                                                                                            function DeleteComment($id)
                                                                                            {
                                                                                                echo "<br>Lösche jetzt Kommentar $id<br>";
                                                                                                $this->displayMessages();
                                                                                            }
                                                                                             function writeCommentToDatabase()
                                                                                             {
                                                                                              // Establish connection with MYSQL Server
                                                                                              try
                                                                                              {
                                                                                                 $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                                              }
                                                                                              catch (PDOException $pe)
                                                                                              {
                                                                                                 echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                                 return false;
                                                                                              }
                                                                                        
                                                                                              //Prepare Query of SQL
                                                                                              $statement = $db->prepare("INSERT INTO mela(name, email, message, datetime, ip) VALUES (:name, :email, :message, :date, :ip)");
                                                                                              if (!$statement)
                                                                                              {
                                                                                                 echo "<br><br>prepare failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                                                                 $ok = FALSE;
                                                                                              }
                                                                                              else
                                                                                              {
                                                                                                 $ok = $statement->bindValue(':name', $this->Name, PDO::PARAM_STR)
                                                                                                    && $statement->bindValue(':email', $this->Email, PDO::PARAM_STR)
                                                                                                    && $statement->bindValue(':message', $this->Message, PDO::PARAM_STR)
                                                                                                    && $statement->bindValue(':date', date("Y-m-d H:i:s"), PDO::PARAM_STR)
                                                                                                    && $statement->bindValue(':ip', $this->ip, PDO::PARAM_STR);
                                                                                                 if (!$ok)
                                                                                                 {
                                                                                                    echo "<br><br>bindValue failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                                                                 }
                                                                                              }
                                                                                              if ($ok)
                                                                                              {
                                                                                                 $ok = $statement->execute();
                                                                                                 if (!$ok)
                                                                                                /* geben Warnung wenn nicht nach datenbank geschickt hat, wenn code all vertig ,muss '#' geben */
                                                                                                 {
                                                                                                    echo "<br><br>execute failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                                                                 }
                                                                                        
                                                                                        
                                                                                              }
                                                                                              echo "<br/><br/><span>Data Inserted successfully...!!</span>";
                                                                                               $this->db = null;
                                                                                               return $ok;
                                                                                        
                                                                                        
                                                                                            }    
                                                                                            function getMessages()
                                                                                            {
                                                                                                 $db = $this ->getConnection();
                                                                                                 if (!$db) return false;
                                                                                                 {
                                                                                                    $sql = "SELECT name, email, message, datetime FROM mela ORDER BY datetime DESC";
                                                                                                    $statement = $db->query($sql);
                                                                                                    if (!$statement)
                                                                                                    {
                                                                                                      $this->reportPDOError("Cannot create query", $sql, $db);
                                                                                                       return false;
                                                                                                    }
                                                                                                   $result = $statement->fetchAll(PDO::FETCH_ASSOC);
                                                                                        
                                                                                                  if ($result === FALSE)
                                                                                                     $this->reportPDOError("fetchAll(ASSOC) failed", $sql, $statement);
                                                                                        
                                                                                                  return $result;
                                                                                               }
                                                                                             }
                                                                                        
                                                                                              private function getConnection()
                                                                                              {
                                                                                                  // Establish connection with MYSQL Server
                                                                                                  try
                                                                                                  {
                                                                                                     return new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                                                  }
                                                                                                  catch (PDOException $pe)
                                                                                                  {
                                                                                                     echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                                     return false;
                                                                                                  }
                                                                                              }
                                                                                        
                                                                                              private function reportPDOError($message, $sql, $pdo)
                                                                                              {
                                                                                                 $info = $pdo->errorInfo();
                                                                                        
                                                                                                 echo "<div style='color:red'><b>Error in SQL Access: $message</b>";
                                                                                                 echo "<br>SQL-Statement: $sql";
                                                                                                 echo "<br>PDO SQLSTATE: $info[0]";
                                                                                                 echo "<br>MySQL error code: $info[1]";
                                                                                                 echo "<br>MySQL error message: $info[2]</div>";
                                                                                              }
                                                                                             
                                                                                        }
                                                                                                    
                                                                                        $Newobject = new ClassProveContakt1();
                                                                                        $Newobject -> ShowForm();
                                                                                        $Newobject ->  PostOkT();
                                                                                        
                                                                                        
                                                                                        
                                                                                            
                                                                                        
                                                                                        ?>
                                                                                        

                                                                                        jetzt versuche baue eine Datei um meine Kommentar zu lösen,

                                                                                        <?php
                                                                                        
                                                                                        header('Content-Type: text/html; Charset=utf-8');
                                                                                        mb_internal_encoding('UTF-8');
                                                                                        date_default_timezone_set('UTC');
                                                                                        ini_set('display_errors', 1);
                                                                                        ini_set('display_startup_errors', 1);
                                                                                        error_reporting(E_ALL);
                                                                                        ?>
                                                                                        
                                                                                        <?php
                                                                                        
                                                                                        require "classprove.php";
                                                                                        
                                                                                        
                                                                                        
                                                                                        
                                                                                        class ClassProveContakt2 
                                                                                        {
                                                                                        
                                                                                        
                                                                                              private $dbHost = 'localhost'; # Host der Datenbank
                                                                                        	  private $dbName = 'meine';      # Name der Datenbank
                                                                                        	  private $dbUser = 'root';      # Name phpmyadmin
                                                                                        	  private $dbPass = 'pass';      # Passwort
                                                                                        
                                                                                              
                                                                                              private $Name;
                                                                                              private $Email;
                                                                                              private $Message;
                                                                                              private $PostOK;
                                                                                              private $datetime;
                                                                                              private $items;
                                                                                              private $ip; 
                                                                                        
                                                                                        
                                                                                             function ShowForms() 
                                                                                            {
                                                                                        ?>
                                                                                              <form  method="POST">
                                                                                                <br>
                                                                                                <label for="name"><b>Name * </b></label>
                                                                                                <input type="text" id="name" name="Name" value="">
                                                                                                <label for="email"><b>E-mail * </b></label>
                                                                                                <input type="email" id="email" name="Email" value="">
                                                                                                <br><br>
                                                                                                <label><b> Message * </b><br>
                                                                                                   <textarea cols="45" rows="6" id="text" name="Message"></textarea>      
                                                                                                </label>
                                                                                                <br><br>
                                                                                                <input  type="submit" name="delete" value="delete" id="comment"/>
                                                                                                <br> 
                                                                                              </form>
                                                                                        <?php
                                                                                            }
                                                                                        
                                                                                             
                                                                                        
                                                                                        
                                                                                        
                                                                                             function CommentToDatabase()
                                                                                             {
                                                                                                // Establish connection with MYSQL Server
                                                                                               try
                                                                                               {
                                                                                                 $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                                               }
                                                                                               catch (PDOException $pe)
                                                                                               {
                                                                                                 echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                                 return false;
                                                                                               }
                                                                                             }
                                                                                             if(isset($_POST["id"])) {
                                                                                                try {
                                                                                                       $connection = new PDO($id, $name, $email, $message, $datetime, $ip);
                                                                                        
                                                                                                       $id = $_POST["id"];
                                                                                        
                                                                                                       $sql = "DELETE FROM mela WHERE id = :id";
                                                                                        
                                                                                                       $statement = $connection->prepare($sql);
                                                                                                       $statement->bindValue(':id', $id);
                                                                                                       $statement->execute();
                                                                                        
                                                                                                       $success = "User successfully deleted";
                                                                                                } catch(PDOException $error) {
                                                                                                  echo $sql . "<br>" . $error->getMessage();
                                                                                                }
                                                                                             }
                                                                                             function tabelle() 
                                                                                             {
                                                                                                
                                                                                        
                                                                                               if ($statement) 
                                                                                               {  
                                                                                         
                                                                                                echo "<table border=1>";
                                                                                            
                                                                                                   echo "<tr>";
                                                                                                      echo "<th>ID</th>";
                                                                                                      echo "<th>Name</th>";
                                                                                                      echo "<th>Email</th>";
                                                                                                      echo "<th>Message</th>";
                                                                                                      echo "<th>Datetime</th>";
                                                                                                      echo "<th>IP</th>";
                                                                                                      echo "<th>Delete</th>";
                                                                                                    echo "</tr>";
                                                                                           
                                                                                                    foreach ($statement as $row): 
                                                                                               
                                                                                                      echo "<form action=classprove.php method=post>"
                                                                                                         . "<tr>"
                                                                                                           . "<td>" . htmlspecialchars($row["id"]) . "</td>"
                                                                                                           . "<td>" . htmlspecialchars($row["name"]) . "</td>"
                                                                                                           . "<td>" . htmlspecialchars($row["email"]) . "</td>"
                                                                                                           . "<td>" . htmlspecialchars($row["datetime"]) . "</td>"
                                                                                                           . "<td>" . htmlspecialchars($row["ip"]) . "</td>"
                                                                                                           . "</tr>";
                                                                                                      
                                                                                                         endforeach;
                                                                                            
                                                                                             
                                                                                                 echo "</table>"; 
                                                                                              }
                                                                                        }
                                                                                        
                                                                                        $Newobjects = new ClassProveContakt2();
                                                                                        $Newobjects -> ShowForms();
                                                                                        $Newobjects -> tabelle();
                                                                                        
                                                                                        
                                                                                        ?>
                                                                                        

                                                                                        mein Ziel ist , bekomme eine Tabelle mit einem Delete Button in jeden Kommentar , dann Später ich als Verwalter , löse kann , ich möchte bekomme eine sache Ähnliche wie dieses Bild,

                                                                                        Bild von delete Beispiel

                                                                                        Aber dieser Datei macht nichts.....

                                                                2. Hallo ihr beiden,

                                                                  danke, Jörg, dass Du eingesprungen bist. Meine Zeit ist im Moment sehr knapp.

                                                                  Ihr solltet vielleicht meine reportPDOError Methode häufiger nutzen. Die habe ich extra zur Aufbereitung der PDO Errors geschrieben. Es kann auch sinnvoll sein, den trigger_error dort einzubauen.

                                                                  Ein "execute failed" in Zeile 119 kann aus zwei Gründen entstehen: Entweder ist der Aufruf der execute-Methode gescheitert, oder $ok war schon vorher FALSE. Dann müsste es aber weitere Fehlermeldungen geben. Wenn aber execute scheitert, dann müsste es auch einen SQLSTATE geben. Ein SQLSTATE=00000 deutet auf einen anderen Fehler hin.

                                                                  Rolf

                                                                  --
                                                                  sumpsi - posui - clusi
                                                                  1. meine reportPDOError Methode häufiger nutzen

                                                                    Kann man wirklich. Da gilt es aber noch was zu verfeinern. Die Methode gibt nämlich stets auf der Webseite aus, was gerade nicht immer erwünscht ist:

                                                                    private function reportPDOError( $message, $sql ) {
                                                                        $info = $this -> dbh -> errorInfo();
                                                                        echo "<div style='color:red'><b>Error in SQL Access: $message</b>";
                                                                        echo "<br>SQL-Statement: $sql";
                                                                        echo "<br>PDO SQLSTATE: $info[0]";
                                                                        echo "<br>MySQL error code: $info[1]";
                                                                        echo "<br>MySQL error message: $info[2]</div>";
                                                                    }
                                                                    

                                                                    Mein Vorschlag (blind geschrieben, nicht getestet):

                                                                    private function reportPDOError( $message, $sql, $isFatal = false ) {
                                                                        $info = $this -> dbh -> errorInfo();
                                                                     
                                                                        trigger_error ( 'Error in SQL Access: ' . $message, E_USER_NOTICE ); 
                                                                        trigger_error ( 'SQL-Statement: '       . $sql    , E_USER_NOTICE ); 
                                                                        trigger_error ( 'PDO SQLSTATE: '        . $info[0], E_USER_NOTICE ); 
                                                                        trigger_error ( 'MySQL error code: '    . $info[1], E_USER_NOTICE ); 
                                                                        trigger_error ( 'MySQL error message: ' . $info[2], E_USER_NOTICE ); 
                                                                    
                                                                        if ( DEBUG || ini_get('display_errors') ) {
                                                                            echo '<div style="color:red"><b>Error in SQL Access: ' . $message . '</b>';
                                                                            echo '<br>SQL-Statement: '       . $sql
                                                                               . '<br>PDO SQLSTATE: '        . $info[0]
                                                                               . '<br>MySQL error code: '    . $info[1]
                                                                               . '<br>MySQL error message: ' . $info[2]
                                                                               ;
                                                                            if ( $isFatal ) {
                                                                                echo '<br>Exit called.</div>';
                                                                                exit;
                                                                            }
                                                                            echo '</div>';
                                                                        }
                                                                        if ( $isFatal ) {
                                                                            trigger_error ('Exit called.', E_USER_ERROR );
                                                                        }
                                                                    }
                                                                    
                                                                    1. ich habe mit deine Vorschlag und bekomme alles Gut .

                                                                      Kannst du Bitte Hilfe mit meine neue Probleme…

                                                                      Ich habe eine neu Datei ,kommenter_verwalter.php ,

                                                                      <?php
                                                                      include 'classprove.php';
                                                                      ini_set('display_errors', 1);
                                                                      ini_set('display_startup_errors', 1);
                                                                      error_reporting(E_ALL);
                                                                      
                                                                      $New = new ClassProveContakt1();
                                                                      
                                                                      
                                                                      
                                                                      class ClassProveContakt2 
                                                                      {
                                                                      
                                                                      
                                                                              private $dbHost = 'localhost'; # Host der Datenbank
                                                                      	    private $dbName = 'meine';      # Name der Datenbank
                                                                      	    private $dbUser = 'root';      # Name phpmyadmin
                                                                      	    private $dbPass = 'pass';      # Passwort
                                                                      
                                                                            
                                                                             private $Name;
                                                                             private $Email;
                                                                             private $Message;
                                                                             private $PostOK;
                                                                             private $datetime;
                                                                             private $items;
                                                                             private $ip; 
                                                                      
                                                                      
                                                                      
                                                                      
                                                                          function CommentToDatabase()
                                                                          {
                                                                              // Establish connection with MYSQL Server
                                                                             try
                                                                             {
                                                                               $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                             }
                                                                             catch (PDOException $pe)
                                                                             {
                                                                               echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                               return false;
                                                                             }
                                                                           
                                                                             if(isset($_POST["delete"])) {
                                                                               try {
                                                                                     require classprove.php;
                                                                                      
                                                                                     $connection = new PDO($id, $name, $email, $message, $datetime, $ip);
                                                                      
                                                                                     $id = $_POST["id"];
                                                                      
                                                                                     $sql = "DELETE FROM mela WHERE id = :id";
                                                                      
                                                                                     $statement = $connection->prepare($sql);
                                                                                     $statement->bindValue(':id', $id);
                                                                                     $statement->execute();
                                                                      
                                                                                     $success = "User successfully deleted";
                                                                                }catch(PDOException $error) {
                                                                                       echo $sql . "<br>" . $error->getMessage();
                                                                                }
                                                                               
                                                                             } 
                                                                           }
                                                                           function tabelle() 
                                                                           {
                                                                              
                                                                      
                                                                             if ($sb) 
                                                                             {  
                                                                       
                                                                                echo "<table id='user' class='table table-bordered'>
                                                                                   <tr>
                                                                                    <th>id</th>
                                                                                    <th>name</th>
                                                                                    <th>email</th>
                                                                                    <th>message</th>
                                                                                    <th>datetime</th>
                                                                                    <th>ip</th>
                                                                                   </tr>";
                                                                          
                                                                                 
                                                                         
                                                                                  foreach ($sb as $row): 
                                                                             
                                                                                      echo "<form action='classprove.php' method='post'>
                                                                                    <tr>
                                                                                      <td> '".$row["id"]."'</td>
                                                                                      <td>'". $row["name"]."'</td>
                                                                                      <td>'". $row["email"]."'</td>
                                                                                      <td> '".$row["datetime"]."'</td>
                                                                                       <td> '".$row["ip"]."'</td>
                                                                                      </tr>
                                                                                    </form>"; 
                                                                                    
                                                                                            endforeach;
                                                                          
                                                                           
                                                                               echo "</table>"; 
                                                                             }
                                                                            }
                                                                      }
                                                                      
                                                                      $Newobjects = new ClassProveContakt2();
                                                                      $Newobjects -> tabelle();
                                                                      
                                                                      
                                                                      ?>
                                                                      
                                                                      

                                                                      ich versuche mit diese Datei dass der Kommentar wird in einer Tabelle gezeigt , wie diesen Screenshot, wünsch ausgang kommentar

                                                                      aber mit sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log

                                                                      bekomme dieser warnung,

                                                                      PHP Notice: Undefined variable: sb in /var/www/html/kommenter_verwalter.php on line 76

                                                                      Die Warnung ich verstehe aber ich weiß nicht wie lösen kann....

                                                                      1. Du hast noch immer keinen Plan gemacht.

                                                                        1. Wieso heisst eine Funktion, mit der ein Kommentar gelöscht werden soll, "CommentToDatabase"?
                                                                        2. Du SENDEST die Daten (id des Kommentars) offenbar per GET. Das sollst Du nicht tun.
                                                                        3. Du EWARTEST aber, dass die id des Kommentars per POST gesendet wurde.
                                                                        4. foreach ($sb as $row): ist eine gute Idee aber die Syntax ist die von Python, nicht von PHP. Das muss foreach ($sb as $row) { lauten.
                                                                        5. $sb kommt in der Methode "tabelle" zwei mal vor: Einmal in if ($sb) und einmal in foreach ($sb as $row). Es wird aber der Methode "tabelle" beim Aufruf ($Newobjects -> tabelle();) nicht übergeben und auch nicht erwartet. (function tabelle() {) - Wo soll also $sb herkommen? Die Fehlermeldung "Undefined variable: sb" ist also insoweit leicht verständlich. Nur die Zeilennummer stimmt überhaupt nicht mit Deiner Wiedergabe des Skriptes überein.
                                                                        6. Dir ist hoffentlich klar, dass eine Authorisierung stattfinden muss.
                                                                        1. Hi,

                                                                          1. foreach ($sb as $row): ist eine gute Idee aber die Syntax ist die von Python, nicht von PHP. Das muss foreach ($sb as $row) { lauten.

                                                                          PHP Alternative Schreibweise für Kontrollstrukturen

                                                                          cu,
                                                                          Andreas a/k/a MudGuard

                                                                        2. Du hast noch immer keinen Plan gemacht.

                                                                          Mein Plan have schon gemacht .…

                                                                          Wieso heisst eine Funktion, mit der ein Kommentar gelöscht werden soll, "CommentToDatabase"?

                                                                          nur um zu wissen... , wie soll sie nennt ?

                                                                          Du SENDEST die Daten (id des Kommentars) offenbar per GET. Das sollst Du nicht tun. Du EWARTEST aber, dass die id des Kommentars per POST gesendet wurde.

                                                                          ich denke das du meinst was auf mein Plan steht , aber was mit GET steht ist die Beispiel von der Frau , Unten stehe wie ich machen möchte.…

                                                                          foreach ($sb as $row): ist eine gute Idee aber die Syntax ist die von Python, nicht von PHP. Das muss foreach ($sb as $row) { lauten.

                                                                          ich habe foreach ($sb as $row): geschrieben aber an Ende gibt es endforeach; , Rolf sagtet das gibt zwei Möglichkeit foreach schreibe , eine so , und andere mit foreach ($sb as $row){ . . . }

                                                                          Wo soll also $sb herkommen?

                                                                          ich benutze beiden Code , die von dir kommt und von Rolf , und$db. kommt von Rolf Code....

                                                                          Dir ist hoffentlich klar, dass eine Authorisierung stattfinden muss.

                                                                          das habe nicht gute verstand..auf meine kommenter_verwalter.php Datei , ganz Oben habe geschrieben , require 'classprove.php'; .

                                                                          Wie jetzt habe meine kommenter_verwalter.php Datei... ,

                                                                          <?php
                                                                          
                                                                          ini_set('display_errors', 1);
                                                                          ini_set('display_startup_errors', 1);
                                                                          error_reporting(E_ALL);
                                                                          require 'classprove.php';
                                                                          
                                                                          
                                                                          
                                                                          
                                                                          
                                                                          class ClassProveContakt2 
                                                                          {
                                                                          
                                                                          
                                                                                  private $dbHost = 'localhost'; # Host der Datenbank
                                                                          	    private $dbName = 'meine';      # Name der Datenbank
                                                                          	    private $dbUser = 'root';      # Name phpmyadmin
                                                                          	    private $dbPass = 'pass';      # Passwort
                                                                          
                                                                                
                                                                                 private $Name;
                                                                                 private $Email;
                                                                                 private $Message;
                                                                                 private $PostOK;
                                                                                 private $datetime;
                                                                                 private $items;
                                                                                 private $ip;
                                                                                 private $db;   
                                                                          
                                                                          
                                                                          
                                                                          
                                                                              function CommentToDatabase()
                                                                              {
                                                                                  // Establish connection with MYSQL Server
                                                                                 try
                                                                                 {
                                                                                   $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                                 }
                                                                                 catch (PDOException $pe)
                                                                                 {
                                                                                   echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                   return false;
                                                                                 }
                                                                               
                                                                                 if(isset($_POST["delete"])) {
                                                                                   try {
                                                                                         require classprove.php;
                                                                                          
                                                                                         $connection = new PDO($id, $name, $email, $message, $datetime, $ip);
                                                                          
                                                                                         $id = $_POST["id"];
                                                                          
                                                                                         $sql = "DELETE FROM mela WHERE id = :id";
                                                                          
                                                                                         $statement = $connection->prepare($sql);
                                                                                         $statement->bindValue(':id', $id);
                                                                                         $statement->execute();
                                                                          
                                                                                         $success = "User successfully deleted";
                                                                                    }catch(PDOException $error) {
                                                                                           echo $sql . "<br>" . $error->getMessage();
                                                                                    }
                                                                                   
                                                                                 } 
                                                                               }
                                                                               function tabelle(ClassProveContakt2 $New) 
                                                                               {
                                                                                 $db = $this ->getMessages();
                                                                          
                                                                                 if ($sb) 
                                                                                 {  
                                                                           
                                                                                    echo "<table id='user' class='table table-bordered'>
                                                                                       <tr>
                                                                                        <th>id</th>
                                                                                        <th>name</th>
                                                                                        <th>email</th>
                                                                                        <th>message</th>
                                                                                        <th>datetime</th>
                                                                                        <th>ip</th>
                                                                                        <th>Delete User</th>
                                                                                       </tr>";
                                                                              
                                                                                     
                                                                             
                                                                                      foreach ($sb as $row): 
                                                                                 
                                                                                          echo "EOT
                                                                                            <form action="classprove.php" method="post"><tr>
                                                                                               <td>{$row['id']}</td>
                                                                                               <td>{$row['name']}</td>
                                                                                               <td>{$row['email']}</td>
                                                                                               <td>{$row['datetime']}</td>
                                                                                               <td>{$row['ip']}</td>
                                                                                              </tr></form>
                                                                                                EOT";
                                                                          
                                                                                               endforeach;
                                                                              
                                                                                    echo "</table>";   
                                                                                   }
                                                                                   
                                                                                }
                                                                          
                                                                          }
                                                                          
                                                                          $New = new ClassProveContakt2();
                                                                          $New -> tabelle();
                                                                          
                                                                          
                                                                          ?>
                                                                          
                                                                          

                                                                          mit sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log

                                                                          bekomme,

                                                                          PHP Parse error: syntax error, unexpected 'classprove' (T_STRING), expecting ',' or ';' in /var/www/html/kommenter_verwalter.php on line 91

                                                                          Auf die Zeile 91 habe, <form action="classprove.php" method="post"><tr>

                                                                          1. ich habe foreach ($sb as $row): geschrieben aber an Ende gibt es endforeach; , Rolf sagtet das gibt zwei Möglichkeit foreach schreibe , eine so , und andere mit `foreach ($sb as $row){

                                                                            Rolf buw. Mudgard hat da durchaus Recht. Aber dennoch ist es schlechter Stil die "normalen" und alternativen Schreibweisen zu mixen. Alternative Schreibweisen verwendet man nur dann, wenn man einen guten Grund dafür hat. Und der fehlt hier.

                                                                            1. Eine Frage…

                                                                              In deine Code , wenn du hier,

                                                                              $Newobject = new ClassProveContakt3();
                                                                              $Newobject -> TestPostData();
                                                                              $Newobject -> ShowForm();
                                                                              $Newobject -> getMessages();
                                                                              

                                                                              ruft die Class , $Newobject = new ClassProveContakt3(); , wenn ClassProveContakt3 eine class ist warum benutzt () , ich dachte wird benutze nur bei Functionen.…

                                                                              jetzt habe meine foreach wie du möchtest,

                                                                              foreach ($ok as $row){ 
                                                                                     
                                                                                              echo '<<<EOT
                                                                                                  <form action="classprove.php" method="post"><tr>
                                                                                                   <td>{$row['id']}</td>
                                                                                                   <td>{$row['name']}</td>
                                                                                                   <td>{$row['email']}</td>
                                                                                                   <td>{$row['datetime']}</td>
                                                                                                   <td>{$row['ip']}</td>
                                                                                                   </tr></form>
                                                                                                    EOT';
                                                                              
                                                                              
                                                                                         }        
                                                                              
                                                                              

                                                                              aber der Ergebnisse ist Gleich , bekomme nicht die Tabelle... ich versuche mache wie hier ist...

                                                                              1. Eine Frage…

                                                                                In deine Code , wenn du hier,

                                                                                $Newobject = new ClassProveContakt3();
                                                                                $Newobject -> TestPostData();
                                                                                $Newobject -> ShowForm();
                                                                                $Newobject -> getMessages();
                                                                                

                                                                                ruft die Class , $Newobject = new ClassProveContakt3(); , wenn ClassProveContakt3 eine class ist warum benutzt () , ich dachte wird benutze nur bei Functionen.…

                                                                                Jede Klasse kann eine Methode __construct() haben. Diese wird unmittelbar nach Anlegen des Objekts aufgerufen. Damit man der Methode __construct() eventuell Parameter übergeben kann gibt es in der Syntax die Möglichkeit $object = new Class(); zu notieren.

                                                                                jetzt habe meine foreach wie du möchtest,

                                                                                foreach ($ok as $row){ 
                                                                                       
                                                                                                echo '<<<EOT
                                                                                                    <form action="classprove.php" method="post"><tr>
                                                                                                     <td>{$row['id']}</td>
                                                                                                     <td>{$row['name']}</td>
                                                                                                     <td>{$row['email']}</td>
                                                                                                     <td>{$row['datetime']}</td>
                                                                                                     <td>{$row['ip']}</td>
                                                                                                     </tr></form>
                                                                                                      EOT';
                                                                                
                                                                                
                                                                                           }        
                                                                                
                                                                                

                                                                                Hm. Da ist mindestenes noch die heredoc-Schreibweise falsch:

                                                                                foreach ( $arrRows as $row ) { 
                                                                                    echo <<<EOT
                                                                                    <form action="classprove.php" method="post">
                                                                                        <tr>
                                                                                            <td>{$row['id']}</td>
                                                                                            <td>{$row['name']}</td>
                                                                                            <td>{$row['email']}</td>
                                                                                            <td>{$row['datetime']}</td>
                                                                                            <td>{$row['ip']}</td>
                                                                                        </tr>
                                                                                    </form>
                                                                                EOT;
                                                                                }
                                                                                

                                                                                (Und gib den Dingen (Variablen, Funktionen, Objekte, Klassen,...) vernünftige Namen - dann weißt Du auch, was Du tust!)

                                                                                1. Meine Code auf kommenter_verwalter.php jetzt sie siehst aus so,

                                                                                  <?php
                                                                                  
                                                                                  ini_set('display_errors', 1);
                                                                                  ini_set('display_startup_errors', 1);
                                                                                  error_reporting(E_ALL);
                                                                                  include 'classprove.php';
                                                                                  $New = new ClassProveContakt3();
                                                                                  $New -> writeCommentToDatabas();
                                                                                  $New -> getMessages();
                                                                                   
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                  class ClassProveContakt2 
                                                                                  {
                                                                                  
                                                                                  
                                                                                          private $dbHost = 'localhost'; # Host der Datenbank
                                                                                  	    private $dbName = 'meine';      # Name der Datenbank
                                                                                  	    private $dbUser = 'root';      # Name phpmyadmin
                                                                                  	    private $dbPass = 'pass';      # Passwort
                                                                                  
                                                                                        
                                                                                         private $Name;
                                                                                         private $Email;
                                                                                         private $Message;
                                                                                         private $PostOK;
                                                                                         private $datetime;
                                                                                         private $items;
                                                                                         private $ip;
                                                                                         private $db;   
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                      function writeCommentToDatabas()
                                                                                      {
                                                                                          // Establish connection with MYSQL Server
                                                                                         try
                                                                                         {
                                                                                           $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                                         }
                                                                                         catch (PDOException $pe)
                                                                                         {
                                                                                           echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                           return false;
                                                                                         }
                                                                                       
                                                                                         if(isset($_POST["delete"])) {
                                                                                           try {
                                                                                                 require classprove.php;
                                                                                                  
                                                                                                 $connection = new PDO($id, $name, $email, $message, $datetime, $ip);
                                                                                  
                                                                                                 $id = $_POST["id"];
                                                                                  
                                                                                                 $sql = "DELETE FROM mela WHERE id = :id";
                                                                                  
                                                                                                 $statement = $connection->prepare($sql);
                                                                                                 $statement->bindValue(':id', $id);
                                                                                                 $statement->execute();
                                                                                  
                                                                                                 $success = "User successfully deleted";
                                                                                            }catch(PDOException $error) {
                                                                                                   echo $sql . "<br>" . $error->getMessage();
                                                                                            }
                                                                                           
                                                                                         } 
                                                                                       }
                                                                                       function tabelle() 
                                                                                       {
                                                                                         $arrRows  = $New->getMessages();
                                                                                  
                                                                                         if ($arrRows) 
                                                                                         {  
                                                                                   
                                                                                            echo "<table id='user' class='table table-bordered'>
                                                                                               <tr>
                                                                                                <th>id</th>
                                                                                                <th>name</th>
                                                                                                <th>email</th>
                                                                                                <th>message</th>
                                                                                                <th>datetime</th>
                                                                                                <th>ip</th>
                                                                                                <th>Delete User</th>
                                                                                               </tr>";
                                                                                      
                                                                                             
                                                                                     
                                                                                              foreach ($arrRows as $row){ 
                                                                                         
                                                                                                  echo <<<EOT
                                                                                                      <form action="classprove.php" method="post">
                                                                                                      <tr>
                                                                                                        <td>{$row['id']}</td>
                                                                                                        <td>{$row['name']}</td>
                                                                                                        <td>{$row['email']}</td>
                                                                                                        <td>{$row['datetime']}</td>
                                                                                                        <td>{$row['ip']}</td>
                                                                                                        </tr>
                                                                                                       </form>
                                                                                                     EOT;
                                                                                              }         
                                                                                              echo "</table>";   
                                                                                           }
                                                                                           
                                                                                        }
                                                                                  
                                                                                  }
                                                                                  
                                                                                  $News = new ClassProveContakt2();
                                                                                  $News -> getMessages();
                                                                                  $News -> tabelle();
                                                                                  $News -> $arrRows;
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                  

                                                                                  Wenn mache sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log

                                                                                  Bekomme dieser Warnung ,

                                                                                  PHP Parse error: syntax error, unexpected end of file in /var/www/html/kommenter_verwalter.php on line 120

                                                                                  und ich weiß nicht warum bekomme , weil alle Funktionen sind gute geschossenen ...

                                                                                  1. bekomme dieser Warnung ,

                                                                                        PHP Parse error: syntax error, unexpected end of file in /var/www/html/kommenter_verwalter.php on line 120
                                                                                    

                                                                                    und ich weiß nicht warum bekomme , weil alle Funktionen sind gute geschossenen ...

                                                                                    Ja. Das ist klar. Ich hatte geschrieben:

                                                                                    Da ist mindestens noch die heredoc-Schreibweise falsch:

                                                                                                    echo <<<EOTEOT;
                                                                                    

                                                                                    Der Marker EOT (End of Transmission) muss ganz am Anfang einer Zeile stehen.

                                                                                    1. Danke , das war das Fehler....

                                                                                      aber jetzt bekomme der form mit ihren Antworten.... wenn ich möchte die Tabelle…

                                                                                      ich versuche der Eingenschaft $dbh; zu rufen der auf die Funktion writeCommentToDatabase() ist,

                                                                                      function writeCommentToDatabase() {
                                                                                      	// Establish connection with MYSQL Server
                                                                                      	
                                                                                      		if ( ! $this -> dbh ) {
                                                                                      			$this -> getConnection();
                                                                                      		}
                                                                                      		//Prepare Query of SQL
                                                                                      		$statement = $this -> dbh -> prepare("INSERT INTO mela(name, email, message, datetime, ip) VALUES (:name, :email, :message, :date, :ip)");
                                                                                      		if ( ! $statement ) {
                                                                                      			trigger_error( 'prepare failed: SQLSTATE=' . $this -> dbh -> errorCode() . ', Error Info=' . print_r( $this -> dbh -> errorInfo(), true ), E_USER_ERROR ) ;
                                                                                      		} else {
                                                                                      			$ok = $statement -> bindValue( ':name',    $this -> Name,         PDO::PARAM_STR )
                                                                                      			   && $statement -> bindValue( ':email',   $this -> Email,        PDO::PARAM_STR )
                                                                                      			   && $statement -> bindValue( ':message', $this -> Message,      PDO::PARAM_STR )
                                                                                      			   && $statement -> bindValue( ':date',    date("Y-m-d H:i:s"), PDO::PARAM_STR )
                                                                                      			   && $statement -> bindValue( ':ip',      $this -> ip,          PDO::PARAM_STR );
                                                                                      			if ( ! $ok )  {
                                                                                      				echo "<br><br>bindValue failed: SQLSTATE=" . $this -> dbh -> errorCode() . ", Error Info=" . print_r( $dbh -> errorInfo(), true ) . "</p>";
                                                                                      			}
                                                                                      		}
                                                                                      		if ( $ok ) {
                                                                                      			$ok = $statement -> execute();
                                                                                      		} 
                                                                                      		
                                                                                      		if ( $ok === false  ) {
                                                                                                trigger_error( 'execute failed: SQLSTATE=' . $this -> dbh -> errorCode() . ', Error Info=' . print_r($this -> dbh -> errorInfo(), true),  E_USER_ERROR );
                                                                                      		} else {
                                                                                      			#echo '<div class="msg">Data Inserted successfully!</div>';
                                                                                      			$this ->  unsetFormdata();
                                                                                      			return $ok;
                                                                                      		}
                                                                                      

                                                                                      ich rufen sie mit $arrRows = $New->writeCommentToDatabas()-> $dbh; , in,

                                                                                      function tabelle() 
                                                                                           {
                                                                                             $arrRows  = $New->writeCommentToDatabas()-> $dbh;
                                                                                      
                                                                                             if ($arrRows) 
                                                                                             {  
                                                                                             .
                                                                                             .
                                                                                             .   
                                                                                      

                                                                                      bekomme diese Warnung,

                                                                                      Fatal error: Uncaught Error: Call to undefined method ClassProveContakt3::writeCommentToDatabas() in /var/www/html/kommenter_verwalter.php:8 Stack trace: #0 {main} thrown in /var/www/html/kommenter_verwalter.php on line 8

                                                                                      Auf der Zeile 8 , habe , $New -> writeCommentToDatabas();

                                                                                      1. Also zum einen ist <form> zwischen <table> und <tr> nicht erlaubt. Du machst also am besten EIN Formular über die gesamte Tabelle hinweg:

                                                                                        class comments {
                                                                                        
                                                                                            # …
                                                                                        
                                                                                            function printAdminTable() {
                                                                                                 $arrRows = $New->writeCommentToDatabas()-> $dbh;
                                                                                                 if ( $arrRows ) {
                                                                                                     echo '    
                                                                                                      <form action="deleteComment.php" method="POST">
                                                                                                           <table>';
                                                                                                     foreach ( $arrRows as $row ) {
                                                                                                        echo <<<EOT
                                                                                                              <tr>
                                                                                                                  <td>{$row['name']}</td>
                                                                                                                  <td>{$row['email']}</td>
                                                                                                                  <td>{$row['datetime']}</td>
                                                                                                                  <td>{$row['ip']}</td>
                                                                                                                  <td><button type "submit" name="delete" value="{$row['id']}">löschen</button>
                                                                                                              </tr>
                                                                                                             
                                                                                        EOT;
                                                                                                     }
                                                                                                     echo '
                                                                                                           </table>
                                                                                                       </form>';
                                                                                                 } else {
                                                                                                      echo '<p class="error">Hm. $arrRows enthält nichts oder false. Entweder ist die Datenbank noch leer oder da ist was falsch.</p>';
                                                                                                 }            
                                                                                             }
                                                                                        
                                                                                             # …
                                                                                        
                                                                                        }
                                                                                        

                                                                                        aber ist nichts passiert ....

                                                                                        Es passiert nie nichts. Und ändere endlich die vielen falschen Namen! - Die bringen Dich durcheinander!

                                                                                        1. Vielen danke für deine bemüht !

                                                                                          jetzt habe meine kommenter_verwalter.php datei so,

                                                                                          <?php
                                                                                          
                                                                                          ini_set('display_errors', 1);
                                                                                          ini_set('display_startup_errors', 1);
                                                                                          error_reporting(E_ALL);
                                                                                          include 'classprove.php';
                                                                                          $New = new ClassProveContakt3();
                                                                                          $New-> writeCommentToDatabase();
                                                                                          
                                                                                          
                                                                                           
                                                                                          
                                                                                          
                                                                                          
                                                                                          
                                                                                          
                                                                                          class ClassProveContakt2 
                                                                                          {
                                                                                          
                                                                                          
                                                                                                  private $dbHost = 'localhost'; # Host der Datenbank
                                                                                          	    private $dbName = 'meine';      # Name der Datenbank
                                                                                          	    private $dbUser = 'root';      # Name phpmyadmin
                                                                                          	    private $dbPass = 'pass';      # Passwort
                                                                                          
                                                                                                
                                                                                                 private $Name;
                                                                                                 private $Email;
                                                                                                 private $Message;
                                                                                                 private $PostOK;
                                                                                                 private $datetime;
                                                                                                 private $items;
                                                                                                 private $ip;
                                                                                                 private $dbh;   
                                                                                          
                                                                                          
                                                                                          
                                                                                          
                                                                                             
                                                                                               function printTabelle() {
                                                                                                   $arrRows = $New->writeCommentToDatabas()-> $dbh;
                                                                                                   if ( $arrRows ) {
                                                                                                       echo '    
                                                                                                        <form action="classprove.php" method="post">
                                                                                                             <table>';
                                                                                                       foreach ( $arrRows as $row ) {
                                                                                                          echo <<<EOT
                                                                                                                <tr>
                                                                                                                    <td>{$row['id']}</td>
                                                                                                                    <td>{$row['name']}</td>
                                                                                                                    <td>{$row['email']}</td>
                                                                                                                    <td>{$row['message']}</td>
                                                                                                                    <td>{$row['datetime']}</td>
                                                                                                                    <td>{$row['ip']}</td>
                                                                                                                    <td><button type "submit" name="delete" value="{$row['id']}">löschen</button> 
                                                                                                                </tr>
                                                                                                               
                                                                                          EOT;
                                                                                                       }
                                                                                                       echo '
                                                                                                             </table>
                                                                                                         </form>';
                                                                                                   } else {
                                                                                                        echo '<p class="error">Hm. $arrRows enthält nichts oder false. Entweder ist die Datenbank noch leer oder da ist was falsch.</p>';
                                                                                                   }            
                                                                                               }
                                                                                          
                                                                                               # …
                                                                                          
                                                                                          
                                                                                          
                                                                                          }
                                                                                          
                                                                                          $News = new ClassProveContakt2();
                                                                                          
                                                                                          $News -> printTabelle();
                                                                                          
                                                                                          
                                                                                          
                                                                                          

                                                                                          ich bekomme die form wie auch eine Warnung..

                                                                                          PHP Fatal error: execute failed: SQLSTATE=00000, Error Info=Array\n(\n [0] => 00000\n [1] => \n [2] => \n)\n in /var/www/html/classprove.php on line 121, referer: http://localhost/kommenter_verwalter.php

                                                                                          Auf der Datei classprove.php (in deine Code)in der zeile 121 gibt,

                                                                                          trigger_error( 'execute failed: SQLSTATE=' . $this -> dbh -> errorCode() . ', Error Info=' . print_r($this -> dbh -> errorInfo(), true),  E_USER_ERROR );
                                                                                          

                                                                                          auch wenn die form füllen und die kommentar nach Datenbank schickt .Die Kommentar werden nach Datenbank geschickt , deshalb verstehe nicht warum dieser Warnung..

                                                                                          1. Immer wenn versuche die Datei classprove.php zu mein kommenter_verwalter.php zu bringe , bringe mir Probleme... deshalb versuche jetzt ohne sie…

                                                                                            Wie meine kommenter_verwalter.php jetzt aussiehst,

                                                                                            <?php
                                                                                            
                                                                                            ini_set('display_errors', 1);
                                                                                            ini_set('display_startup_errors', 1);
                                                                                            error_reporting(E_ALL);
                                                                                            
                                                                                            
                                                                                            
                                                                                            
                                                                                            
                                                                                            class ClassProveContakt2 
                                                                                            {
                                                                                            
                                                                                            
                                                                                                          private $dbHost = 'localhost'; # Host der Datenbank
                                                                                                          private $dbName = 'meine';      # Name der Datenbank
                                                                                                          private $dbUser = 'root';      # Name phpmyadmin
                                                                                                          private $dbPass = 'pass';      # Passwort
                                                                                            
                                                                                              
                                                                                                          private $Name;
                                                                                                          private $Email;
                                                                                                          private $Message;
                                                                                                          private $PostOK;
                                                                                                          private $datetime;
                                                                                                          private $items;
                                                                                                          private $ip;
                                                                                                          private $db;   
                                                                                              
                                                                                            
                                                                                            
                                                                                            
                                                                                                          function CommentToDatabase()
                                                                                                          {
                                                                                                              // Establish connection with MYSQL Server
                                                                                                            try
                                                                                                            {
                                                                                                              $db = new PDO("mysql:host=localhost;dbname=meine", "root", "pass");
                                                                                                            }
                                                                                                             catch (PDOException $pe)
                                                                                                            {
                                                                                                               echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                                                                                return false;
                                                                                                            }
                                                                                             
                                                                                                            if(isset($_POST["delete"])) {
                                                                                                             try {
                                                                                                                   require classprove.php;
                                                                                                        
                                                                                                                   $connection = new PDO($id, $name, $email, $message, $datetime, $ip);
                                                                                            
                                                                                                                   $id = $_POST["id"];
                                                                                            
                                                                                                                   $sql = "DELETE FROM mela WHERE id = :id";
                                                                                            
                                                                                                                   $statement = $connection->prepare($sql);
                                                                                                                   $statement->bindValue(':id', $id);
                                                                                                                   $statement->execute();
                                                                                            
                                                                                                                   $success = "User successfully deleted";
                                                                                                                  }catch(PDOException $error) {
                                                                                                                        echo $sql . "<br>" . $error->getMessage();
                                                                                                                   }
                                                                                                 
                                                                                                             } 
                                                                                                           }
                                                                                                           function tabelle() 
                                                                                                           {
                                                                                                              $db = $this ->CommentToDatabase();
                                                                                            
                                                                                                              if ($db) 
                                                                                                              {  
                                                                                             
                                                                                                                 echo "<table id='user' class='table table-bordered'>
                                                                                                     
                                                                                                                    <tr>
                                                                                                                      <th>id</th>
                                                                                                                      <th>name</th>
                                                                                                                      <th>email</th>
                                                                                                                      <th>message</th>
                                                                                                                      <th>datetime</th>
                                                                                                                      <th>ip</th>
                                                                                                                       <th>Delete User</th>
                                                                                                                      </tr>";
                                                                                            
                                                                                                                     foreach ($db as $row){
                                                                                               
                                                                                                                        echo <<<EOT
                                                                                                                           <tr>
                                                                                                                              <td>{$row['id']}</td>
                                                                                                                              <td>{$row['name']}</td>
                                                                                                                              <td>{$row['email']}</td>
                                                                                                                              <td>{$row['message']}</td>
                                                                                                                              <td>{$row['datetime']}</td>
                                                                                                                              <td>{$row['ip']}</td>
                                                                                                                              <td><button type "submit" name="delete" value="{$row['id']}">löschen</button> 
                                                                                                                            </tr>
                                                                                                                 
                                                                                            EOT;
                                                                                                                     }
                                                                                            
                                                                                                                    echo "</table>";   
                                                                                                 
                                                                                                 
                                                                                                                 }
                                                                                                           
                                                                                                           }
                                                                                            }
                                                                                            
                                                                                            $News = new ClassProveContakt2;
                                                                                            $News -> CommentToDatabase();
                                                                                            $News -> tabelle();
                                                                                            
                                                                                            
                                                                                            
                                                                                            
                                                                                            ?>
                                                                                            
                                                                                            

                                                                                            mit sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log

                                                                                            bekomme keine Warnung mehr , aber auch zeigt nichts...

                                                      2. Du hast 4 mal diese Meldung im error-log? In welchem?

                                                        Auf dem Zweite Code um uns zu verstanden (Code B)....

                                                        Wie lautet diese vollständig? Gibt es vor diesem Text eine andere Meldung?

                                                        habe keine andere Meldung bekomme als

                                                        SCHEDULER-967 en: start_new_file(): protocol file is being closed now

                                                        ....und viele Danke für deine hilfe !

                                                2. das habe mit andere Code bekomme der ähnliche wie diesen ist...,

                                                  ist diesen,

                                                  <?php
                                                  
                                                  
                                                  class ClassProveContakt3 
                                                  {
                                                  
                                                        private $Name;
                                                        private $Email;
                                                        private $Message;
                                                        private $PostOK;
                                                        private $DateTime;
                                                        private $items;
                                                        private $ips;
                                                        
                                                  
                                                   
                                                      function __construct() 
                                                      {
                                                  
                                                           $this->DateTime = date('m/d/Y h:i:s a', time());
                                                           $this -> DateTime = date('m/d/Y h:i:s a');  
                                                           $this -> items = ['Name', 'Email', 'Message']; 
                                                           
                                                           
                                                           $flag = true;
                                                            foreach ( $this -> items as $key ) {  
                                                  			           if ( empty ( $_POST[$key] ) )  {
                                                  			             $flag = false;    
                                                  			           } else {    
                                                  			             $this -> $key = trim( filter_var( $_POST[$key], FILTER_SANITIZE_STRING ) ); 
                                                  			            }    
                                                  		   }	     
                                                           $this -> PostOk = $flag; 
                                                           
                                                      }
                                                  
                                                   
                                                      
                                                  
                                                    
                                                      function ShowForm() 
                                                      {
                                                  ?>
                                                        <form  method="POST">
                                                          <label for="name"><b>Name * </b></label>
                                                          <input type="text" id="name" name="Name" value="">
                                                          <label for="email"><b>E-mail * </b></label>
                                                          <input type="email" id="email" name="Email" value="">
                                                          <br><br>
                                                          <label><b> Message * </b><br>
                                                             <textarea cols="45" rows="6" id="text" name="Message"></textarea>      
                                                          </label>
                                                          <br><br>
                                                          <input  type="submit" name="post" value="POST COMMENT" id="comment">
                                                        </form>
                                                  <?php
                                                      }
                                                      function PostOkT() 
                                                      {
                                                           if (! $this -> PostOK)
                                                           {
                                                              echo "<br><b><h3>*** Please enter all required fields ***</h3></b>";  
                                                           } 
                                                           else 
                                                           {
                                                              echo "<br>"
                                                                 . "<b>From: </b>" . htmlspecialchars( $this->Name )
                                                                 . "<b> at: </b>" . htmlspecialchars( $this>DateTime )   
                                                                 . "<br><br>" . htmlspecialchars( $this->Message )
                                                                 . "<br><hr>";
                                                             
                                                           } 
                                                           
                                                        }
                                                        function writeCommentToDatabase()
                                                      {
                                                            // Establish connection with MYSQL Server
                                                            try
                                                            {
                                                               $db = new PDO("mysql:dbname=meine;host=localhost", "root", "pass");
                                                            }
                                                            catch (PDOException $pe)
                                                            {
                                                               echo "<br>Cannot connect to database: " . $pe->getMessage();
                                                               return false;
                                                            }
                                                  
                                                            //Prepare Query of SQL
                                                            $statement = $db->prepare("INSERT INTO mela(name, email, message, datetime, ips) VALUES (:name, :email, :message, :date, :ips)");
                                                            if (!$statement)
                                                            {
                                                               echo "<br><br>prepare failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                               $ok = FALSE;
                                                            }
                                                            else
                                                            {
                                                               $ok = $statement->bindValue(':name', $this->Name, PDO::PARAM_STR)
                                                                  && $statement->bindValue(':email', $this->Email, PDO::PARAM_STR)
                                                                  && $statement->bindValue(':message', $this->Message, PDO::PARAM_STR)
                                                                  && $statement->bindValue(':date', date("Y-m-d H:i:s"), PDO::PARAM_STR)
                                                                  && $statement->bindValue(':ips', $this->ips, PDO::PARAM_STR);
                                                               if (!$ok)
                                                               {
                                                                  echo "<br><br>bindValue failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                               }
                                                            }
                                                            if ($ok)
                                                            {
                                                               $ok = $statement->execute();
                                                               if (!$ok)
                                                               {
                                                                  echo "<br><br>execute failed: SQLSTATE=" . $db->errorCode() . ", Error Info=" . print_r($db->errorInfo(), true) . "</p>";
                                                               }
                                                            }
                                                            echo "<br/><br/><span>Data Inserted successfully...!!</span>";
                                                          
                                                          $this->db = null;   
                                                          return $ok;
                                                        
                                                    
                                                      }    
                                                  }
                                                              
                                                  $Newobject = new ClassProveContakt3();
                                                  $Newobject -> ShowForm();
                                                  $Newobject ->  PostOkT();
                                                  
                                                  
                                                  
                                                  
                                                  
                                                      
                                                  
                                                  ?>
                                                  

                                                  mit dem code der gepostet habe , bekomme nichts...

                                                  1. ich habe ein Bissen recherchiert über was ich bekomme , 2019-05-13T17:48:23.842837Z 967 [Note] Event Scheduler: scheduler thread started with id 967

                                                    das ist , SCHEDULER-967 , und hier gibt dieser Bedeutung,

                                                    SCHEDULER-967 en: start_new_file(): protocol file is being closed now

                                                    haber noch nicht mehr bekomme....

                        2. Nachtrag:

                          5. Zur Optimierung des Input/Outout von Mysql benötigtes Paket:

                          sudo apt -y install libaio1

                          1. danke aber habe schon...