[PHP/SQL] function voor rank

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mitchelp

Mitchelp

26/12/2008 12:45:00
Quote Anchor link
Hallo,

Ik heb een kleine functie geschreven om de rang van een gebruiker uit de database op te vragen en te returne.
Maar het werkt helaas niet.
Ik krijg helemaal geen fout of wat te zien. Hier de functie in de class:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
// Function for rank check
function getinfo($login)
{

      $login = $login;
      $sql = mysql_query("SELECT rank FROM users WHERE id='".mysql_real_escape_string($login)."'") or die(mysql_error());
      $info = mysql_fetch_array($sql);
      return $info['rank'];
}

// end of
?>


En hier hoe ik hem wou teste in een test file:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php include ("includes/header.php"); ?>

<?php

echo 'tja';
echo getinfo($_SESSION['id']); //Hier moet in dit geval admin komen te staan.

?>


<?php include ("includes/footer.php"); ?>


Kan iemand mij uitleggen wat ik verkeerd doe??
Ik krijg verder ook helemaal geen fout te zien of wat..
 
PHP hulp

PHP hulp

22/12/2024 07:13:12
 
Joren de Wit

Joren de Wit

26/12/2008 13:18:00
Quote Anchor link
Om te beginnen, wat is het nut van regel 5 uit je eerste stukje code? Sloop die er gewoon uit, hij doet niets...

Waar controleer je verder of er wel resultaten opgehaald zijn uit de database. Wellicht dat er voor de opgegeven $login helemaal geen gegevens beschikbaar zijn?

En daarop aansluitend: weet je zeker dat $_SESSION['id'] de juiste waarde bevat? En zo ja dan lijkt het mij hier om een id te gaan terwijl je functie een $login (== username?) nodig heeft?

Kortom, bouw eens wat meer controles in en echo eens wat variabelen om te zien of ze daadwerkelijk bevatten wat jij denkt dat ze bevatten...

ps. Misschien overbodig, maar je hebt toch wel de file waarin die functie staat geinclude in je test file? Je moet er natuurlijk wel voor zorgen dat die functie beschikbaar is.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Noppes

Noppes

26/12/2008 13:36:00
Quote Anchor link
Voorbeeldtje dan maar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
/**
    Function for rank check
*/

function getinfo($login) {

    if ($login != '' && ctype_digit($login)) {
        $sql = "SELECT    rank
                FROM    users
                WHERE     id='"
.mysql_real_escape_string($login)."'";
        
        if ($result = mysql_query($sql)) {
            
            if (mysql_num_rows($result) == 1) {
                if ($row = mysql_fetch_assoc($result)) {
                    return $row['rank'];
                }
            }
        }
    }

    
    return false;
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);

session_start();

require_once 'functions.php';

if (isset($_SESSION['id'])) {
    if (($rank = getinfo($_SESSION['id'])) !== false) {
        echo $rank;
    }            
}

?>
 
Nicoow Unknown

Nicoow Unknown

26/12/2008 13:37:00
Quote Anchor link
@blanche,
Dan zou hij toch de error undefined function terug krijgen =þ

Voor de rest is een die die extreem overbodig.
Ten tweede zou ik nog een Limit 1 in de queryu gooien, zodat je ook geen vreemde dingen terug krijgt in je $info

Ik zou er zoiets van maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Function for rank check
function getinfo($login)
{

      $login = mysql_real_escape_string($login);
      $sql = mysql_query("SELECT rank FROM users WHERE id='". $login ."'");
      if(!$sql)
     {

          $return = "Er is iets mis gegaan met het ophalen van de gegevens";
      }

      else
      {
            $info = mysql_fetch_array($sql);
            $return = $info['rank'];
      }

      return $return;
}

// end of
?>

En dan moeten er nog wel een paar controlles in, maar ik ga op Familie bezoek, dus heb nu even geen tijd meer =þ

Nog een fijne 2e kerstdag allen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.