PHP - Sql; no recibo las repuestas en Tablas

 
Vista:
sin imagen de perfil
Val: 107
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sql; no recibo las repuestas en Tablas

Publicado por Joseba (56 intervenciones) el 22/05/2019 17:52:20
aupa , tengo el problema que cuando relleno el Form , lo manda al data-bank pero no a las tablas(las tengo porque es mas comodo para mirar , ademas le quiero añadir un "delete" , por cada comentario , mas o menos como este Screenshot RH0MpGQ .

Tengo tres archivos ;

contact.php , donde quiero que el form salga , el code esta aqui https://codepen.io/mezb/pen/WBEEEQ, con el css , como codepen , no tiene para poner php code , lo he puesto en otro sitio .

Luego tengo dos archivos para los Comentarios ,

classprove.php . donde esta el Code para Administrar los comentarios , me lo han dado en un otro Forum..., https://codeshare.io/29BW3M

y el archivo donde quiero que salgan los comentarios en una tabla , y es este,


kommenter_verwalter.php
,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?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();


Tengo dos problemas;

1- Cuando en contact.php relleno el Form , lo manda al date-bank y vuelve a este archivo con lo rellenado xQKzA9B , pero no al archivo kommenter_verwalter.php , donde quiero que tambien salgan con las tabalas .



2- con este code
1
sudo tail -n0 -f /var/log/apache2/error.log /var/log/mysql/error.log

me dice,
[i]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{/i]


esto Fatal error: execute failed: SQLSTATE=00000, Error Info=Array\n(\n [0] => 00000\n , dice mas o menos que el code esta bien , pero no ha podido mandarlo al data-bank , pero yo veo con phpmyadmin , que lo ha mandado....

La linea 121 , que esta en el archivo classprove.php https://codeshare.io/29BW3M, dice esto ,

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

M epuede ayudar algien con este problema , gracias !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sql; no recibo las repuestas en Tablas

Publicado por Mauro (1037 intervenciones) el 22/05/2019 18:58:12
Probá esto apenas iniciaste la conexión:

1
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 107
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sql; no recibo las repuestas en Tablas

Publicado por Joseba (56 intervenciones) el 22/05/2019 19:14:43
Gracias por tu respuesta ! , en que funcion devo poner esto ?

como pienso que dices que lo cambie en el archivo classprove.php , linea 121 , por el tuyo ....

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

me dice,

PHP Parse error: syntax error, unexpected '$dbh' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in /var/www/html/kommenter_verwalter.php on line 74, referer: http://localhost/kommenter_verwalter.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 107
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sql; no recibo las repuestas en Tablas

Publicado por Joseba (56 intervenciones) el 22/05/2019 19:50:26
Una pregunta... , no seria mas facil llamar al data-bank desde el archivo kommenter_verwalter.php , sin pasar por el archivo classprove.php.....


en esta direccion....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?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 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 printTabelle() {
 
         if ($connection) {
             echo '     <table>';
                                          <td>'id'</td>
                                             <td>'name'</td>
                                             <td>'email'</td>
                                              <td>'message'</td>
                                                <td>'datetime'</td>
                                                   <td>'ip'</td>
                                                   <td>'delete'</td>
 
 
          foreach (  $connectionas 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>';
 
         } 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 ->writeCommentToDatabas():
$News -> printTabelle();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 107
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sql; no recibo las repuestas en Tablas

Publicado por Joseba (56 intervenciones) el 23/05/2019 15:28:47
He cambiado mi Code en kommenter_verwalter.php ,como cada vez que intentaba conectarlo con classprove.php , solo recibia errors , ahora intento sin conectarme a este archvo ....

El Code de kommenter_verwalter.php ,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?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();
 
 
?>

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

no me da mas errores , peo tampoco me da nada....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sql; no recibo las repuestas en Tablas

Publicado por Mauro (1037 intervenciones) el 23/05/2019 16:57:05
Muchas preguntas, je :)

Respecto de dónde poner lo que te decía, es en el archivo donde se realiza la conexión a la base de datos... parece que estás usando algún tipo de framework no estándar... es un poco difícil saber exactamente cuál es.

Recientemente hice este screencast donde podés ver un modo de trabajar con código "heredado".

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 107
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sql; no recibo las repuestas en Tablas

Publicado por Joseba (56 intervenciones) el 23/05/2019 18:10:43
algún tipo de framework no estándar

No , la pagina web la he hecho con el Layout Grid .

Si te refieres al Code que esta en classprove.php , me lo han dado en un Forum Aleman , el problema es que cuando me lo dieron , le dije que tambien queria un nuevo archivo donde me saldria los comentarios (name, email, message , datetime y ip) en una tabla , y en esto estamos...

yo con php llevo poco mas de tres meses...

Volviendo ami problema...

sigo intentandolo con mi Code .., el Problema es como he hecho la conecsion... como me dice ,

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

PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function ClassProveContakt2::tabelle(), 0 passed in /var/www/html/kommenter_verwalter.php on line 115 and exactly 1 expected in /var/www/html/kommenter_verwalter.php:70\nStack trace:\n#0 /var/www/html/kommenter_verwalter.php(115): ClassProveContakt2->tabelle()\n#1 {main}\n thrown in /var/www/html/kommenter_verwalter.php on line 70, referer: http://localhost/kommenter_verwalter.php

En la linea 115 , tengo
1
$News -> tabelle();

como tengo el Code ahora en kommenter_verwalter.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?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 $datetime;
      private $ip;
      private $db;
      private $connection;
      private $id;
      private $sql;
      private $statement;
      private $success;
 
 
 
 
      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($db) {
         try {
               $sql = $this -> db;
 
               $connection = new PDO('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($sql)
       {
          $db = $this -> sql;
 
          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</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();
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar