liebewinter: Kommentar werden auf alles Webseite gezeigt

0 84

Kommentar werden auf alles Webseite gezeigt

liebewinter
  • meinung
  • php
  1. 0
    Raketenwissenschaftler
    1. 0
      liebewinter
      1. 1
        Raketenwissenschaftler
        1. 0
          liebewinter
        2. 0
          liebewinter
          1. 0
            Raketenwissenschaftler
            1. 0
              liebewinter
            2. 0
              liebewinter
              1. 0
                liebewinter
                1. 0
                  Raketenprogrammplaner
                  1. 0
                    liebewinter
                    1. 0
                      Raketenprogrammplaner
                      1. 0
                        liebewinter
                        1. 0
                          Raketenprogrammplaner
                          1. 0
                            liebewinter
                            1. 0
                              Raketenprogrammplaner
                              1. 0
                                liebewinter
                                1. 0
                                  Raketenprogrammplaner
                                  1. 0
                                    liebewinter
                                    1. 0
                                      Raketenprogrammplaner
                                      1. 0
                                        liebewinter
                                        1. 0
                                          Raketenprogrammplaner
                                          1. 0
                                            liebewinter
                                            1. 0
                                              Raketenprogrammplaner
                                              1. 0
                                                liebewinter
                                                1. 0
                                                  Raketenprogrammplaner
                                                  1. 0
                                                    liebewinter
                                                    1. 0
                                                      Raketenprogrammplaner
                                                      1. 0
                                                        liebewinter
                                                        1. 0
                                                          Raketenprogrammplaner
                                                          1. 0
                                                            liebewinter
                                                            1. 0
                                                              Raketenprogrammplaner
                                                              1. 0
                                                                liebewinter
                                                                1. 2
                                                                  Raketenprogrammplaner
                                                                  1. 0
                                                                    liebewinter
                                                                    1. 0
                                                                      Raketenprogrammplaner
                                                                      1. 0
                                                                        liebewinter
                                                                        1. 0
                                                                          Raketenprogrammplaner
                                                                          1. 0
                                                                            liebewinter
                                                                            1. 0
                                                                              Raketenprogrammplaner
                                                                              1. 0
                                                                                liebewinter
                                                                        2. 0
                                                                          Raketenprogrammplaner
                                                                          1. 0
                                                                            liebewinter
                                                                            1. 0
                                                                              Raketenprogrammplaner
                                                                              1. 0
                                                                                liebewinter
                                                                                1. 0
                                                                                  Raketenprogrammplaner
                                                                            2. 0
                                                                              Raketenprogrammplaner
                                                                              1. 0
                                                                                liebewinter
                                                                                1. 0
                                                                                  Raketenprogrammplaner
                                                                                  1. 0
                                                                                    liebewinter
                                                                                    1. 0
                                                                                      Raketenprogrammplaner
                                                                                      1. 0
                                                                                        liebewinter
                                                                                      2. 0
                                                                                        liebewinter
                                                                                        1. 1
                                                                                          Matthias Apsel
                                                                                          1. 0
                                                                                            liebewinter
                                                                                        2. 0
                                                                                          Raketenprogrammplaner
                                                                                          1. 0
                                                                                            Der Martin
                                                                                            • meinung
                                                                                            • webserver
                                                                                            1. 0
                                                                                              Raketenprogrammplaner
                                                                                        3. 0
                                                                                          Raketenprogrammplaner
                                                                                          1. 0
                                                                                            liebewinter
                                                                                          2. 0
                                                                                            liebewinter
                                                                                            1. 0
                                                                                              Raketenumwegzeiger
                                                                                              1. 0
                                                                                                RaketenAufschriftkorrigierer
                                                                                                1. 0
                                                                                                  RaketenAufschriftkorrigierer
                                                                                            2. 2

                                                                                              Mist!

                                                                                              Raketenwutbürger
                                                                                              1. 2
                                                                                                Rolf B
                                                        2. 0
                                                          Rolf B
                                                          1. 0
                                                            Raketenprogrammplaner
                                                          2. 0
                                                            liebewinter
                                                            1. 0
                                                              Rolf B
                                                              1. 0
                                                                liebewinter
                                                                1. 0
                                                                  liebewinter
                                                                  1. 0
                                                                    Rolf B
                                                                    1. 0
                                                                      liebewinter
                                              2. 0
                                                liebewinter
                                  2. 0
                                    Rolf B
                                    1. 0
                                      Raketenpädagoge
                                      1. 0
                                        Rolf B
                                        1. 0
                                          Raketenpädagoge
                2. 0
                  Raketenprogrammplaner
                  1. 0
                    liebewinter
                    1. 0
                      Raketenprogrammplaner
            3. 0
              liebewinter

Hallo, erste entschuldigung für mein deutsch....

Ich habe zwei dateien die kommenter verwalten, beide have vor eineger monate auf diese Forum bekomme..😀 .

Mein Probleme, wenn jemand schreibt ein kommentar, er wird in allem Seite gezeigt, wenn ich möchte der wird nur gezeigt in der datei wo wurde kommentiert...

Die zwei Dateien Code:

Diese Datei benutze um die kommenter zu zeige,

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);



 





class comments {

      private $conn;
        
        
            private $dbHost = 'xxxxxxxx'; # Host der Datenbank
	        private $dbName = 'xxxxxxxxxxxx';      # Name der Datenbank
  	        private $dbUser = 'xxxxxxxxx';      # Name der User
            private $dbPass = 'xxxxxxxxxx';      # Passwort

  
       function __construct() {
           
           
     
        try{ 
          $this->conn = new \PDO("mysql:host=localhost;dbname=linuxuse_commentaren", $this->dbUser,  $this->dbPass); 
          }
          catch(PDOException $e)
          {
            echo "Connection failed: " . $e->getMessage();
           }  

         }
        
               
      
      
     

       function deleteComment($id){
		 $sql = "DELETE FROM commentar WHERE id=?";

		
         $statement= $this->conn->prepare($sql);
		 $statement -> bindParam('i', $id);
		 $statement->execute(array($id));
	   }



               

       
        function printAdminTable() {
             

        $sql = "SELECT id, name, email, message, datetime, ip FROM commentar ORDER BY datetime DESC";
         
		$statement= $this->conn->prepare($sql);
        
		$statement->execute();
		
		$result = $statement-> fetchAll();
     		
             
         if ( $result ) {
		       	echo "
			<form action=\"kommentaren.php\" method=\"POST\">\n
			<table id='user' class='table table-bordered' border= '1px solid';>
		            <tr>
		             <th>ID</th>
		              <th>Name</th>
		              <th>E-mail</th>
		              <th>Message</th>
		              <th>Datetime</th>
		              <th>IP</th>
		               <th>Delete</th>
		              </tr>";
               

			foreach($result 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']}">Delete</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>';
		 }            
      	}
	
    


    function __destruct(){
		$this->conn = null;	
	}
      
}      



$News = new comments();

if (isset($_POST['delete'])){
$News -> deleteComment($_POST['delete']);
}

$News -> printAdminTable();

Diese verwalte der datenbank,

<?php


class ClassProveContakt3  {

	private $dbHost = 'xxxxxxxxxxxx'; # Host der Datenbank
	private $dbName = 'xxxxxxxxx';      # Name der Datenbank
	private $dbUser = 'xxxxxxxxx';      # Name der User
	private $dbPass = 'xxxxxxxxxxxxx';      # Passwort

	private $Name;
	private $Email; 
    private $Message;
	private $PostOK;
	private $DateTime;
	private $items;
	private $ip;
	private $dbh;
    private $ok;

	function __construct() {

		 $this -> ip = $_SERVER['REMOTE_ADDR'];
		 $this -> DateTime = date('m/d/Y h:i:s a');  
		 $this -> items = ['Name', 'Email', 'Message']; 
		 $flag = true;
      
        if(isset($_POST['Name']) || isset($_POST['Email']) || isset($_POST['Message'])) {
         
           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 ); 
       
	}

    public 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" class="post_color">
	<label for="name"><b>Name * </b></label>
	<input type="text" id="name" name="Name" value="<?=@htmlentities( $_POST['Name'] );?>"><br><br>
	<label for="email"><b>E-mail * </b></label>
	<input type="email" id="email" name="Email" value="<?=@htmlentities( $_POST['Email'] );?>"><br>
	<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(isset($_POST['Name']) || isset($_POST['Email']) || isset($_POST['Message'])) {	
		if ( $this -> PostOK ) {
			$this -> writeCommentToDatabase();
		} else {
			echo '<div class="msg">*** Please enter all required fields ***</div><br><br>';  
		}
	 }
	     
	} 

	function writeCommentToDatabase() {
	// Establish connection with MYSQL Server
	
		if ( ! $this -> dbh ) {
			$this -> getConnection();
		}
           
		//Prepare Query of SQL
		$statement = $this -> dbh -> prepare("INSERT INTO commentar(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;
		}
    }    

    function getMessages()
    {
		if ( ! $this -> dbh ) {
			$this -> getConnection();
		}

        $sql = "SELECT id, name, email, message, datetime FROM commentar 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) {
?>

   
   <p><strong>From: </strong> <?=htmlspecialchars( $message['name'] ) ?>  <strong>at: </strong> <?=htmlspecialchars( $message['datetime'] ); ?></p>
   <p><?=htmlspecialchars( $message['message'] ); ?></p><hr>
  

<?php
		}    
    }
}

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

$Newobject -> ShowForm();
$Newobject -> getMessages();


ich verbinde meine dateien mit dem verwaltet datei mit,

<?php
    
    
   include '/home/xxxxxxxx/xxxx/xxxxx.php';

?> 

Kann Bitte jemand mir hilfe mit diesem probleme, Danke!

akzeptierte Antworten

  1. $statement -> bindValue( ':name' …
    $statement -> bindValue( ':email'…
    $statement -> bindValue( ':message' …
    $statement -> bindValue( ':date' …
    $statement -> bindValue( ':ip' …
    

    Offensichtlich speicherst Du nicht, zu welchen Artikel oder zu welcher Seite der Kommentar gehört.

    Daraus folgt dann:

    SELECT
    id,
    name,
    email,
    message,
    datetime
    FROM commentar ORDER BY datetime DESC
    

    Darin fehlt eine WHERE-Clausel mit welcher bestimmte Kommentare ausgewählt werden. Das könnte auch nicht funktionieren, so lange Deine Datentabelle keine Informationen speichert, zu welchem Artikel oder zu welcher Seite der Kommentar gehört.

    1. Viele dannke für deinen antwort!

      Was würdest du mir empfehlt um diese Probleme zu lösen ?

      1. Was würdest du mir empfehlt um diese Probleme zu lösen ?

        Eigentlich ist das ganz klar. Du musst die Skripte ergänzen:

        1. Deine Datentabelle braucht eine weitere Spalte für die Seite.
        2. Beim Anlegen des Kommentars muss die Information, für welche Seite dieser Kommentar bestimmt ist, mit übermittelt werden.
        3. Beim Abfragen sollte die Seite in einer WHERE-Klausel berücksichtigt werden.
        1. Viel dank für deinen empfehlungen!

          Ich habe wenig erfahrungen mit datenbank, aber werde es versuche. jetzt installiere a datenbank auf meinen rechner ich versuche folge wie du gesagst hast...

          ich wünsche dir eine schöne Tag !

        2. Deine Datentabelle braucht eine weitere Spalte für die Seite.

          ich habe das gemacht, erste mache mein variable, private $site; dann baut eine weitere Spalte, && $statement -> bindValue( ':site', $this -> site, PDO::PARAM_STR )

          Beim Anlegen des Kommentars muss die Information, für welche Seite dieser Kommentar bestimmt ist, mit übermittelt werden.

          ich habe probleme die anderen Schritte weiter folgenn...

          Kannst du Bitte beschreibe wie ich dieser Schitte mache soll ?

          1. Deine Datentabelle braucht eine Spalte 'site' und bei der Konstruktion der Abfrage sollte etwas wie

            $sql = '
            SELECT
                id,
                name,
                email,
                message,
                datetime
            FROM commentar 
            WHERE site = :site
            ORDER BY datetime DESC';
            
            $sth = $this->dbh->prepare( $sql,
               array(
                 PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY
               )
            );
            $sth->execute(
                array(
                  ':site' => $site
                )
            );
            $result = $sth->fetchAll();
            

            stehen. Das wird wahrscheinlich nicht auf Anhieb funktionieren, aber ich will hier nicht Dein ganzes Zeug nachbauen um es für Dich zu testen. Ich will Dir nur den Weg zeigen.

            Vergesse nicht, die Spalte 'site' in der Datenbank mit einem Index zu versehen und achte auf den richtigen Datenyp (string, integer, float) ggf. die Länge.

            1. Viel Danke!

              Versuche jetzt mache wie du sagst...

            2. Hier wie habe auf dem datenbank in Adminer, Wie der tabelle in adminer aussiehst

              mit dem php code habe "einbisschen" mehr schwierigkeit...

              1. so ich habe "versuche" folge was du sagst...

                Auf der verwalte der datenbank Datei habe verendert nur der teil der du sagtest,

                function writeCommentToDatabase() {
                	// Establish connection with MYSQL Server
                	
                		if ( ! $this -> dbh ) {
                			$this -> getConnection();
                		}
                           
                		//Prepare Query of SQL
                		$statement = $this -> dbh -> prepare("INSERT INTO commentar(name, email, message, datetime, site, ip) VALUES (:name, :email, :message, :date, :site, :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( ':site',    $this -> site,         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;
                		}
                    }    
                
                    function getMessages()
                    {
                		if ( ! $this -> dbh ) {
                			$this -> getConnection();
                		}
                
                        $sql = "SELECT id, name, email, message, datetime FROM commentar WHERE site = :site ORDER BY datetime DESC";
                        $sth = $this->dbh->prepare( $sql, array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ));
                        $sth->execute( array(':site' => $site));
                        $result = $sth->fetchAll(PDO::FETCH_ASSOC );
                        if ( false === $result ) {
                            $this->reportPDOError( "fetchAll(ASSOC) failed", $sql );
                        }
                        foreach ($result as $message) {
                ?>
                
                

                Auf der Datei wo die Seite wird gezeigt(wo der Artikel stehe..), bekomme diese Warnung,

                Notice: Undefined variable: site in /var/www/html/classprove.php on line 153

                Der Zeile 153 habe das, $sth->execute( array(':site' => $site));.

                Ich weiß warum dieser warnung bekomme, mir es fehlt variable zu erklärt.. Wenn fülle der Kommentar und sendt ihn, bekomme diese warnung,

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

                ich habe versuche sie erkärt unten, wo verbinde meine dateien mit dem verwaltet datei,

                <?php
                    
                    
                   include '/var/www/html/classprove.php';
                   $site = "1";
                
                ?>  
                

                aber das es nicht funzioniert...

                Kannst du Bitte mir sage, wie ich kann beiden dateien verbinden ?

                1. <?php
                     include '/var/www/html/classprove.php';
                     $site = "1";
                  ?>
                  
                  • Stell dir vor, Du willst zum Bäcker und machst Dir einen Plan:
                  1. Hose, Hemd, Schuhe und Jacke anziehen.
                  2. Zum Bäcker gehen
                  3. Brötchen kaufen.
                  4. Nach Hause gehen.
                  5. Geld einstecken.
                  6. Frühstücken.

                  Was passiert beim Bäcker?

                  error: No Money at Plan A, Point 3.
                  

                  Ein Programm hält sich GENAU an die vorgesehene Reihenfolge. Was musst Du also ändern?

                  1. Danke für deine Untersturtz!

                    error: No Money at Plan A, Point 3.

                    Geld abholen....

                    als ich $site = "1"; geschrieben habe, habe bemerke das sie keine Sinn..😳

                    Jetz versuche schicken mein Variable zum der Datei mit PDO.

                    
                    $site = new ClassProveContakt3();
                    
                    
                    1. Jetz versuche schicken mein Variable zum der Datei mit PDO.

                      
                      $site = new ClassProveContakt3();
                      
                      

                      Nein! Das kann so nichts werden.

                      Was soll denn eigentlich in $site stehen? Hast überhaupt einen Plan für Dein Vorgehen?

                      1. Wie ich denke....

                        Weil die variable $site wird in der Php Datei gerufen, ich muss sie Erste Erklären in alle dateien wo mein kommentare Fenster gibt , um der Php Datei zu wiessen wo sie kommt...

                        Beispiel;

                        $site ="1"; auf anderen datein $site ="2";, $site ="3";....

                        dann schickt der Variable $site von diesen dateien nach der Php Datei .

                        Du meinst das brauche ich nicht mache ?

                        Nur wenn erklärt ein mal auf der Php Datei, Beispiel, mit private $site;, ist genug ?

                        1. Du hast eine Webseite. Wie wird denn diese Webseite aufgerufen? Da steht doch die Seite in der URL. Oder?

                          1. Du hast eine Webseite. Wie wird denn diese Webseite aufgerufen? Da steht doch die Seite in der URL. Oder?

                            Ja..., du meinst das ich soll benutze etwas wie $site = curl_init(); oder $site = file_get_content()?

                            1. Nein. Was steht in der Adresszeile des Browsers, wenn Du die Seite abrufst?

                              1. Was steht in der Adresszeile des Browsers, wenn Du die Seite abrufst?

                                der Url....

                                1. der Url.…

                                  Ah!

                                  Und von der URL brauchst Du in $site und in der Datenbank genau den Teil, der genügt, um Seite genau von anderen zu unterscheiden.

                                  Und wo steht die URL noch?

                                  Tipp: Schau Dir $_SERVER an.

                                  1. Auf dem function __construct()...

                                    Wenn ich sie erkärt auf der Variable, ip,

                                    $this -> ip = $_SERVER['REMOTE_ADDR'];
                                    
                                    1. Nein. $_SERVER['REMOTE_ADDR'] ist es nicht. Schau auf die URL und sieh Dir mit

                                      <pre>
                                      <?=htmlspecialchars( var_export( $_SERVER, true ) );?>
                                      </pre>
                                      

                                      die ganze Variable an.

                                      1. ich habe gesucht nach

                                        <pre>
                                        <?=htmlspecialchars( var_export( $_SERVER, true ) );?>
                                        </pre>
                                        

                                        aber habe nicht gefunde....

                                        ich habe nach var_exportgesucht, ich verstehe die beduetung, aber was ich nicht weiß wo der Code ligen soll...

                                        Ich denke das ich habe dich nicht gut Verstande was meins mit diesen code....

                                        Kannst du Bitte sage wo soll ich diese code ansehen?

                                        1. Ich denke das ich habe dich nicht gut Verstande was meins mit diesen code....

                                          Kannst du Bitte sage wo soll ich diese code ansehen?

                                          Du kannst diesen Code temporär dort einfügen, wo $site vermisst wird.

                                          <pre>
                                          <?=htmlspecialchars( var_export( $_SERVER, true ) );?>
                                          </pre>
                                          

                                          zeigt Dir, womit Du $site füllen kannst.

                                          1. Ich habe dein code auf der seite wo stehe der Artikel, bekomme dieser Infos;

                                            array (
                                              'HTTP_HOST' => 'localhost',
                                              'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0',
                                              'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                                              'HTTP_ACCEPT_LANGUAGE' => 'de,en-US;q=0.7,en;q=0.3',
                                              'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
                                              'HTTP_REFERER' => 'http://localhost/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php',
                                              'CONTENT_TYPE' => 'application/x-www-form-urlencoded',
                                              'CONTENT_LENGTH' => '79',
                                              'HTTP_CONNECTION' => 'keep-alive',
                                              'HTTP_COOKIE' => '_ga=GA1.1.880100454.1580481047; _gid=GA1.1.521233300.1580481048',
                                              'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
                                              'HTTP_CACHE_CONTROL' => 'max-age=0',
                                              'PATH' => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
                                              'SERVER_SIGNATURE' => '<address>Apache/2.4.38 (Debian) Server at localhost Port 80</address>
                                            ',
                                              'SERVER_SOFTWARE' => 'Apache/2.4.38 (Debian)',
                                              'SERVER_NAME' => 'localhost',
                                              'SERVER_ADDR' => '::1',
                                              'SERVER_PORT' => '80',
                                              'REMOTE_ADDR' => '::1',
                                              'DOCUMENT_ROOT' => '/var/www/html',
                                              'REQUEST_SCHEME' => 'http',
                                              'CONTEXT_PREFIX' => '',
                                              'CONTEXT_DOCUMENT_ROOT' => '/var/www/html',
                                              'SERVER_ADMIN' => 'webmaster@localhost',
                                              'SCRIPT_FILENAME' => '/var/www/html/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php',
                                              'REMOTE_PORT' => '32948',
                                              'GATEWAY_INTERFACE' => 'CGI/1.1',
                                              'SERVER_PROTOCOL' => 'HTTP/1.1',
                                              'REQUEST_METHOD' => 'POST',
                                              'QUERY_STRING' => '',
                                              'REQUEST_URI' => '/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php',
                                              'SCRIPT_NAME' => '/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php',
                                              'PHP_SELF' => '/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php',
                                              'REQUEST_TIME_FLOAT' => 1580831791.398,
                                              'REQUEST_TIME' => 1580831791,
                                            
                                            1. Aha. In

                                              Auf welche Idee bringt Dich:

                                              'REQUEST_URI' => '/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php'
                                              

                                              Kann es sein, dass '/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php' sehr gut geeignet ist, um zu erkennen, dass ein oder mehrere Kommentare zu genau dieser Seite gehören?

                                              1. Ich habe alles was auf mein Server(der server wo mein Webseite ist...) auf mein Rechner Herunterladen, Ich Erste mache alle neuen (Neu Artikel, Daten bank test,...) auf mein Rechner und wenn alles fertig ist, bring sie auf mein Server...

                                                1. Danach habe ich nicht gefragt. Beantworte meine Frage.

                                                  (Ich bin aber erst mal weg. Ich muss darf morgen gegen fürstliche Bezahlung etwas ganz ähnliches machen. Und zu diesem Zweck verreise ich jetzt.)

                                                  1. keine probleme... weisst du wann du nochmal mir hilfe kannst ?

                                                    1. Hier noch einmal meine Frage:

                                                      Kann es sein, dass '/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php' (der Wert aus $_SERVER['REQUEST_URI']) sehr gut geeignet ist, um zu erkennen, dass ein oder mehrere Kommentare zu genau dieser Seite gehören?

                                                      Das ist eine Frage, die mit „Ja“ oder „Nein“ beantwortet werden kann und Du sollst selbst nachdenken.

                                                      Falls Du nach einem Anhaltspunkt suchst:

                                                      Was steht beim Abruf einer anderen Seite in $_SERVER['REQUEST_URI']?

                                                      Teste das.

                                                      1. sehr gut geeignet ist, um zu erkennen, dass ein oder mehrere Kommentare zu genau dieser Seite gehören?

                                                        was sagt php Manual über $_SERVER['REQUEST_URI'].

                                                        Der URI, der angegeben wurde, um auf die aktuelle Seite zuzugreifen, beispielsweise '/index.html'.

                                                        wie verstande habe , ich denke Nein.

                                                        Was steht beim Abruf einer anderen Seite in $_SERVER['REQUEST_URI']?

                                                        Der Fehler der ich bekomme...

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

                                                        ich habe nach diese fehler gesucht, und wie habe verstande, Mysql giver der error.

                                                        jetzt ich muss gehe, ich habe meine Fahrrad kaput und muss gehe zu Werkstatt...

                                                        1. Kann es sein, dass '/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php' (der Wert aus $_SERVER['REQUEST_URI']) sehr gut geeignet ist, um zu erkennen, dass ein oder mehrere Kommentare zu genau dieser Seite gehören?

                                                          was sagt php Manual über $_SERVER['REQUEST_URI'].

                                                          Der URI, der angegeben wurde, um auf die aktuelle Seite zuzugreifen, beispielsweise '/index.html'.

                                                          wie verstande habe , ich denke Nein.

                                                          Soso. An welchem Merkmal erkennt denn dann der Webserver, welche Seite er ausliefern soll?

                                                          Denke selbst nach.

                                                          1. ich habe heute deine Frage gesehen..

                                                            Soso. An welchem Merkmal erkennt denn dann der Webserver, welche Seite er ausliefern soll?

                                                            Auf eine angeforderte URL ?

                                                            1. Soso. An welchem Merkmal erkennt denn dann der Webserver, welche Seite er ausliefern soll?

                                                              Auf eine angeforderte URL ?

                                                              Aha. Warum nimmst Du dann nicht einfach $_SERVER['REQUEST_URI'] als Unterscheidungsmerkmal - an Stelle von $site? Vorteil: $_SERVER ist global gültig und Du musst es also in Funktions- und Methodenaufrufen nicht angeben.

                                                              Wenn Du damit fertig bist brauchst Du nur noch eine Idee, wie Du diese Information beim Eintragen des Kommentars überträgst:

                                                              • $_SERVER['HTTP_REFERER'] ist kein Kandidat, weil manchche Browser den nicht senden.
                                                              • Cookies sind verpönt.
                                                              • Wie wäre es also mit einem versteckten (nicht sichtbaren) Formularfeld?
                                                              1. ich bin nicht fertig ich suche noch für eine lösung für meinen probleme..

                                                                Heute mache etwas anderes, ich bin seit eine Woche mit diesen probleme, ich will schreibe ein Artikel für meine Webseite.

                                                                1. ich bin nicht fertig ich suche noch für eine lösung für meinen probleme..

                                                                  Damit findest Du nur noch mehr Köche - und „viele Köche verderben den Brei“!

                                                                  Es macht überhaupt keinen Sinn, die Ideen von mir und Rolf B zu mixen - weil wir beide eine unterschiedliche Lösung verfolgen.

                                                                  On line 35 have $this->site->$site;
                                                                  

                                                                  Das ist schlicht ein Syntaxfehler. Das würde von einem Objekt ($this->site) eine Eigenschaft $site zurückgeben wollen.

                                                                  Du willst aber, dass die Eigenschaft 'site' des Objekts $this den Wert von $site erhält.

                                                                  Und genau genommen willst Du:

                                                                  $this->site = $_SERVER['REQUEST_URI'];
                                                                  

                                                                  also willst Du:

                                                                  public function __construct() {$this->site = $_SERVER['REQUEST_URI'];}
                                                                  

                                                                  Aber das brauchst Du auch nicht! Du kannst $_SERVER['REQUEST_URI'] direkt verwenden:

                                                                  $sth -> execute( array(':site' => $_SERVER['REQUEST_URI'] ) );
                                                                  

                                                                  Wenn Du dazu bereit wärst, Dir zu überlegen, was in Deinen Programmen stattfindet, und wenn Du bereit wärst, die Programmiersprache PHP zu lernen, dann wärst Du längst fertig. Statt dessen versuchst Du fertigen Code zu erbetteln und mixt Dir daraus Programme. Das Ergebnis einer solchen Handlungsweise ist schlecht, oft gefährlich - und Du kannst das nicht erkennen.

                                                                  1. Viel danke für deinen Untersturtz!

                                                                    Auf der Datei kommentar.php, ich verbinde diese datei mit code.php mit,

                                                                    include_once '/var/www/html/code.php';
                                                                    
                                                                    

                                                                    Wenn bevor benutze nur include, hier habe gelese der Unterschied...

                                                                    Auf der Datei code.php habe gemacht wie du mir sagst,

                                                                    $sql = "SELECT * FROM commentar WHERE site = :site ORDER BY datetime DESC";
                                                                    $sth = $this->dbh->prepare( $sql, array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ));
                                                                    $sth -> execute( array(':site' => $_SERVER['REQUEST_URI'] ) );
                                                                    

                                                                    jetzt bekomme keine Fehler, aber wenn der kommentar fühlen, er wird nicht gespeichert....

                                                                    1. jetzt bekomme keine Fehler

                                                                      Das Du keine Fehler siehst, bedeutet nur, dass Du Dir die Fehler nicht anzeigen lässt.

                                                                      Hast Du in der Datei

                                                                      • /var/log/apache2/error.log und
                                                                      • /var/log/mysql/error.log

                                                                      nachgeschaut?

                                                                      Öffne ein Terminal, gib

                                                                      sudo tail -f -n 0 /var/log/apache2/error.log /var/log/mysql/error.log
                                                                      

                                                                      ein. Das wird zunächst nichts anzeigen. Lass das Terminal offen(!) und versuche den Eintrag erneut.

                                                                      • Welche Meldung erscheint?

                                                                      aber wenn der kommentar fühlen, er wird nicht gespeichert…

                                                                      Die Fehlermeldung wird Dir (oder mir) sagen, was falsch ist.

                                                                      1. ich nach den dateien /var/log/apache2/error.log und /var/log/mysq/error.log gesucht und habe keine Fehler gefunde...

                                                                        Wenn schreibe auf der Terminal

                                                                        sudo tail -f -n 0 /var/log/apache2/error.log /var/log/mysql/error.log
                                                                        

                                                                        ich Eintrag erneut ein kommentar aber der Terminal zeigt nichts.. Screenshot vom Terminal,

                                                                        was der terminal zeigt

                                                                        auch wenn mehrere mal kommentaren geschriebe habe...

                                                                        auch habe mein Apache2 und mysql update, sudo systemctl restart mysql und sudo systemctl restart mysql

                                                                        1. Hast Du ERST

                                                                          sudo tail -f -n 0 /var/log/apache2/error.log /var/log/mysql/error.log
                                                                          

                                                                          ausgeführt und das Terminal offen gelassen und DANACH den Eintrag versucht?

                                                                          Was zeigt

                                                                          SELECT COUNT(`id`) as `anzahl` FROM `commentar`;
                                                                          

                                                                          vor und nach dem Eintrag eines Kommentars direkt in der Datenbank an?

                                                                          Was zeigt

                                                                          SELECT `id`, `site` FROM `commentar` ORDER BY `id` DESC LIMIT 1\G 
                                                                          

                                                                          direkt in der Datenbank an?

                                                                          Was zeigt

                                                                          describe `commentar`\G;
                                                                          

                                                                          direkt in der Datenbank an?

                                                                          1. Hast Du ERST ausgeführt und das Terminal offen gelassen und DANACH den Eintrag versucht?

                                                                            Ja, erste führt der Terminal und dann schreibe auf den kommentar...

                                                                            Was zeigt SELECT id, site FROM commentar ORDER BY id DESC LIMIT 1\G direkt in der Datenbank an?

                                                                            Auf der Terminal gibt es keine verenderung...

                                                                            Ganz Unten habe,

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

                                                                            und wenn keine Wert gebe auf $Newobject = new ClassProveContakt3("1"); zum $Newobject = new ClassProveContakt3(); bekome auf der terminal diese Fehler,

                                                                            ==> /var/log/apache2/error.log <==

                                                                            [Sun Feb 09 13:20:52.803691 2020] [php7:error] [pid 5043] [client ::1:51742] PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function ClassProveContakt3::__construct(), 0 passed in /var/www/html/classprove.php on line 184 and exactly 1 expected in /var/www/html/classprove.php:32\nStack trace:\n#0 /var/www/html/classprove.php(184): ClassProveContakt3->__construct()\n#1 /var/www/html/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php(382): include('/var/www/html/c...')\n#2 {main}\n thrown in /var/www/html/classprove.php on line 32, referer: http://localhost/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php

                                                                            1. $Newobject = new ClassProveContakt3("1");
                                                                              

                                                                              Wo kommt die "1" her? Wozu brauchst Du diese? Das ist nicht nur überflüssig, sondern falsch.

                                                                              Wenn in der Klassendefinition

                                                                              public function __construct() {
                                                                              

                                                                              steht, also die Liste der Argument der Methode (funktion) __construct leer ist, dann kannst Du beim Erzeugen des Objekts auch nichts übergeben.

                                                                              1. Wo kommt die "1" her? Wozu brauchst Du diese? Das ist nicht nur überflüssig, sondern falsch.

                                                                                als Gestern habe alles versuche um eine losung zu finde...

                                                                                Jetzt habe ohne ihn...

                                                                        2. auch habe mein Apache2 und mysql update, sudo systemctl restart mysql und sudo systemctl restart mysql

                                                                          Das war im besten Fall nutzlos.

                                                                          1. Mit SELECT COUNT(id) as anzahlFROMcommentar;

                                                                            Bekomme,

                                                                            From: Notice: Undefined index: name in /var/www/html/classprove.php on line 175 at: Notice: Undefined index: datetime in /var/www/html/classprove.php on line > 175

                                                                            Notice: Undefined index: message in /var/www/html/classprove.php on line 176

                                                                            Wie mein datenbank habe,

                                                                            Zeigt wie mein datenbank habe

                                                                            1. Meine Frage war:

                                                                              Was zeigt

                                                                              SELECT COUNT(`id`) as `anzahl` FROM `commentar`;
                                                                              

                                                                              vor und nach dem Eintrag eines Kommentars direkt in der Datenbank an?

                                                                              Nochmal:

                                                                              "direkt in der Datenbank" Das heisst: Nicht im PHP-Skript!

                                                                              • Öffne ein Terminal
                                                                              • gib
                                                                              mysql -p -u DEIN_USERNAME DEINE_DATENBANK
                                                                              

                                                                              ein und dann den Befehl.

                                                                              1. sie zeigt,

                                                                                was mysql zeigt

                                                                                1. Alles klar. Das war inzwischen nutzlos, weil ich den Fehler gefunden habe.

                                                                                  Hier geht es weiter.

                                                                            2. Zeigt wie mein datenbank habe

                                                                              Bitte denke darüber nach, was Du tust:

                                                                              Wie willst Du in eine Spalte mit dem Name 'site' einen Text (aus: $_SERVER['REQUEST_URI']) eintragen, wenn Du diese Spalte nicht hast?

                                                                              Und, wo kommt denn jetzt plötzlich die page_id her? Was hattest Du für diese Spalte geplant?

                                                                              1. Und, wo kommt denn jetzt plötzlich die page_id her? Was hattest Du für diese Spalte geplant?

                                                                                Entschuldigung habe ein Alte Bild vom datenbank, jetzt ich habe diese,

                                                                                wie der datenbank aussiehst

                                                                                1. wie der datenbank aussiehst

                                                                                  Da steht:

                                                                                  site - Format: Integer, also ganze Zahl.

                                                                                  Das muss aber ein String sein. Also text.

                                                                                  Es gibt folgende Text-Typen in mysql:

                                                                                  • TINYTEXT (255 Bytes)
                                                                                  • TEXT (64 Kilobytes)
                                                                                  • MEDIUMTEXT (16 Megabytes)
                                                                                  • LONGTEXT (4 Gigabytes)

                                                                                  Denke über Folgendes nach:

                                                                                  • Welcher Typ ist der Richtige?
                                                                                  1. Der Großer...

                                                                                    LONGTEXT (4 Gigabytes)

                                                                                    was bekomme in Mysql Terminal,

                                                                                    mit SELECT COUNT(id) as anzahlFROMcommentar`;

                                                                                    was bekomme mit diesem kommando

                                                                                    mit SELECT id, siteFROMcommentarORDER BYid DESC LIMIT 1\G

                                                                                    was bekomme mit diesem kommando

                                                                                    1. Es gibt folgende Text-Typen in mysql:

                                                                                      • TINYTEXT (255 Bytes)
                                                                                      • TEXT (64 Kilobytes)
                                                                                      • MEDIUMTEXT (16 Megabytes)
                                                                                      • LONGTEXT (4 Gigabytes)

                                                                                      Denke über Folgendes nach:

                                                                                      • Welcher Typ ist der Richtige?

                                                                                      Der Großer...

                                                                                      LONGTEXT (4 Gigabytes)

                                                                                      Was macht Dich so sicher? Da soll die aufgerufene URL (ohne Server und Protokoll) hinein. Wie lang kann die wohl sein?

                                                                                      1. Was macht Dich so sicher?

                                                                                        Villeich zu viele...ich habe mich für LONGTEXT (4 Gigabytes) entschieden weil mit $_SERVER['REQUEST_URI'] ) ich rufe die Webseite und normalerweise eine Webseite hat 1MB Groß.

                                                                                        Da soll die aufgerufene URL (ohne Server und Protokoll) hinein. Wie lang kann die wohl sein?

                                                                                        Das war mein Fehler, nicht see der Unterschied zwischen der Website und URL, dann sollte TINYTEXT (255 Bytes) .

                                                                                      2. Geschafft! 😀

                                                                                        Gestern habe auch mit Drei E-mail, andere Menschen gefragt..., Heute eine von ihnen hat mich angewortet...

                                                                                        Er hat nur Zwei Zeilen verendert, 163 und 183.

                                                                                        Auf dem Zeile 163 hatte nicht jetzt, der Code der ich gepostet hier....

                                                                                         $sth -> execute( array(':site' => $site ));
                                                                                        

                                                                                        und er hat mich geschikt,

                                                                                        $sth -> execute( array(':site' => $this->site ));
                                                                                        

                                                                                        Auf dem Zeile 183 hatte,

                                                                                        $Newobject = new ClassProveContakt3();
                                                                                        

                                                                                        und er hat mich geschikt,

                                                                                        $Newobject = new ClassProveContakt3($_SERVER['REQUEST_URI']);
                                                                                        

                                                                                        So, die Losung war auf Beiden Zeile Geben der URL

                                                                                        Auf Zeile 163, wie du mir gegeben hast...

                                                                                        $sth -> execute( array(':site' => $_SERVER['REQUEST_URI'] ) );
                                                                                        

                                                                                        ...und auf Zeile 183, aber hier vergisst hast.. deshalb bekomme immer die Warnung, es fällt ein Parameter zu übergeben...

                                                                                        $Newobject = new ClassProveContakt3($_SERVER['REQUEST_URI']);
                                                                                        
                                                                                        

                                                                                        Jetzt bekomme jeden Kommentar in der Seite wo wurde gefragt....

                                                                                        Ich bedanke mich dir für deinen unterstützung und deine Geduld !!

                                                                                        Bitte nicht vergisst mir zu sage Welche text Große ich brauche für der datenbank....

                                                                                        Ich wünsche die eine schöööne Wochenende!

                                                                                        1. Hallo liebewinter,

                                                                                          Geschafft! 😀

                                                                                          Lernen funktioniert so nicht.

                                                                                          Bis demnächst
                                                                                          Matthias

                                                                                          --
                                                                                          Du kannst das Projekt SELFHTML unterstützen,
                                                                                          indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
                                                                                          1. hast du Recht, aber das wichtiger für mich war, eine Losung von meine Probleme die seit eine Woche suche... ich möchte morgen lerne warum diese Ergebnisse bekomme und auch wieder lesen was Raketenprogrammplaner und Rolf mir geschrieben haben....

                                                                                        2. Bitte nicht vergisst mir zu sage Welche text Große ich brauche für der datenbank....

                                                                                          Dann überlegen wir mal:

                                                                                          • Kann die URL größer sein als 255 Byte/Zeichen?

                                                                                          Ich würde sagen: "Unter Umständen „ja“". Du hast Überschriften bzw. die Titel als dateiname verwendet, dazu kommen ggf. noch Unterordne. Das können dirchaus mehr als 255 Zeichen werden. Also kommt tinytext für mich eher nicht in Betracht.

                                                                                          • Kann die URL größer sein als 64 Kilobyte?

                                                                                          Ich würde das ausschließen. Also passt text.

                                                                                          1. Hallo,

                                                                                            • Kann die URL größer sein als 255 Byte/Zeichen?

                                                                                            Ich würde sagen: "Unter Umständen „ja“".

                                                                                            ja, vor allem, wenn noch URL-Parameter dranhängen. Und das würde ich nicht pauschal ausschließen.

                                                                                            • Kann die URL größer sein als 64 Kilobyte?

                                                                                            Ich würde das ausschließen.

                                                                                            Ich auch. AFAIK hatte Apache einmal ein Limit von 8192 Zeichen für die Länge des Requests. Das wird zwar von keiner Spezifikation gestützt, kann aber aufgrund der Vormachtstellung des Apache-Webservers als de-facto-Standard gelten.

                                                                                            So long,
                                                                                             Martin

                                                                                            --
                                                                                            Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
                                                                                            1. Außerdem würde ich einen Index, aber nicht als FULLTEXT, sondern auf die ersten 100 Zeichen setzen. Ich denke, das reicht, ist fast zu viel.

                                                                                        3. $Newobject = new ClassProveContakt3($_SERVER['REQUEST_URI']);
                                                                                          

                                                                                          Das ist Unsinn. Es ist völlig sinnlos, globale Variablen in Funktions- oder Methodenaufrufen zu verwenden.

                                                                                          Offenbar wollte da jemand das Brett an der dünnsten Stelle bohren, statt es richtig zu machen.

                                                                                          1. Das ist Unsinn. Es ist völlig sinnlos, globale Variablen in Funktions- oder Methodenaufrufen zu verwenden.

                                                                                            wie würdest du gemacht?

                                                                                          2. ich folge wie hier wird gesagt;

                                                                                            $variable = $_SERVER['REQUEST_URI'];
                                                                                            
                                                                                            $Newobject = new ClassProveContakt3($variable);
                                                                                            $Newobject -> TestPostData();
                                                                                            
                                                                                            $Newobject -> ShowForm();
                                                                                            $Newobject -> getMessages();
                                                                                            

                                                                                            und funzioniert gut...

                                                                                            1. Du macht folgendes:

                                                                                              class ShittyClass {
                                                                                              
                                                                                                  #…
                                                                                                  public $site='';
                                                                                              
                                                                                                  function __construct( $site )
                                                                                                      $this->site = $site;
                                                                                                      #…
                                                                                                  }
                                                                                              
                                                                                                  function printTheShittySiteVar() {
                                                                                                     #… 
                                                                                                     echo $this->site;
                                                                                                  }
                                                                                              }  
                                                                                              
                                                                                              $object = new  ShittyClass( $_SERVER['REQUEST_URI'] );
                                                                                              $object->printTheShittySiteVar();
                                                                                              

                                                                                              Das geht einfacher:

                                                                                              class NotSoShittyClass {
                                                                                              
                                                                                                  function __construct( );        #…
                                                                                                  }
                                                                                              
                                                                                                  function printTheAllwaysPresentetRequestUri() {
                                                                                                     echo $this->$_SERVER['REQUEST_URI'];
                                                                                                  }
                                                                                              
                                                                                              }  
                                                                                              
                                                                                              $object = new  ShittyClass( $_SERVER['REQUEST_URI'] );
                                                                                              $object->printTheShittySiteVar();
                                                                                              

                                                                                              Es mag "funktionieren", aber was Du da machst ist wie wenn Du ca. 1Km zum Bäcker gehst, dort nach 2 Brötchen fragst und dann erst mal nach Hause gehst um den benötigten Betrag von 70 Cent zu holen und dann zurück um zu bezahlen und die Brötchen mitzunehmen - wobei Du allerdings schon beim ersten mal zwei Euro einstecken hattest.

                                                                                              Das Resultat ist: Du hast Brötchen. Du hast auch eine Ausgabe. Du meinst dazu, das „funktioniert“?

                                                                                              1. Bevor es jemanden auffällt:

                                                                                                class NotSoShittyClass {
                                                                                                
                                                                                                    function __construct( )      
                                                                                                    #…;
                                                                                                    }
                                                                                                
                                                                                                    function printTheAllwaysPresentetRequestUri() {
                                                                                                       echo $this->$_SERVER['REQUEST_URI'];
                                                                                                    }
                                                                                                
                                                                                                }  
                                                                                                
                                                                                                $object = new  NotSoShittyClass( $_SERVER['REQUEST_URI'] );
                                                                                                $object->printTheAllwaysPresentetRequestUri();
                                                                                                
                                                                                                1. Bevor es jemanden auffällt:

                                                                                                  class NotSoShittyClass {
                                                                                                  
                                                                                                      function __construct( )      
                                                                                                      #…;
                                                                                                      }
                                                                                                  
                                                                                                      function printTheAllwaysPresentetRequestUri() {
                                                                                                         echo $this->$_SERVER['REQUEST_URI'];
                                                                                                      }
                                                                                                  
                                                                                                  }  
                                                                                                  
                                                                                                  $object = new  NotSoShittyClass( $_SERVER['REQUEST_URI'] );
                                                                                                  $object->printTheAllwaysPresentetRequestUri();
                                                                                                  

                                                                                                  Man sollte eigentlich nicht im Zustand eines Wutanfalls versuchen Programmcode hinzuschreiben. Die vorletzte zeile muss natürlich

                                                                                                  $object = new  NotSoShittyClass();
                                                                                                  

                                                                                                  lauten.

                                                                                            2. und funzioniert gut...

                                                                                              • Ich hab Dir gesagt, es ist völlig sinnlos den Inhalt einer superglobalen Variable umherzukopieren.
                                                                                              • Ich hab Dir gesagt, dass es Mist ist, Codestückchen von verschiedenen Autoren zusammenzukopieren.

                                                                                              Du lernst NICHTS, wenn Du einfach so lange Quelltext, den Du nach Teilfragen in verschiedenen Foren bekommst, zusammenkopierst, bis das Resultat zufällig funktioniert.

                                                                                              Deine Vorgehensweise ist falsch und ich würde wirklich gern das S-Wort gebrauchen, damit auch Du es endlich verstehst.

                                                                                              Ich denke, Du hast keinerlei Vorstellung, was in dem zusammengebettelten Code überhaupt passiert. Und ich vermute sogar, dass Du das Zeug umherzeigst und behauptest, Du hättest es „programmiert“.

                                                                                              1. Hallo Raketenwutbürger,

                                                                                                Du lernst NICHTS

                                                                                                da ist ein S zuviel. Ich nehme an, dass die "Inhalte", die auf der Seite stehen und mit denen Leute auf die Seite gelockt werden sollen (um Werbeabrufe zu bekommen und damit Geld zu verdienen), ähnlich entstehen.

                                                                                                Liebewinter, finde deine Stärken und nutze die, um Geld zu verdienen. Das Bauen von Webseiten gehört nicht dazu. Du hast hier schon oft gefragt, aber dazugelernt hast Du nichts.

                                                                                                Rolf

                                                                                                --
                                                                                                sumpsi - posui - clusi
                                                        2. Hallo liebewinter,

                                                          die Fehlermeldung verstehe ich auch nicht so ganz - wenn es einen Execute-Fehler gibt, sollten errorCode() und errorInfo() mehr Informationen über den Fehler liefern.

                                                          Der Fehler kann aber auch aus dem bindValue kommen. Wenn es dort einen Fehler gibt, gibst Du ihn nur aus (echo) und das Programm macht weiter. Das ist nicht sinnvoll. Du solltest dort ebenfalls trigger_error benutzen.

                                                          Warum kann der bindValue einen Fehler erzeugen? Ich sehe bei Dir einerseits $this->site im bindValue Aufruf, andererseits sprichst Du immer wieder von der $site Variable. Das sind zwei verschiedene Dinge. Wenn Du etwas in $site speicherst, steht es nicht in $this->site. Und dann bindest Du einen Null-Wert, was möglicherweise einen Fehler liefert (ich müsste es ausprobieren, habe gerade aber kein PHP mit Datenbank zur Hand).

                                                          Vorschlag: Wenn Du eine Eigenschaft site am Objekt hast, dann kannst Du die auch benutzen.

                                                          Für die Site 1 zum Beispiel:

                                                          $object = new ClassProveContakt3();
                                                          $object->site = "1";
                                                          

                                                          Um das zu tun, muss die $site-Eigenschaft allerdings public sein, nicht private. Wenn es bei private $site bleiben soll, kannst du die Site auch dem Konstruktor als Parameter übergeben. Das geht so:

                                                          $object = new ClassProveContakt3("1");
                                                          
                                                          class ClassProveContakt3
                                                          {
                                                          ...
                                                             function __construct($site) {
                                                                $this->site = $site;
                                                                ...
                                                             }
                                                          }
                                                          

                                                          Es geht beides, du musst Dich für eine Möglichkeit entscheiden.

                                                          Welchen Wert Du für die Site verwendest, hängt dann davon ab, auf welcher Website von Dir du bist.

                                                          So, und jetzt bin ich wieder leise.

                                                          Rolf

                                                          --
                                                          sumpsi - posui - clusi
                                                          1. Das war jetzt mal nicht so gut, weil es den TO nur ablenkt (und zudem nicht besonders zielführend ist).

                                                            Ich will, dass er selbst nachdenkt. Die von mir angestrebte Lösung ist zudem sehr, sehr viel einfacher, geradezu stupid sogar.

                                                          2. Viel dank Rolf!

                                                            Gester habe deine ergenzung nicht gesehen.....

                                                            die Fehlermeldung verstehe ich auch nicht so ganz - wenn es einen Execute-Fehler gibt, sollten errorCode() und errorInfo() mehr Informationen über den Fehler liefern.

                                                            Ich hatte ein Feher bei

                                                            $statement = $this -> dbh -> prepare("INSERT INTO commentar(name, email, message, datetime,  site, ip) VALUES (:name, :email, :message, : date, :page_id, :ip)");
                                                            

                                                            das ferheler war auf : date wenn soll :date


                                                            Mit deine Code:

                                                            $object = new ClassProveContakt3();

                                                            $object->site = "1";

                                                            Ich habe geschrieben auf der Datei wo der kommentar wird gezeigt,

                                                            <?php
                                                              
                                                                include '/var/www/html/classprove.php';
                                                                
                                                               $object = new ClassProveContakt3();
                                                               $object->site = "1";
                                                            
                                                             ?> 
                                                            

                                                            Auf der datei wo habe der php Code,

                                                            class ClassProveContakt3 () {
                                                            
                                                            	private $dbHost = 'localhost'; # Host der Datenbank
                                                            	private $dbName = 'linuxuse_commentaren';      # Name der Datenbank
                                                            	private $dbUser = 'root';      # Name der User
                                                            	private $dbPass = 'me';      # Passwort
                                                            
                                                            	private $Name;
                                                            	private $Email; 
                                                                private $Message;
                                                            	private $PostOK;
                                                            	private $DateTime;
                                                            	private $items;
                                                            	private $ip;
                                                            	private $dbh;
                                                                private $ok;
                                                                private $site;
                                                                $object = new ClassProveContakt3("1");
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            	public function __construct($site) {
                                                                     
                                                                     
                                                                     $this->site = $site;
                                                            		 $this -> ip = $_SERVER['REMOTE_ADDR'];
                                                            		 $this -> DateTime = date('m/d/Y h:i:s a');  
                                                            		 $this -> items = ['Name', 'Email', 'Message']; 
                                                            		 $flag = true;
                                                                  
                                                                    if(isset($_POST['Name']) || isset($_POST['Email']) || isset($_POST['Message'])) {
                                                                     
                                                                       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 ); 
                                                                   
                                                            	}
                                                            

                                                            aber bekomme diese Fehler,

                                                            Parse error: syntax error, unexpected '(', expecting '{' in /var/www/html/classprove.php on line 9

                                                            Hier kannst sehe wie der classprove.php habe.

                                                            1. Hallo liebewinter,

                                                              ok, du hast den Fehler ja selbst schon gefunden, im REPL ist er nicht mehr.

                                                              Rolf

                                                              --
                                                              sumpsi - posui - clusi
                                                              1. ja ist da...

                                                                1. ich habe auf der Datei kommentar das,

                                                                  <?php
                                                                    
                                                                  $object = new ClassProveContakt3("1");
                                                                  
                                                                  ?>  
                                                                  	
                                                                  

                                                                  auf der php Datei,

                                                                  class ClassProveContakt3 {
                                                                  
                                                                  	private $dbHost = 'localhost'; # Host der Datenbank
                                                                  	private $dbName = 'linuxuse_commentaren';      # Name der Datenbank
                                                                  	private $dbUser = 'root';      # Name der User
                                                                  	private $dbPass = 'me';      # Passwort
                                                                  
                                                                  	private $Name;
                                                                  	private $Email; 
                                                                      private $Message;
                                                                  	private $PostOK;
                                                                  	private $DateTime;
                                                                  	private $items;
                                                                  	private $ip;
                                                                  	private $dbh;
                                                                      private $ok;
                                                                      private $site;
                                                                     
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  	public function __construct($site) {
                                                                           
                                                                           
                                                                           $this->site = $site;
                                                                  		 $this -> ip = $_SERVER['REMOTE_ADDR'];
                                                                  		 $this -> DateTime = date('m/d/Y h:i:s a');  
                                                                  		 $this -> items = ['Name', 'Email', 'Message']; 
                                                                  		 $flag = true;
                                                                  

                                                                  und auf function getMessages()

                                                                  {
                                                                  		if ( ! $this -> dbh ) {
                                                                  			$this -> getConnection();
                                                                  		}
                                                                  
                                                                          $sql = "SELECT * FROM commentar WHERE site = :site";
                                                                          $sth = $this->dbh->prepare( $sql, array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ));
                                                                          $sth->execute( array(':site'  => $site ));
                                                                          
                                                                          $result = $sth->fetchAll(PDO::FETCH_ASSOC );
                                                                          if ( false === $result ) {
                                                                              $this->reportPDOError( "fetchAll(ASSOC) failed", $sql );
                                                                          }
                                                                          foreach ($result as $message) {
                                                                  

                                                                  und bekomme eine Weiße Seite auf der kommentar Datei....

                                                                  1. Hallo liebewinter,

                                                                    und bekomme eine Weiße Seite

                                                                    Ja. Lerne Debuggen. Oder arbeite gründlicher.

                                                                    $sth->execute( array(':site'  => $site ));
                                                                    

                                                                    Rolf

                                                                    --
                                                                    sumpsi - posui - clusi
                                                                    1. Ich habe gefunde warum die Weiße fenster bekomme, weil ich habe zwei mal $object = new ClassProveContakt3("1");, Unten, wo der kommentar wird gezeigt und Oben, der ich vergesse ihn zu lösen...😳

                                                                      Jetzt bekomme die Seite aber bekomme auch diese Warung,

                                                                      Fatal error: Uncaught Error: Class 'ClassProveContakt3' not found in /var/www/html/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php:792 Stack trace: #0 {main} thrown in /var/www/html/ubuntu/how_to_transfer_documents_and_files_to_another_computer.php on line 792

                                                                      Auf die zeile 792 habe,

                                                                      $object = new ClassProveContakt3("1");
                                                                      
                                              2. Wie auf meine Erste frage gesagt habe, habe ich zwei Dateien, Der Erste Code habe ich um die Kommentaren zu sehen und ihn zu lösen... Der Zweite Datei ist für die Code für Kommentaren und Datenbank...

                                  2. Hallo Raketenprogrammplaner,

                                    worauf willst Du hinaus - sollte $_GET nicht einfacher sein um einen Query-Parameter zu bekommen? Es sei denn, es ist eine Path-URL, aus der man einen Teil des Pfades extrahieren muss.

                                    Update: ok, verstehe was Du meinst...

                                    Abgesehen davon sollte man nicht versuchen, einem Copy+Paste Programmierer das Denken beizubringen. Du wirst so lange Rückfragen bekommen bist Du die fertige Lösung postest.

                                    Rolf

                                    --
                                    sumpsi - posui - clusi
                                    1. Du wirst so lange Rückfragen bekommen bist Du die fertige Lösung postest.

                                      Mal sehen. Ist ja nicht mein Zeug, welches ohne eigenes Nachdenken nicht fertig wird.

                                      1. Hallo Raketenpädagoge,

                                        du machst es ihm/ihr ja auch nicht leicht, und ich finde die Lösung, von der ich vermute, dass Du sie anregen willst, auch nicht gut[1].

                                        Man KANN es über die URL in $_SERVER lösen, aber ich würde das nicht tun. Ich gehe mal davon aus dass die beiden Sites eigene Einstiegs-Scripte haben. Da kann man $site setzen und mit global nutzen (hm, pfui), oder es per Parameter durch die Welt reichen, oder ein SITE_ID per define() festlegen.

                                        Rolf

                                        --
                                        sumpsi - posui - clusi

                                        1. Google Translator beeindruckt mich - zumindest die englische Ü dieses Schachteltextes sieht ganz ordentlich aus. ↩︎

                                        1. aber ich würde das nicht tun. Ich gehe mal davon aus dass die beiden Sites eigene Einstiegs-Scripte haben. Da kann man $site setzen

                                          Tja. Das hat er aber nicht gezeigt obwohl ihm eigentlich klar sein muss, dass genau das gebraucht wird,

                2. function getMessages() {
                     ...
                     $sth->execute( array(':site' => $site));
                     ...
                  }
                  

                  Du schickt Dein Kind ("getMessages, kauf alles, was auf dem Zettel steht") zum Bäcker. Aber ohne ihm den Zettel mit Deinen Wünschen mit zu geben. Warum kommt das Kind mit der Nachricht zurück, dass es nichts gekauft hat, weil es zwar Geld, aber keinen Zettel dabei hatte?

                  Was fehlt also erst bei Deiner Funktionsdefinition von getMessages() und dann auch noch beim Funktionsaufruf?

                  1. Was fehlt also erst bei Deiner Funktionsdefinition von getMessages()

                    Der if statement ?

                    1. Der if statement ?

                      Nein.

            3. Ich habe Fehler von der Seite vo ich antworte möchte....