Okay, jeg leger stadigvæk med det her. Har et nyt problem:
Backbone (database, message funktion)
class Backbone
{
private $host = "localhost";
private $user = "root";
private $pass = "pw";
private $db = "db";
function connect()
{
if(!mysql_connect($this->host, $this->user, $this->pass))
{
return false;
}
if(!mysql_select_db($this->db))
{
return false;
}
return true;
}
function disconnect()
{
if(!mysql_close())
{
return false;
}
return true;
}
function query($q)
{
if(!mysql_query($q))
{
return false;
}
return true;
}
function newMsg($size, $text, $type)
{
if($size == 0)
{
$text = strtolower($text);
}
elseif($size == 1)
{
$text = strtoupper($text);
}
elseif($size == 2)
{
$text = $text;
}
if($type == 0)
{
$text_class = "error";
}
elseif($type == 1)
{
$text_class = "succes";
}
$msg = "<p class='". $text_class ."'>". $text ."<p>";
return $msg;
}
}
Validation (alt fra om ting er empty, isset til at kontrollere om et username er taget etc)
class Validate extends Backbone
{
function validation()
{
//Har ikke helt fundet ud af hvordan jeg får det her til at virke, derfor returner den kun true lige nu.
return true;
}
function usernameTaken($username)
{
if(!$q = $this->query("SELECT * FROM users WHERE username='$username'"))
{
return false;
}
else
{
$row = mysql_fetch_array($q); //bare noget halløj pt.
}
if(mysql_num_rows($q) != 0)
{
}
return true;
}
}
UserControl (save user, delete user, login etc vil være at finde her)
class UserControl extends Backbone
{
function userSave($username, $password)
{
$q = new Backbone();
$validation = new Validate();
if(!$validation->validation($username, $password))
{
return false;
}
if(!$validation->usernameTaken($username))
{
echo $q->newMsg(2, "Error: Username already taken", 0);
return false;
}
else
{
if(!$q->query("INSERT INTO users (username, password, acceslvl) VALUES('$username', '$password', '0')"))
{
return false;
}
}
return true;
}
}
Mit problem ligger i at når jeg vil kontrollere hvorvidt der allerede er en user med et givent navn, så siger den:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Det er fordi jeg bruger
$q = $this->query("SELECT * FROM users WHERE username=$username");
og det kan den ikke finde ud af, hvis jeg derimod bare skriver:
$q = mysql_query("SELECT * FROM users WHERE username=$username");
if(mysql_num_rows($q) != 0)
{
return false;
}
return true;
så vil den godt.
Desuden er jeg lidt lost med hensyn til hvordan det er mest hensigtsmæssigt at hente data ud fra DB'en. Kommentare til hele skidtet er selvfølgelig meget velkommen.