Chyba PHP OOP

Programovacie jazyky, rady, poradňa...
ServerApp
Zablokovaný
Zablokovaný
Príspevky: 125
Registrovaný: 16 sep 2011, 15:00

Chyba PHP OOP

Príspevok od používateľa ServerApp »

Čau. Pokúšam sa vytvoriť malý systém, čo zapíše užívateľa do db. Kódy:

Kód: Vybrať všetko

class User
{
    public $username = "meno";
    public $dbname = "menomenicko";
    public $userpass = "heslo";

    public function RegisterUser($name, $pass, $mail) 
    {
        if($name=="" || $pass=="" || $mail=="")
        {
            header('location: ../Erorr/Errors.php');  
        }
        
        $link = mysql_connect("localhost",$this->username,$this->userpass);
        mysql_select_db($this->dbname);
        $sql_command = "INSERT INTO USERS (name, pass, mail) VALUES ('$name','$pass','$mail')";
        mysql_query($sql_command) or die (mysql_error());
        mysql_close();
    }
a

Kód: Vybrať všetko

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        
        <?php
        include 'Classes/ManageClass.php';
        $a = "nic";
        $obj = new User();
        $obj->RegisterUser("no","a","co?");
        /*
        if($_SESSION[log]=="true")
            header("location: User\Main.php");
        else
            header("location: Manage\Main.php");
          */
         
        ?>
         
         
    </body>
</html>

IDEčko mi nenašlo žiadnu chybu, a keď som skúšal to isté bez OOP, tak mi to išlo. Prvý súbor je "ManageClass.php", a druhý "index.php".
Neviete niekto prosím, kde mám chybu?

//autoeditácia príspevku (24 Sep 2011, 16:40)
PHP nič nehlási, proste ma to presmeruje už na Main.php kde je login...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Chyba PHP OOP

Príspevok od používateľa audiotrack »

okrem toho že ti v MangeClass.php chýba na konci jedna zátvorka } nevidím žiadnu chybu. Pár výhrad by som mal na tie verejné premenné ale inak by to malo fungovať
ServerApp
Zablokovaný
Zablokovaný
Príspevky: 125
Registrovaný: 16 sep 2011, 15:00

Re: Chyba PHP OOP

Príspevok od používateľa ServerApp »

Nechápem to... vyskúšam ešte iné obmeny, alebo niečo skúsim dodať. (Čo sa týka tých verejných premenných, viem že lepšie by bolo, keby boli private, a ďalej viem že netreba stále otvárať nové pripojenie, ale to som tam strčil ako example.)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Chyba PHP OOP

Príspevok od používateľa audiotrack »

Keď dávaš iba ako "example" tak sa nedá poradiť. Vravíš že php nič nevypíše iba ťa presmeruje na main.php. Lenže to máš predsa zakomentované. Tiež je to v podmienke na základe session, ktoré nikde nenastavuješ, tak prečo by nemalo presmerovať? A ktorý main.php si vlastne myslel?
ServerApp
Zablokovaný
Zablokovaný
Príspevky: 125
Registrovaný: 16 sep 2011, 15:00

Re: Chyba PHP OOP

Príspevok od používateľa ServerApp »

Ach. Je to zložité. A čudné. Už to ide. Akonáhle som poupravil kód na:

Kód: Vybrať všetko

class User
{
    public $username = "meno";
    public $dbname = "menomenicko";
    public $userpass = "heslo";

    public function RegisterUser($name, $pass, $mail) 
    {
        if($name=="" || $pass=="" || $mail=="")
        {
            header('location: ../Erorr/Errors.php');  
        }
        
        $link = mysql_connect("localhost",$this->username,$this->userpass);
        mysql_select_db($this->dbname, [b]$link[/b]);
        $sql_command = "INSERT INTO USERS (name, pass, mail) VALUES ('$name','$pass','$mail')";
        mysql_query($sql_command) or die (mysql_error());
        mysql_close([b]$link[/b]);
    }
}
tak to ide... Hmmm....
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Chyba PHP OOP

Príspevok od používateľa weroro »

Však áno. V mysql_select_db ti chýbal jeden atribút. Ty si chcel vybrať databázu ale neurčil si kde sa nachádza a aké sú prihlasovacie údaje. A len taký detail, na ktorom ani tak veľmi nezáleží ale:

Kód: Vybrať všetko

INSERT INTO USERS (name, pass, mail) VALUES ('$name','$pass','$mail')
zmeň na:

Kód: Vybrať všetko

INSERT INTO users (name, pass, mail) VALUES ('$name','$pass','$mail')
SQL príkazy veľkým a ostatné malým. Ale inak to kľudne môžeš nechať tak ako to je. :)
ServerApp
Zablokovaný
Zablokovaný
Príspevky: 125
Registrovaný: 16 sep 2011, 15:00

Re: Chyba PHP OOP

Príspevok od používateľa ServerApp »

USERS je meno tabuľky, a to je veľkým. Nechcem riskovať.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Chyba PHP OOP

Príspevok od používateľa audiotrack »

ServerApp napísal:Ach. Je to zložité. A čudné. Už to ide. Akonáhle som poupravil kód na:

Kód: Vybrať všetko

class User
{
    public $username = "meno";
    public $dbname = "menomenicko";
    public $userpass = "heslo";

    public function RegisterUser($name, $pass, $mail) 
    {
        if($name=="" || $pass=="" || $mail=="")
        {
            header('location: ../Erorr/Errors.php');  
        }
        
        $link = mysql_connect("localhost",$this->username,$this->userpass);
        mysql_select_db($this->dbname, $link);
        $sql_command = "INSERT INTO USERS (name, pass, mail) VALUES ('$name','$pass','$mail')";
        mysql_query($sql_command) or die (mysql_error());
        mysql_close($link);
    }
}
tak to ide... Hmmm....
aký tam je vlastne rozdiel? V prvom príspevku máš to isté, nie?
ServerApp
Zablokovaný
Zablokovaný
Príspevky: 125
Registrovaný: 16 sep 2011, 15:00

Re: Chyba PHP OOP

Príspevok od používateľa ServerApp »

class User
{
public $username = "meno";
public $dbname = "menomenicko";
public $userpass = "heslo";

public function RegisterUser($name, $pass, $mail)
{
if($name=="" || $pass=="" || $mail=="")
{
header('location: ../Erorr/Errors.php');
}

$link = mysql_connect("localhost",$this->username,$this->userpass);
mysql_select_db($this->dbname, $link);
$sql_command = "INSERT INTO USERS (name, pass, mail) VALUES ('$name','$pass','$mail')";
mysql_query($sql_command) or die (mysql_error());
mysql_close($link);
}
}
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Chyba PHP OOP

Príspevok od používateľa audiotrack »

to tam predsa vôbec nemusí byť v tvojom prípade, tak neverím že bez toho to nešlo a po dopísaní už áno. Zádrhel musel byť niekde inde
Napísať odpoveď