2017-05-11 7 views
0

Ich bin ziemlich neu mit PHP-Klassen, habe ich einige PHP mit der prozeduralen Methode für eine Weile, aber noch nie richtig objektorientierte Programmierung auf PHP getan . Was bringt mich zu meiner Frage:Wie kann ich den Wert von Variablen innerhalb einer PHP-Klasse in einer anderen Seite verwenden

Ich habe eine Datei namens classes.php, wo ich alle meine PHP-Klassen definieren will. In dieser Datei habe ich eine Klasse wie folgt erstellt:

require_once("connection.php"); 

class User 
    { 

     public function getUserInfo() { 
      $userinfo = mysqli_query($con,"SELECT * FROM users WHERE username='". $_SESSION['username'] ."'"); 
      while($row = mysqli_fetch_assoc($userinfo)) { 

       // USER DETAILS: 
       $userid = $row['id']; 
       $username = $row['username']; 
       $userfirstname = $row['first_name']; 
       $userlastname = $row['last_name']; 
       $useremail = $row['email']; 
       $useraddress1 = $row['address_line_1']; 
       $useraddress2 = $row['address_line_2']; 
       $userpostcode = $row['postcode']; 
       $userphone = $row['phone']; 
       $usermobile = $row['mobile']; 
       $usercreated = $row['created']; 
       $usermodified = $row['modified']; 
       $useraccess = $row['access_level']; 

      } 
     } 

    } // end of User 

Jetzt will ich in dieser Klasse in einer anderen Seite definiert die Werte der Variablen verwenden. Aber wie kann ich auf diese Werte zugreifen?

Bisher habe ich versucht, diese (erfolglos):

<?php 
include "php_includes/classes.php"; 
$user = new User(); 
?> 

<div class="somediv"> 
    <?php echo $user->getUserInfo($username) ?> 
</div> 

Ich habe auch versucht:

<?php 
    include "php_includes/classes.php"; 
    $user = new User(); 
    ?> 

    <div class="somediv"> 
     <?php echo $user->$username ?> 
    </div> 

Gibt es eine Möglichkeit, diese Variablen in einer anderen Seite ein Echo, so kann ich das verwenden Benutzerinformationen in zum Beispiel Profilseiten?

Vielen Dank im Voraus.

+0

Sie können PHP-Sitzung verwenden –

+0

Mögliche Duplikate von [übergeben Variablen zwischen zwei PHP-Seiten ohne ein Formular oder die URL der Seite] (http://stackoverflow.com/questions/16778425/pass-variables-between-two- php-pages-without-using-a-form-or-der-url-of-page) –

Antwort

0

überprüfen sollten Sie den Wert aus der Funktion zurück.

require_once ("connection.php");

class User 
    { 

     public function getUserInfo() { 
      $userinfo = mysqli_query($con,"SELECT * FROM users WHERE username='". $_SESSION['username'] ."'"); 
      $row = mysqli_fetch_assoc($userinfo); 

      return row 
     } 

    } 

und jetzt nur die Details der Benutzer zeigen müssen

<?php 
    include "php_includes/classes.php"; 
    $user = new User(); 
?> 
<div class="somediv"> 
    <?php $user_detail=$user->getUserInfo(); ?> 
    <label>name:</label><br> 
    <?php echo $user_detail["first_name"]; ?> 
</div> 

So können Sie überprüfen, ob Zeile null ist oder nicht, und ganze Array kann durch diese Funktion der Klasse zurückgegeben werden, wo jeder dieser Klasse enthalten sind im Ordner.

+0

Hallo Muhammad, ich habe das versucht, aber ich bekomme ein paar Fehler. Ich glaube, die Klasse erkennt den Wert von $ con nicht. Mein connection.php-Code ist ' 'Und es funktioniert gut, weil alles andere auf der Website funktioniert, einschließlich der Anmelde-und Abmeldeverfahren. –

+0

öffentliche Funktion getUserInfo() {global $ con; $ userinfo = mysqli_query ($ con, "SELECT * FROM Benutzer WHERE username = '". $ _SESSION [' username ']."'"); $ row = mysqli_fetch_assoc ($ userinfo); zurück Zeile } Dies wird das Problem beheben, da cuse Variable außerhalb der Klasse ist so global in der Klasse der Funktion } –

+0

machen Muhammad, das hat tatsächlich funktioniert! Danke für Ihre Antwort –

0

Bevor Sie Ihre Funktion benötigen Sie öffentlichen Variable machen wie:

public $userid; 

Dann als nächste in Code in Funktion, die Sie verwenden müssen:

$this->userid = $row['id']; 

EDIT

Ihre calss Notwendigkeit, sein:

class User 
    { 

     public $userid; 
     public function getUserInfo() { 
      $userinfo = mysqli_query($con,"SELECT * FROM users WHERE username='". $_SESSION['username'] ."'"); 
      while($row = mysqli_fetch_assoc($userinfo)) { 

       // USER DETAILS: 
       $this->$userid = $row['id']; 


      } 
     } 

    } // end of User 

Und Sie müssen auch diese Klassendatei in andere PHP-Seite enthalten, wenn Sie Daten anzeigen möchten.

+0

Hallo Robert, ich habe die Klasse wie von dir vorgeschlagen formatiert. Aber wie rufe ich die Variablenwerte auf der anderen Seite auf? Ich versuche das ohne Erfolg: ' username?> ' –

+0

Haben Sie einen Fehler oder? Ich werde meine Antwort mit vollem Klassen-Look bearbeiten und Sie sehen, dass es in Ihrem Code in Ordnung ist. –

+0

Keine Fehler, es zeigt nur nicht den Wert –

0

müssen Sie die Variable als PUBLIC

class User 
{ 
     public function getUserInfo() { 
     $userinfo = mysqli_query($con,"SELECT * FROM users WHERE username='". $_SESSION['username'] ."'"); 
     while($row = mysqli_fetch_assoc($userinfo)) { 

         // USER DETAILS: 
         public $userid = $row['id']; 

     } 
     } 
} 

erklären Weitere Informationen here

Verwandte Themen