Goedenavond,

Ik heb een klein vraagje over het onderwerp wat laatst is besproken: "http://www.phphulp.nl/php/forum/topic/oop-login/75926/1/".

Class Database
Class User

Nu wil ik mysqli gebruiken om de user in te loggen. Dit geeft (bij mij) alleen een probleem.

De class User kan niet bij de gegevens uit class Database, en dus geen query uitvoeren omdat ik een belangrijke parameter mis.

Voorbeeld class User (ik kan dus niet bij de variabele $link uit class Database):

<?php
$result = mysqli_query($link, "SELECT gebruikerid FROM gebruikers WHERE gebruikersnaam='" . $username . "' AND wachtwoord='" . $password . "'") or die(mysql_error());
?>

Dit maakt de class Database dus overbodig?

Het volledige script (class_lib.php):

<?php

class database{

public function connect(){

$link = mysqli_connect('localhost','root','','login');

}
}

class user{

public function connect(){

$link = database::connect(); //werkt niet

$username = $_POST['gebruikersnaam'];
$password = $_POST['wachtwoord'];

$result = mysqli_query($link, "SELECT gebruikerid FROM gebruikers WHERE gebruikersnaam='" . $username . "' AND wachtwoord='" . $password . "'") or die(mysql_error());

if (mysqli_num_rows($result) > 0){
echo "Succesvol ingelogd.";
}
else{
echo "Vul gebruikersnaam / wachtwoord in.";
}
}
}

?>
Wouter OOP op 31/01/2011 23:18:50

Nu begrijp ik er niks meer van :P

De user mag dus geen query bevatten en de database verbinding overnemen uit het database object?


Inderdaad. Als je verder gaat op deze weg, dan doe je geen OOP maar dan doe je stukke code in klassen en methodes dumpen.
Het maakt de User object niet uit waar de inlog-gegevens e.d. vandaan komen, het zou bijvoorbeeld ook uit een XML bestand kunnen komen. Dat is dus het mooie aan OOP, je hoeft maar één keer code te schrijven die in meerdere situaties werkt.
En ja ik voer het misschien wel ver door... Maar goed, ga maar eens spaghetti-code in Java maken, daar wordt je niet blij van. Dus dan kan je het net zo goed direct in één keer goed doen.
Verder is er volgens mij in je vorige topic het e.e.a. ook al uitgelegd.

Reageren