database openen?
Pagina: « vorige 1 2 3 volgende »
De code om mijn array voor een eerste maal te vullen is de volgende:
Quote:
$b=array('programmanaam'=>'Test','versienummer'=>'0.1.0.alpha.8','host'=>'localhost','gebruiker'=>'Test','wachtwoord'=>'Test','database'=>'db_test');
Maar op een later tijdstip gaat deze door een form, waarna ze weer anders kunnen zijn.
Gewijzigd op 15/08/2017 22:06:24 door Frits van Leeuwen
maar of die procedure echt nodig is, betwijfel ik. Tenzij je met meerdere mensen massaal tegelijkertijd config-files zit te schrijven.
Het is immers ook een stuk code die ik uit mijn archief gehaald heb.
Ik kreeg er een foutmelding op. Dus ik ben gaan zoeken. Voor als nog heb ik geen fout kunnen ontdekken. Ik haal de functies nu regel voor regel over. Natuurlijk kijk ik naar de commandostructuur. En na iedere kopieerslag test ik weer.
Wat wint degene die de foutmelding raadt?
Inmiddels weer een stapje verder.
Ik heb de array naar een ini-bestand kunnen schrijven. Ik heb de functies die Ariën schreef, samengevoegd en terug gebracht in de code. Nu geen losse functie meer. Dat kan ik misschien later wel weer invoeren.
Maar hoe krijg ik nu categorie-kopen er in? Moet ik daarvoor een aparte schrijfopdracht maken? En na een categorie een lege regel. Ook een losse schrijfopdracht? Of werkt dat anders in combinatie met een array?
Voor nu is het weer genoeg. slaap lekker allemaal en tot de volgende keer.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$config = array(
'database' => array(
'host' => 'localhost',
'gebruiker' => 'Test',
'wachtwoord' => 'Test',
'database' => 'db_test'
),
'general' => array(
'programmanaam' => 'test',
'versienummer' => '0.1.0.alpha.8'
)
);
function write_config($filename, $config) {
$output = '';
foreach ($config as $section => $settings) {
$output .= '[' . $section . ']' . PHP_EOL;
foreach ($settings as $key => $value) {
$output .= $key . ' = ' . $value . PHP_EOL;
}
$output .= PHP_EOL;
}
file_put_contents($filename, $output);
}
?>
$config = array(
'database' => array(
'host' => 'localhost',
'gebruiker' => 'Test',
'wachtwoord' => 'Test',
'database' => 'db_test'
),
'general' => array(
'programmanaam' => 'test',
'versienummer' => '0.1.0.alpha.8'
)
);
function write_config($filename, $config) {
$output = '';
foreach ($config as $section => $settings) {
$output .= '[' . $section . ']' . PHP_EOL;
foreach ($settings as $key => $value) {
$output .= $key . ' = ' . $value . PHP_EOL;
}
$output .= PHP_EOL;
}
file_put_contents($filename, $output);
}
?>
Dit is even uit de losse pols, werking is niet gegarandeerd.
Gewijzigd op 15/08/2017 23:29:43 door Ben van Velzen
Ik was zo ver dat ik met mijn array $b[host] kon inzetten als ik die variabele nodig heb. Maar hoe werkt dat met deze zelfde variabele in een array met een array er in?
Ik denk dat je het jezelf alleen maar moeilijk(er) aan het maken bent op dit moment. En daarbij mogelijk uit het oog verliest wat belangrijk(er) is.
Gewijzigd op 16/08/2017 10:46:23 door Thomas van den Heuvel
Door $b['database']['host'] te gebruiken. Die quotes moet je niet vergeten, dat levert alleen maar gezeur op.
Ik moet wel zeggen dat ik het eens met met Thomas, maar volgens mij is dit ook al eerder aangehaald in het topic.
NB: Om uit parse_ini_file dezelfde array terug te krijgen als die je in de genoemde functie stopt kun je het 2e argument op true zetten, dus $config = parse_ini_file('je_bestand.ini', true);
Gewijzigd op 16/08/2017 11:14:27 door Ben van Velzen
Bij bestanden met een .php extentie hoeft dit niet, omdat de variabelen en waardes gewoon door de PHP-parser gaan, en de output dan toch leeg is. Hoewel het als extra veiligheidslaag wel aan te raden is om het alsnog buiten de webroot te zetten.
Bovendien kan je de instellingen ook in een PHP-array zetten zodat je ze kan gebruiken bij debugging bijvoorbeeld.
Het punt is dat je een reden zou moeten hebben om deze constructie te gebruiken. Als je niet kunt motiveren waarom je je in allerlei bochten aan het wringen bent ben je enkel onnodig moeilijk aan het doen.
En dan je bestand bijvoorbeeld config.ini.php noemen. Is uiteraard ook weer moeilijk doen terwijl het ook makkelijk kan.
Gewijzigd op 16/08/2017 11:39:53 door Ben van Velzen
Waarom is het altijd op dit forum dat er nooit afgeweken wordt van het ingeslagen pad? Mensen die reageren gaan vaak (altijd?) mee met wat de TS wil, zonder dat men precies weet wat de TS voor ogen heeft :/. Misschien zit de TS er wel gewoon naast?
Stel dat de ingeslagen weg bij nader inzien niet goed was, zitten we hier met zijn allen een hoop tijd te verdoen. Het lijkt mij de verantwoordelijkheid van de TS om zijn/haar zaak hard te maken en kan motiveren waarom deze denkt dat hij/zij met de gekozen aanpak op de goede weg is. Dit klakkeloos aannemen lijkt mij een vergissing.
Waarom lijken jullie dit niet te zien? Of is dit forum sowieso een soort afhaalchinees, iemand doet een bestelling en deze wordt altijd geleverd? Adje hoc, volgende probleem?
Om op jouw punt terug te komen hoe zet ik database gegevens rechtstreeks in php?
Mijn gedachte zijn dat ik bij nu nog onbekende mensen mijn programma wil kunnen draaien. Ik bevraag eerst in een installatie bestand de gebruiker. Waar ik een database kan stallen. Het is niet mijn bedoeling om het over internet te laten draaien. Wel wil ik het web-based hebben en via een netwerk of lokaal moet het dan gaan werken.
Op dit moment sta ik aan het begin van de ontwikkeling van dat programma. Maar ook ik zelf wil via dit programma ook een hoop leren over php. Ik kom al een heel eind, maar ik loop zo af en toe ergens tegen aan. Ik heb op advies van dit forum mijn denkwijze om gegooid. Daarna kreeg ik nieuw inzichten vanuit dit forum. Deze probeer ik direct toe te passen.
Verder is het misschien verstandig om eerst PHP te leren en vervolgens pas een programma/webapplicatie gaan schrijven, probeer eerst gewoon wat praktische kennis op te doen.
je had een mooi stukje code geschreven.(15/08/2017 23:27:59) Bedankt hier voor. Helemaal begrijpen doe ik het nog niet , maar daar kom ik wel uit.
Alleen voor jouw informatie (en dat van alle lezers die er iets mee willen) zet deze code alles in 1 lange string.
EDIT: net de code even getest, als ik de code op Windows laat draaien krijg je Windows enters, als je het op een Linux of OSX machine laat draaien wordt het anders. Fatsoenlijke editors snappen het dan nog wel, het kladblokje van Windows alleen niet.
Gewijzigd op 16/08/2017 15:58:43 door Ben van Velzen
Nu lijk ik weer terug te zijn bij het begin van deze topic. Ik heb de installatie procedure aangepast, zodat ik nu een gebruikelijke versie van een ini-bestand heb. Nu is het inlezen weer aan de beurt.
Het probleem bleek te zijn, dat ik een spatie achter de inhoud van de variabele kreeg. Een oplossing die ik aangereikt kreeg, was parse_ini_file(). Hiervoor had ik natuurlijk wel een goed ini-bestand nodig. Deze is me hier goed aangegeven. Bedankt allemaal voor zover.
Ik ga nu speuren hoe ik parse_ini_file() kan gaan gebruiken.
Nou, technisch gezien kreeg je geen spatie, het was een enter die als spatie werd weergegeven. Dat is een artifact van fread, file etc. Regeleindes worden gewoon aan de data toegevoegd, maar wordt ook als delimiter gebruikt. Een beetje een "trap for young players".
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
<title>Basisbestand</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header>
</header>
<content>
<?php
$b=print_r(parse_ini_file("test.ini",true));
echo $b;
//database openen
echo $b['algemeen']['programmanaam'];
?>
</content>
<footer>
</footer>
</body>
</html>
<html>
<head>
<title>Basisbestand</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header>
</header>
<content>
<?php
$b=print_r(parse_ini_file("test.ini",true));
echo $b;
//database openen
echo $b['algemeen']['programmanaam'];
?>
</content>
<footer>
</footer>
</body>
</html>
Toevoeging op 17/08/2017 00:09:13:
Met de volgende code (Die heb ik nu om een ini-bestand in te lezen, krijg ik niets leesbaars in beeld. Dus ook geen foutmelding. Wat doe ik dan niet goed. Ik heb het gevoel dat ik dichtbij ben, maar toch ook nog net niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
<title>Basisbestand</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header>
</header>
<content>
<?php
$b=print_r(parse_ini_file("test.ini",true));
echo $b;
//database openen
echo $b['algemeen']['programmanaam'];
?>
</content>
<footer>
</footer>
</body>
</html>
<html>
<head>
<title>Basisbestand</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header>
</header>
<content>
<?php
$b=print_r(parse_ini_file("test.ini",true));
echo $b;
//database openen
echo $b['algemeen']['programmanaam'];
?>
</content>
<footer>
</footer>
</body>
</html>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 17/08/2017 16:04:28 door - Ariën -