Avatar billede Slettet bruger
20. juli 2004 - 12:31 Der er 27 kommentarer og
1 løsning

fejl i oop

Det her er det første jeg nogensinde har lavet i oop, så der er sikkert mange fejl, men jeg kan ikke finde ud af hvorfor det ikke virker!

<?
class mysql
    {
    var $db_host,
        $db_database,
        $db_user,
        $db_pass;
    function setmysql($host, $db, $user, $pass)
        {
        $mysql -> db_host = $host;
        $mysql -> db_database = $db;
        $mysql -> db_user = $user;
        $mysql -> db_pass = $pass;
        }
       
    function getmysql($host, $db, $user, $pass)
        {
        return $this -> db_host;
        return $this -> db_database;
        return $this -> db_user;
        return $this -> db_pass;
        }
    }
$sql = new mysql;
$sql -> setmysql(*host*, *db*, *bruger*, *pass*);

//Tester om det virkede

mysql_connect("$getmysql -> db_host", "$getmysql -> db_user", "$getmysql -> db_pass" );
mysql_select_db("$getmysql -> db_database");

$query = mysql_query("SELECT * FROM medlemmer");
while($row = mysql_fetch_array($query))
    {
    echo $row[nick];
    }
?>

det skal connecte til databasen
Avatar billede Slettet bruger
20. juli 2004 - 12:55 #1
kunne jeg få et svar :D
Avatar billede avminarm Juniormester
20. juli 2004 - 13:27 #2
det er nok mere i den her stil:

<?
class mysql {

    var $db_host;
    var $db_database;
    var $db_user;
    var $db_pass;

    function setmysql($host, $db, $user, $pass) {
        $this -> db_host = $host;
        $this -> db_database = $db;
        $this -> db_user = $user;
        $this -> db_pass = $pass;

    mysql_connect($this -> db_host, $this -> db_user, $this -> db_pass ) or die (mysql_error());
    mysql_select_db($this -> db_database);
    }
       
}

$sql = new mysql;
$sql -> setmysql(*host*, *db*, *bruger*, *pass*);

//Tester om det virkede

$query = mysql_query("SELECT * FROM medlemmer");
while($row = mysql_fetch_array($query))
    {
    echo $row[nick];
    }
?>
Avatar billede Slettet bruger
20. juli 2004 - 13:34 #3
jeg har aldrig lavet oop før, så jeg ved ikke om det bare er lidt henad det rigtige :P
Avatar billede avminarm Juniormester
20. juli 2004 - 13:40 #4
har du læst nogte artikler om OOP - læs f.eks:

http://www.udvikleren.dk/article.php?aid=147&techid=6
Avatar billede avminarm Juniormester
20. juli 2004 - 13:43 #5
inde i klassen
class{

}

skal du altid benytte $this-> var

og udenfor når klassen benyttes:

$sql = new mysql;
$sql -> setmysql(*host*, *db*, *bruger*, *pass*);

her skal du bruge $sql -> funktion() hver gang du benytter en funktion fra klassen
Avatar billede Slettet bruger
20. juli 2004 - 14:02 #6
ok, jeg har stadig ikke helt fattet det, men det hjælpder da, thx :D
Avatar billede avminarm Juniormester
20. juli 2004 - 14:15 #7
det tar lidt tid at komme ind i, men det er faktisk ret smart - takker for points ;o)
Avatar billede Slettet bruger
20. juli 2004 - 14:16 #8
tak for svar :D
Avatar billede Slettet bruger
20. juli 2004 - 16:13 #9
er det muligt at få adgang til en variabel i en klasse uden for klassen?:

class bruger 
    {
    var $brugerid,
        $brugernavn,
        $rang,
        $query;
       
    function setbruger($brugerid)
        {
        $query = mysql_query("SELECT * FROM medlemmer WHERE id='$brugerid'");
        $row = mysql_fetch_array($query);
        $this -> brugerid = $row[id];
        $this -> brugernavn = $row[nick];
        $this -> rang = $row[rang];
        return $this -> brugerid;
        return $this -> brugernavn;
        return $this -> rang;       
        }
   
    }

$sql = new mysql;
$sql -> setmysql(localhost, balmer1, balmer1, abalmer);

$bruger = new bruger;
$bruger -> setbruger(1);

echo $sql -> brugerid;
Avatar billede avminarm Juniormester
20. juli 2004 - 21:04 #10
jeg er ikke helt med på hvad du mener?
Avatar billede Slettet bruger
21. juli 2004 - 08:05 #11
jeg vil godt have fat i brugerid, brugernavn og rang.

Det script jeg har der synes jeg bare, burder virke.
Avatar billede avminarm Juniormester
21. juli 2004 - 09:21 #12
har du læst artiklen jeg henviser til? - den beskriver det nemlig ret godt
---- sakset fra udviklersn.dk -----
<?php
// I OOP navngiver man som regel klasser med et stort begyndelsesbogstav
class Computer
{
    var $cpu;
    var $ram;

    function setCpu($cpuNewSpeed)
    {
        $this -> cpu = $cpuNewSpeed;
    }

    function getCpu()
    {
        return $this -> cpu;
    }


    function setRam($ramNewAmount)
    {
        $this -> ram = $ramNewAmount;
    }

    function getRam()
    {
        return $this -> ram;
    }
}
?>

Vi kan nu prøve at ”oprette” en computer. Den kalder vi myComputer:
<?php
$myComputer = new Computer;
$myComputer -> setCpu(2000);
$myComputer -> setRam(512);
echo $myComputer -> getCpu() . "MHz og " . $myComputer -> getRam() . "MB";
?>
----- saks slut -------
Avatar billede Slettet bruger
21. juli 2004 - 09:28 #13
Jep den har jeg brugt, det er den jeg kigger på hele tiden :D
Avatar billede Slettet bruger
21. juli 2004 - 09:31 #14
skal jeg så bruge en funktion til at "returne" hver funktion?

f.eks

function getbrugerid {

return $this -> brugerid;
}

function getbrugernavn {

return $this -> brugernavn;
}
Avatar billede avminarm Juniormester
21. juli 2004 - 09:50 #15
yep ;o) og det smarte er så at hvis du retter i den førliggende kode - vil resten af koden stadigvæk virke
Avatar billede Slettet bruger
21. juli 2004 - 09:52 #16
ok :D

kan man ikke lave en funktion som den her:

function getbrugerinfo()  {

return $this -> brugerid;
return $this -> brugernavn;
return $this -> rang;
}
Avatar billede avminarm Juniormester
21. juli 2004 - 10:10 #17
for at være helt ærlig - har jeg aldrig set det, så jeg tror det ikke, men du kan da lave 3 små funktioner - så kan de bruges hver for sig.
Avatar billede Slettet bruger
21. juli 2004 - 10:32 #18
jep. Og jeg skal bare udenfor classen sige:

echo $bruger -> "Brugerid: " . getbrugerid() . " og rang: " . getrang();

eller er det forkert?
Avatar billede avminarm Juniormester
21. juli 2004 - 11:17 #19
ja lidt forkert:

echo "Brugerid: " . $bruger -> getbrugerid() . " og rang: " . $bruger -> getrang();
Avatar billede Slettet bruger
21. juli 2004 - 11:31 #20
ok. thx :D
Avatar billede avminarm Juniormester
21. juli 2004 - 11:34 #21
var så lidt ;o)
Avatar billede Slettet bruger
22. juli 2004 - 15:18 #22
Det er utroligt, jeg kan egentlig få nogle ting til at virke nu :D... endnu engang tak
Avatar billede avminarm Juniormester
22. juli 2004 - 15:25 #23
jeg faldt lige over denne artikel - den er ret god: http://www.liquidpulse.net/articles/php/oop/php_object_oriented_programming

jeg skrev det egentlig i morges, men exp skodder lidt for tiden?
Avatar billede Slettet bruger
22. juli 2004 - 15:29 #24
ok :P
Avatar billede Slettet bruger
24. juli 2004 - 01:38 #25
Du kan lave noget i denne stil:

function getbrugerinfo()  {
  return array('brugerid' => $this -> brugerid,
    'brugernavn' => $this -> brugernavn,
    'rang' => $this -> rang);
}

Så kan du udefra skrive:

$brugerinfo = $bruger -> getbrugerinfo();
echo $brugerinfo['brugernavn'];
Avatar billede Slettet bruger
24. juli 2004 - 01:41 #26
Men (som jeg glemte at skrive) man kan kun returnere en værdi af gangen. Den værdi kan til gengæld godt være et array.

Det kan også gøres på en anden måde:

function getbrugerinfo()  {
  return array($this -> brugerid,
    $this -> brugernavn,
    $this -> rang);
}

list($id, $navn, $rang) = $user -> getbrugerinfo();
Avatar billede avminarm Juniormester
24. juli 2004 - 22:01 #27
sandbox>> så lærte jeg også lidt ;o) -  gælder det også før php 5?
Avatar billede Slettet bruger
25. juli 2004 - 23:38 #28
avminarm>> Ja. Fra PHP version 3. Jeg var lige nødt til at slå list()-konstruktionen op, da jeg pludselig blev usikker på, om den fandtes i PHP eller om det var fra Perl, jeg kendte den, men den er god nok: http://dk.php.net/list

Og næsten samme kode er da også som eksempel på siden om returnering af værdier fra funktioner: http://dk.php.net/manual/en/functions.returning-values.php
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester