2016-06-13 12 views
0

ich, wenn der Benutzer überprüfen möge, was ein Benutzer Rang hat, die als eine ganze Zahl von 0 in der Datenbank gespeichert ist, 1, 2 oder 3.Ranking-System mit mysqli

ich es Echo sein will‘ d wie echo $ my_rank; #Instead davon sagen 0,1,2 oder 3 heißt es Benutzer für 0, Moderator für 1, Admin für 2 und Inhaber für 3.

Hier ist mein Code:

$my_rank = $_SESSION['rank'] = array("owner","administrator","moderator","user"); 

$rank = array (
    '0' => 'user', 
    '1' => 'moderator', 
    '2' => 'administrator', 
    '3' => 'owner' 
); 

Config .php

<?php 

# Error Reporting 
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 

# No Error Reporting 
//error_reporting(0); 

# Message Responses 
$success = array(); 
$danger = array(); 
$warning = array(); 
$info = array(); 

# Define the Database 
define('DB_SERVER','localhost'); 
define('DB_USERNAME','blah'); 
define('DB_PASSWORD','blah'); 
define('DB_DATABASE','blah'); 

# Connect to the database 
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
if (!$con) { 
    $danger[] = mysqli_connect_error(); 
} else { 
    //echo "It worked"; 
} 
?> 
+0

Wo speichern Sie Benutzerdaten? Wo wird INT 0,1,2 oder 3 gespeichert? –

+0

https://gyazo.com/e915d49f10bdefec2a5b0b91f906ea33 –

+0

Können Sie mehr von der Datenbankstruktur zeigen? Dieses Bild zeigt uns nicht viel anderes als die Tatsache, dass Sie eine Rangspalte haben. –

Antwort

0

Man kann die Datenbank mit sQL-Anweisungen abfragen. Denjenigen Sie suchen eine select auf der Usertabelle:

// array which holds the info 
$rank = array ('user', 'moderator', 'administrator', 'owner'); 
// set up db connection 
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
if (!$con) { 
    $danger[] = mysqli_connect_error(); 
} else { 
    //echo "It worked"; 

    // Baklap4's Addition: 

    // SQL statement to retrieve the row where username is piet 
    $sql = "SELECT * FROM Users WHERE username = `piet`"; 

    // Execute the query and check if there is a result. 
    if ($result = $con->query($sql)) { 
     // if there are results loop through them. 
     while ($row = mysqli_fetch_assoc($result)) { 
      // print for each rank a different rank name. 
      echo $rank[$row['rank']]; 
     } 
     // free resultset 
     $result->close(); 
    } 
    // close connection 
    $con->close(); 
    //clean up the temp variables 
    unset($obj); 
    unset($sql); 
    unset($result); 
} 

Dieser Den Benutzer abruft Piet aus Ihrer Datenbank und druckt den Rang (die in der Datenbank aufgeführt ist). Dann werden alle temporären Werte aufgehoben, die innerhalb der While-Schleife gemacht wurden, so dass Sie sie nicht erneut verwenden können.

Sie sollten den hartcodierten Wert piet in eine Variable ändern. Man könnte zu http://localhost/scriptname.php?username=piet gehen, um das gleiche Ergebnis zu erhalten.

Um dies eine Variable, um die SQL-Linie zu ändern, wie folgend:

$sql = "SELECT * FROM Users WHERE username = $_GET['username']";

+0

Ich bin ein bisschen verwirrt. –

+0

Erarbeiten Sie, worüber Sie verwirrt sind. Wir können nicht helfen, wenn wir nicht wissen, womit wir helfen können. –

+0

Alles, was ich versuche, es zu tun, ist festzustellen, ob der INT in der Reihe Reihe = 0,1,2 oder 3, und wenn es tut, möchte ich es mit 2 = Admin zurück antworten (Aber nur sagen es admin) –

1

Nun ... Going durch die Informationen, die Sie mir gegeben haben, wie es scheint, alles, was benötigt wird, ist eine Abfrage, um die Daten von der Datenbank zu erhalten. Dann können wir es wiederholen.

Im else Block in Ihrer Datenbank-Verbindung, können wir so etwas wie tun:

# Connect to the database 
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
if (!$con) { 
    $danger[] = mysqli_connect_error(); 
} else { 
    //echo "It worked"; 

    // HopefulLlama code below: 

    // Construct our SQL query, which will retrieve data from the database. 
    $sql="SELECT * FROM Users"; 
    $result=mysqli_query($con,$sql); 

    // Loop through all results return by our query 
    while ($row = mysqli_fetch_assoc($result)) { 
     // $row['rank'] will contain our Integer of 0, 1, 2, or 3 
     echo $row['rank'] 

     // This will access your $rank array, and use the index retrieved from the database as an accessor. 
     echo $rank[$row['rank']] 
    } 
} 
+0

Wie ist das anders als meine Antwort? – Baklap4

+0

Es ist nicht, Sie haben gerade Ihre Antwort in, während ich meins tippte. –

+1

@ Baklap4 diese Antwort ist viel klarer und weniger verwirrend. Und es beantwortet die Frage. –