Versio

oop database connection

Overzicht Reageren

Nick van der heijden

nick van der heijden

16/12/2011 23:06:31
Quote Anchor link
goededag PHPers,

ik ben zin paar dagen bezig met het leren van oop mijn vraag is nu of dit redelijk goed is of er een snellere manier kan om db connection te 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
20
21
22
23
<?php
class dbconnect
{
protected $host;
protected $user;
protected $password;

public function __construct($host,$user,$password)
{

$this->_host=$host;
$this->_user=$user;
$this->_password=$password;

if(mysql_connect("$host","$user","$password")){
    echo'connected';
}

else{
    echo'failure to connect';
}
}
}

$conn = new dbconnect('localhost','gebruikersnaam','wachtwoord');
?>

mvg,
NIick
 
PHP hulp

PHP hulp

25/05/2012 12:51:23
Gesponsorde koppelingen:
 
Wouter J

Wouter J

16/12/2011 23:18:15
Quote Anchor link
Het connecten is geen object, maar een method. Ik zou dus geen class dbconnect aanmaken. DB is daarin tegen wel een object. Het stelt namelijk de hele db voor. Dus een DB class kun je wel maken.
Een method van die DB class is onder anderen het verbinden met een SQL server. Dus je kan binnen de DB class wel een method connect maken. Omdat je elke keer als je een nieuwe DB object aanmaakt je een nieuwe verbinding nodig hebt kun je de connect method ook als constructor toevoegen.

Nu laat ik het OOP denken even ter zijde, dit is wel heel belangrijk maar je mist al de basis PHP. De fouten:
- Op regel 4 - 6 maak je $host, $user en $password aan. Maar op regel 10 - 13 gebruik je _host, _user en _password. Dit lijkt me niet de bedoeling.
- In een functie mag je nooit iets echoën. Altijd moet je de waarde returnen, niet de functie maar de verwerking van de functie moet bepalen hoe een gebruiker het te zien krijgt.
- Host, user en password zijn geen eigenschappen van een DB. Het zijn slechts dingen die nodig zijn voor een connect. Dus die hele global variabelen (regel 4 - 6 en 10 - 13) is overbodig.
- Mysql_connect moet je ergens storen. Dit is namelijk wel een eigenschap van een DB class.
- Variabelen horen niet tussen quotes.
- Waarom niet meteen de tabel select in de connect functie stoppen. Dan ben je meteen klaar en kunnen de andere methods toegewijd worden aan queries.
- In de constructor nooit een return doen, dit geeft een error. Ga dus werken met juiste foutafhandeling, door bijv. exceptions te gebruiken.

Ik denk dat je eerst nog een paar maanden de basis van normale PHP moet leren voordat je de stap maakt naar OOP. En mocht je door willen met OOP dan raad ik je aan eerst nog heel goed het object geörienteerd denken onder de knie te krijgen. Want dat heb je nu nog niet.
 
Nick van der heijden

nick van der heijden

18/12/2011 19:14:41
Quote Anchor link
weet ik ik ben net 3 dagen bezig met oop dus vandaar dit topic over wat ik beter kan doen of hoe het anders kan moet gewoon wat tips om goed te beginnen ;)
 
Obelix en Idefix

Obelix en Idefix

18/12/2011 20:02:24
Quote Anchor link
Nick van der heijden op 18/12/2011 19:14:41:
moet gewoon wat tips om goed te beginnen ;)


Begin dan eens met het typen in het Nederlands. Dus met wat punten, komma's en hoofdletters. Je tekst zal daardoor veel beter leesbaar zijn.
 
Reshadd farid
Redacteur

reshadd farid

22/12/2011 23:50:57
Quote Anchor link
probeer is zoiets
dit script hieronder connect met je database, sla het op in een php bestandje bijvoorbeeld connection.php

en als je het wilt gebruiken dan hoef je alleen include("connection.php"); tussen php tags te zetten en klaar. wilde je zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$server
= "servernaam";
$gebruiker = "gebruikersnaam sql";
$wachtwoord = "wachtwoord sql";
$db = "database naam";

$connectie = mysql_connect($server,$gebruiker,$wachtwoord)
or die ("Kon niet connecten met de server");

mysql_select_db($db,$connectie)
or die ("Kon de database niet selecteren");
?>
 
Wouter J

Wouter J

23/12/2011 00:24:00
Quote Anchor link
@reshadd, allereerst vraagt de TS om oop niet normaal PHP en ten tweede is het script dat jij geeft fout:
- Geen foutafhandeling
- or die is totaal slecht en moet je nooit gebruiken, niemand gaat dood als hij iets fout doet. Handel een script mooi af.
 
Pim -

Pim -

23/12/2011 01:06:33
Quote Anchor link
Quote:
- In een functie mag je nooit iets echoën. Altijd moet je de waarde returnen, niet de functie maar de verwerking van de functie moet bepalen hoe een gebruiker het te zien krijgt.

Hoe krijg ik dan ooit iets op mijn scherm te zien? ;)
 
- Aar -

- Aar -

23/12/2011 01:20:35
Quote Anchor link
Je method outputten in de view-laag ;-)?
Gewijzigd op 23/12/2011 01:20:59 door - Aar -
 
Pim -

Pim -

23/12/2011 01:25:50
Quote Anchor link
Nee, die netjes bufferen en dan nog lekker je response door je plugin systeem gooien en dan het response object mooi laten outputten :)
 
Nick van der heijden

nick van der heijden

23/12/2011 01:35:12
Quote Anchor link
Ik heb het al voor elkaar gekregen de echo heb ik buiten me class gezet.
Echo geef ik nu mee via de object dus zo
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$conn= new db ('localhost','user','wachtwoord');
if(!$conn->connect()){
echo"Kan niet verbinden";
}
else{
echo"Verbonden";
}

Allen moet z'n tijd krijgen om het te leren ;)
En met een beetje hulp moet dat wel goed komen lijkt me
 
- Aar -

- Aar -

23/12/2011 02:12:47
Quote Anchor link
Of een exception throwen vanuit de class, als de connect dood loopt.
 
Wouter J

Wouter J

23/12/2011 09:16:30
Quote Anchor link
@Pim, het kan zijn dat ik je opmerking waarschijnlijk verkeerd begrijp. Maar in een functie return je een waarde en in de verwerking ga bepalen hoe dit eruit komt. Want niet alles hoeft geëchoëd te worden, het kan ook gelogd worden o.i.d.

@nick, dat ziet er al een stukje beter uit. Maar de meest gebruikte en beste manier van foutafhandeling is exceptions. Lees ook eens deze tutorial: Foutafhandeling in PHP (Error Handling) - Exceptions[/php].
 
Nick van der heijden

nick van der heijden

23/12/2011 11:05:40
Quote Anchor link
Jaa met dat throwen moet ik nog even kijken hoe dat werkt.
zover ik even snel heb gekeken kan het niet heel lastig zijn als je beetje kan programmeren :) Dan snap je het wel ongeveer.
Thanks voor de reacties en de hulp
 
Pim -

Pim -

23/12/2011 11:07:01
Quote Anchor link
Off topic @Wouter
Wanneer je alleen objecten gebruikt, moet er dus ook een object zijn dat het resultaat output. Dit uiteraard een ander object dan datgene dat de content genereert, maar het is degelijk een object. Die output kan dan natuurlijk naar een file/DB/gewone output/eoa web API enz.
symfony2:
$response->send();
Gewijzigd op 23/12/2011 11:07:26 door Pim -
 
Reshadd farid
Redacteur

reshadd farid

23/12/2011 14:28:38
Quote Anchor link
Wouter J op 23/12/2011 00:24:00:
@reshadd, allereerst vraagt de TS om oop niet normaal PHP en ten tweede is het script dat jij geeft fout:
- Geen foutafhandeling
- or die is totaal slecht en moet je nooit gebruiken, niemand gaat dood als hij iets fout doet. Handel een script mooi af.


fout is een groot woord want hij doet het.. maar het kan idd netter ;)
 



Overzicht Reageren

Get Adobe Flash player