Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Natuurlijk kan je ook een configuratiebestandje maken met de belangrijkste variabelen. Eventueel zijn beide oplossingen te combineren, het ligt er een beetje aan hoe complex je script is (een simpel script is deze moeite m.i. niet waard
db.inc.php
1
2
3
4
5
6
7
8
9
| <? $DB["server"] = "localhost"; $DB["user"] = "user"; $DB["pass"] = "pass"; $DB["database"] = "dbtje"; $connection_link = mysql_connect($DB["server"],$DB["user"],$DB["pass"]); @mysql_select_db($DB["database"]); ?> |
In je script:
1
2
3
| <? include_once("db.inc.php"); ?> |
[ Voor 42% gewijzigd door Fles op 24-10-2005 12:15 ]
1
2
| define("DB_USER", "xxxx"); define("DB_PASS", "xxxx"); |
Voordeel hiervan is dat deze variabelen nooit overschreven kunnen worden in je code
ok mooi dus dan zat ik al redelijk in de goede richtingGraveheart schreef op maandag 24 oktober 2005 @ 12:14:
In princiepe hoef je die niet global te maken. Als je hem include zit hij al in je script.
db.inc.phpPHP:
1 2 3 4 5 6 7 8 9 <? $DB["server"] = "localhost"; $DB["user"] = "user"; $DB["pass"] = "pass"; $DB["database"] = "dbtje"; $connection_link = mysql_connect($DB["server"],$DB["user"],$DB["pass"]); @mysql_select_db($DB["database"]); ?>
In je script:PHP:
1 2 3 <? include_once("db.inc.php"); ?>
ik miste inderdaad nog de db-connect maar eht ging in het voorbeeld van mij om het id
maar nu zie ik een @ staan bij je script... wat houd dit in???
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Het zijn dan ook geen variabelen, maar constants, om precies te zijn.Wacky:
Nog netter voor configuraties is define:
Voordeel hiervan is dat deze variabelen nooit overschreven kunnen worden in je code
When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.
Is idd netterWacky schreef op maandag 24 oktober 2005 @ 12:16:
Nog netter voor configuraties is define:
code:
1 2 define("DB_USER", "xxxx"); define("DB_PASS", "xxxx");
Voordeel hiervan is dat deze variabelen nooit overschreven kunnen worden in je code
Een @ is om eventuele foutmeldingen niet weergeven.
[ Voor 105% gewijzigd door Fles op 24-10-2005 12:24 ]
@ onderdrukt foutmeldingen van PHP en moet je eigenlijk alleen gebruiken als je zeker weten dat die functie niet fout kan gaan, of als je zelf een errorhandler hebt geschreven.Tijgertje84 schreef op maandag 24 oktober 2005 @ 12:18:
[...]
ok mooi dus dan zat ik al redelijk in de goede richting
ik miste inderdaad nog de db-connect maar eht ging in het voorbeeld van mij om het id
maar nu zie ik een @ staan bij je script... wat houd dit in???
De @ kan worden gebruikt om foutmeldingen te onderdrukken, dus dan krijg je niet een error op je scherm als de database bijvoorbeeld offline is.Tijgertje84 schreef op maandag 24 oktober 2005 @ 12:18:
[...]
ok mooi dus dan zat ik al redelijk in de goede richting
ik miste inderdaad nog de db-connect maar eht ging in het voorbeeld van mij om het id
maar nu zie ik een @ staan bij je script... wat houd dit in???
When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.
ik zag dat define stukje, maar kan dit wat hieronder staat ook??Wacky schreef op maandag 24 oktober 2005 @ 12:16:
Nog netter voor configuraties is define:
code:
1 2 define("DB_USER", "xxxx"); define("DB_PASS", "xxxx");
Voordeel hiervan is dat deze variabelen nooit overschreven kunnen worden in je code
4
5
6
7
8
9
10
| define($DB,"xxxx") ; define($DB_USER, "xxxx"); define($DB_PASS, "xxxx"); define($DB_DB, "xxxx"); $conn = mysql_connect($DB,$DB_USER,$DB_PASS); @mysql_select_db($DB_DB); |
[ Voor 10% gewijzigd door Tijgertje84 op 24-10-2005 12:25 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Alleen gebruik je dan ipv
1
| define($DB,"xxxx") ; |
dit
1
| define("DB","xxxx") ; |
Tenzij je de naam van DB de waarde van $DB wilt hebben
[ Voor 82% gewijzigd door Fles op 24-10-2005 12:30 ]
Verwijderd
Overigens kun je ook beter 'require' (of require_once) gebruiken dan 'include'. Immers is het een noodzakelijk bestand voor je pagina.
In jouw geval zou ik overigens zeker niet werken met error-suppression door @. In tegendeel zou ik juist ervoor zorgen dat je *alle* errors altijd te zien kreeg en daarom voor de zekerheid het volgende helemaal bovenaan je scripts toevoegen:
1
| error_reporting(E_ALL); |
Je zit duidelijk in een leer- / ontwikkelfase en je kunt pas goed debuggen als je weet waar je fouten hebt. Fouten onderdrukken is dan niet handig.
When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.
Nee, lees de manual even.Tijgertje84 schreef op maandag 24 oktober 2005 @ 12:25:
[...]
ik zag dat define stukje, maar kan dit wat hieronder staat ook??
PHP:
4 5 6 7 8 9 10 define($DB,"xxxx") ; define($DB_USER, "xxxx"); define($DB_PASS, "xxxx"); define($DB_DB, "xxxx"); $conn = mysql_connect($DB,$DB_USER,$DB_PASS); @mysql_select_db($DB_DB);
vond dit op de site en de volgende code geeft het heel duidelijk weer
4
5
6
7
8
9
10
11
12
13
14
| function my_error_handler(.......) { if(error_reporting() == 0) // error_reporting() = 0, so it was called with @ in front of it { // do nothing } else { // do something } } |
was ff weg had pauze
ok bedankt dus ik heb het gewoon zo opgelost
4
5
6
7
8
9
10
11
| define("DB","***") ; define("DB_USER", "***"); define("DB_PASS", "***"); define("DB_DB", "***"); $conn = mysql_connect("DB","DB_USER","DB_PASS"); mysql_select_db("DB_DB") or die("Unable to select database"); //ipv @ |
[ Voor 33% gewijzigd door Tijgertje84 op 24-10-2005 13:02 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Een ander voordeel is dat de constanten altijd beschikbaar zijn, ook in functies zonder ze eerst als global te moeten declareren, zoals met variabelen.Graveheart schreef op maandag 24 oktober 2005 @ 12:20:
[...]
Is idd netterHoewel het natuurlijk niet meer uit maakt of deze variabelen overschreven worden. Tussen de declaratie en de connectie komt toch geen verdere code te staan. Ik ga er niet vanuit dat je dingen in je connectie script propt
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Het kán, maar doet niet wat je wilt. Maar waarom zou je het willen, als je "DB" definieert, kun je vervolgens overal door DB te gebruiken de juiste setting accessen:Tijgertje84 schreef op maandag 24 oktober 2005 @ 12:25:
[...]
ik zag dat define stukje, maar kan dit wat hieronder staat ook??
PHP:
4 5 6 7 8 9 10 define($DB,"xxxx") ; define($DB_USER, "xxxx"); define($DB_PASS, "xxxx"); define($DB_DB, "xxxx"); $conn = mysql_connect($DB,$DB_USER,$DB_PASS); @mysql_select_db($DB_DB);
1
2
3
4
| define("DB", "xxx"); // ,,, mysql_connect(DB, DB_USER, DB_PASS); |
En dat werkt dus niet, tenzij je databaseserver echt "DB" heet, en je username "DB_USER" is, etc.Tijgertje84 schreef op maandag 24 oktober 2005 @ 12:31:
ok bedankt dus ik heb het gewoon zo opgelost
PHP:
4 5 6 7 8 9 10 11 define("DB","***") ; define("DB_USER", "***"); define("DB_PASS", "***"); define("DB_DB", "***"); $conn = mysql_connect("DB","DB_USER","DB_PASS"); mysql_select_db("DB_DB") or die("Unable to select database"); //ipv @
[ Voor 30% gewijzigd door .oisyn op 24-10-2005 13:07 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
en dat werktTijgertje84 schreef op maandag 24 oktober 2005 @ 12:31:
ok bedankt dus ik heb het gewoon zo opgelost
PHP:
4 5 6 7 8 9 10 11 define("DB","***") ; define("DB_USER", "***"); define("DB_PASS", "***"); define("DB_DB", "***"); $conn = mysql_connect("DB","DB_USER","DB_PASS"); mysql_select_db("DB_DB") or die("Unable to select database"); //ipv @
ik zou het zo doen
1
| $conn = mysql_connect(DB,DB_USER,DB_PASS); |
jullie hebben gelijkErkens schreef op maandag 24 oktober 2005 @ 13:08:
[...]
en dat werkt
ik zou het zo doen
PHP:
1 $conn = mysql_connect(DB,DB_USER,DB_PASS);
was gewoon ff aan het testen en kreeg zelf een melding want omdat ik die @ heb weggehaald heb ik deze errors erbij gezet:
4
5
| $conn = mysql_connect(DB,DB_USER,DB_PASS) or die("Unable to connect to SQL server"); mysql_select_db(DB_DB) or die("Unable to select database"); |
en idd ik kreeg de error
nu niet meer
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Ook hier heb je weinig mee te maken in deze situatie natuurlijk.oisyn schreef op maandag 24 oktober 2005 @ 13:04:
[...]
Een ander voordeel is dat de constanten altijd beschikbaar zijn, ook in functies zonder ze eerst als global te moeten declareren, zoals met variabelen.
zoals het voorbeeldje niet nee, maar wat ik zelf altijd doe is een connectie maken in een simpele class welke gebruik maakt van dergelijke constanten voor authenticatie etc.Graveheart schreef op maandag 24 oktober 2005 @ 13:32:
Ook hier heb je weinig mee te maken in deze situatie natuurlijk
Hierdoor kan ik de settings eenvoudig in een andere file (eventueel buiten de webroot) zetten zonder dat mijn applicatie daarop stuk gaat omdat er een zooi "global" moet zijn, wat je liever wilt voorkomen voor het overzicht.
Daarnaast zijn dit gewoon waarden die je eenmalig insteld en tijdens de loop van de applicatie niet veranderd. Waarom dan een variabele gebruiken?