Hallo allemaal,

Ik kom er niet uit. Ik zoek al een hele tijd, maar het wordt me niet duidelijk.

Ik heb in een installatie een database "db_test" laten maken met een user "Test" (ww="Test") en het tekst bestand.ini. In bestand.ini staat alle informatie die nodig is voor het vervolg. Ik heb het gecheckt en dat klopt allemaal.

Bij het openen/starten van "Index.php", haal ik de uit "bestand.ini" binnen, en ik geef ze aan variabelen. Dan wil ik de database activeren en het aantal records tellen dat in de tabel [tabel_administratires] staat. Aan dit laatste durf ik niet goed te beginnen, omdat ik deze melding krijg:

mysql:dbname=db_test ;host=localhost
(2) DB ERROR: invalid data source name

Wie kan me hierin bijstaan?

Index.php
<!DOCTYPE html>
<html>
    <head>
		<title>Basisbestand</title>
		<link rel="stylesheet" type="text/css" href="css/style.css">    
	</head>
	
	<body>
	    <header>
		</header>
		<content>
			<?php
				try {
					//gegevens binnenhalen
					$a = fopen("bestand.ini", "r");
					$b = file("bestand.ini");
						$programmanaam = $b[0];
						$versie = $b[1];
						$hst = $b[2];
						$user = $b[3];
						$pass = $b[4];
						$db = $b[5];
					fclose($a);
				} catch (PDOException $e) {
					die("(1) DB ERROR: ". $e->getMessage());
				}
				
				//database openen
				try {
					$mysql="mysql:dbname=" . $db . ";host=" . $hst;
					echo $mysql . "<br>";
					$dbh = new PDO('$mysql', $user, $pass);
					$dbh->setAttribute( PDO::ATTR_PERSISTENT, TRUE );
					$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
				} catch (PDOException $e) {
					die("(2) DB ERROR: ". $e->getMessage());
				}
			?> 
		</content>
		<footer>
		</footer>
    </body>
</html>



Bestand.ini
Test
0.1.0.alpha.8
localhost
Test
Test
db_test

Ik heb je bericht even tussen code-tags gezet. Dat is een stuk leesbaarder.
Zou je dat voortaan ook zelf willen doen?

Ik denk dat er toch iets mis is met de php-ondersteuning van de NAS, of je hebt een heel rare bug in PHP getriggerd. Laten we de code eens meer uit elkaar vlechten:


<?php
$parse = parse_ini_file("test.ini",true);
echo "<pre>".print_r($parse,true)."</pre>";
?>

Geeft dit wel een mooie array-boom?
Geweldig Ariën,... <pre>..</pre> is de oplossing denk ik. Hiermee lukt het wel. Ik snap het nog niet helemaal, maar daar kom ik wel uit denk ik.
Dank voor je geduld en moeite. Wat mijbetreft kan kan deze topic gesloten worden.

Ik ben blij.
Fijn dat het nu lijkt te werken. Ik heb geen idee waarom de functie niet herkend werd, maar misschien hielp het wel met het uitelkaar trekken van de code. Die <pre> is bedoeld om het als preformatted tekst te tonen, zodat alle enters en spaties netjes zichtbaar zijn.
Over die foutmelding: ik zie 2 spaties staan voor de functienaam ipv de gebruikelijke 1. Is hier mogelijk iets misgegaan bij een copy/paste?
Ik heb zelf wel de indruk dat er het een en ander mis gaat doordat ik code kopieer. Dit bleek vooral bij de laatste assistentie die ik hier in de groep kreeg. Door het copy/paste werkte het niet. maar na opnieuw intikken werkte het wel. Ik dacht dit eerder ook al gemerkt te hebben, maar was er toen nog niet zo zeker van.
Voortaan maar overtikken i.p.v. copy/past.
Welke editor gebruik je eigenlijk?
Misschien helpt het als je eerst copy/paste in kladblok en het dan vanuit daar weer copy/paste naar je editor.
Notepad++
idd... copy/paste naar kladblok is ook een goed en snelle optie
Bedankt.

Maar vervuilen we hier niet het forum? Of is deze vraagstellingen en antwoorden van belang tot de vraag die ik stelde aan het begin?

Toch nog eens allemaal bedankt voor de lieve snelle assistentie.
Mocht je toch nog je config 'gewoon' als PHP op willen slaan (ivm alle genoemde voordelen), dan is dat niet zo heel moeilijk:


file_put_contents('config.php',"<?php\n\nreturn " . var_export($config,true) . ';');


In je script doe je dan:


$config = require('config.php);

Reageren