PHP Инсталатор на система

DirectX

Registered
Здравейте :lol:
Интересуваме как да направя, че когато системата се инсталира за 1-ви път в config.php файла трябва да се въведе връзката с базата данни. Сега съм го направил ръчно

PHP:
$dbhost = "";
$dbuser = "";
$dbpass = "";
$dbname = "";
но как тези 4-ти променливи да могат да се редактират по всяко време...
мислих си нещо за fwrite, но вие какво предлагате и ако fwrite ще свърши работа ще помоля само за един кратък пример как ще стане за 4-те променливи за връзката с базата данни
 
1. http://php.net/manual/en/function.fopen.php
2. http://php.net/str_replace
3. http://php.net/fwrite
4. http://php.net/fclose


config.php
PHP:
<?php
$dbhost = "<<HOST>>";

$dbuser = "<<USER>>";

$dbpass = "<<PASS>>";

$dbname = "<<DBNAME>>";
?>

Отваряш файл с 1(). След това с 2() търсиш за <<HOST>>, <<PASS>>, <<USER>>, <<DBNAME>> и заместваш с въведените чрез $_POST стойности. Записваш с 3() и затваряш файла 4().

: ))
 
PHP:
$host = $_POST['host'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$database = $_POST['database'];
echo "$host - $user - $pass - $database";

$configOpen = fopen("connect.db.php", r+);
$host_rpl = str_replace("<<HOST>>", "$host");
$user_rpl = str_replace("<<USER>>", "$user");
$pass_rpl = str_replace("<<PASS>>", "$pass");
$db_rpl = str_replace("<<DBNAME>>", "$database");
fwrite($configOpen, $host);
fwrite($configOpen, $user);
fwrite($configOpen, $pass);
fwrite($configOpen, $database);
fclose($configOpen);
така ли?
но ми дава грешка, но не знам къде (страницата не се зарежда)
В уебсайта възникна грешка при извличането на http://localhost/install.php. Възможно е да не работи поради профилактика или неправилно конфигуриране.
 
http://bg2.php.net/str_replace
str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
PHP:
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
аргумент 1 = това което ще търсип да замениш
аргумент 2 = това с което ще го заместиш
аргумент 3 = стринга който ще подаваш, този стринг който ще търсиш в него.
 
извинявам се, но някой може ли да ми даде поне 1 примерно в моя случай, защото явно не ми се получава ... този 3-тия аргумент не мога да разбера какво да сложа в него.. :o
 
PHP:
$configOpen = fopen("connect.db.php", r+);// отваряш файла
$fread =  fread(#configOpen,filesize('connect.db.php'));

$fread = str_replace("<<HOST>>", "$host",$fread);
$fread = str_replace("<<USER>>", "$user"),$fread;
$fread = str_replace("<<PASS>>", "$pass",$fread);
$fread = str_replace("<<DBNAME>>", "$database",$fread);
fwrite($configOpen, $host);
fwrite($configOpen, $user);
fwrite($configOpen, $pass);
fwrite($configOpen, $database);
fclose($configOpen);

Според примера който ти е даден 2 пъти , спореполагам, че трябва да е нещо такова.
 
и резултата е това:

PHP:
<?php
$dbhost = "<<HOST>>";

$dbuser = "<<USER>>";

$dbpass = "<<PASS>>";

$dbname = "<<DBNAME>>";
$connection = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die("������ �� ���� �� �� ������ ��� ������ ����� 1");
$db = mysql_select_db("$dbname",$connection)or die("������ �� ���� �� �� ������ ��� ������ ����� 2"); 
?>
localhostuser_testpass_testdb_test
 
DirectX каза:
и резултата е това:

PHP:
<?php
$dbhost = "<<HOST>>";

$dbuser = "<<USER>>";

$dbpass = "<<PASS>>";

$dbname = "<<DBNAME>>";
$connection = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die("������ �� ���� �� �� ������ ��� ������ ����� 1");
$db = mysql_select_db("$dbname",$connection)or die("������ �� ���� �� �� ������ ��� ������ ����� 2"); 
?>
localhostuser_testpass_testdb_test
Опс моя грешка. Разгледай по-добре какво правят фукциите и кави аргументи има.
PHP:
$configOpen = fopen("connect.db.php", r+);// отваряш файла
$fread =  fread($configOpen,filesize('connect.db.php'));

$fread = str_replace("<<HOST>>", "$host",$fread);
$fread = str_replace("<<USER>>", "$user"),$fread;
$fread = str_replace("<<PASS>>", "$pass",$fread);
$fread = str_replace("<<DBNAME>>", "$database",$fread);
fwrite($configOpen, $fread);

fclose($configOpen);


Идеята е следната:
Отваряш файла, четеш, реплейсваш, записваш на ново всичко и накрая , но не и по-важност затваряш файла.Ако не го затвориш, има голяма възможност да не се запишат данните.
Тъй като Харддиска е най-бавната памет в компютъра, и файла който отваряш утива в рамта, борави се с него, след което се затваря файла, кто прехвърля нещата от рамта в харда.
 
На мен ми беше д/г ясна идеята, само изпълнението ми куцаше :D
Сега е долу-горе точно, но прави дублиране:
:roll:
PHP:
<?php
$dbhost = "<<HOST>>";
$dbuser = "<<USER>>";
$dbpass = "<<PASS>>";
$dbname = "<<DBNAME>>";
$connection = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die("������ �� ���� �� �� ������ ��� ������ ����� 1");
$db = mysql_select_db("$dbname",$connection)or die("������ �� ���� �� �� ������ ��� ������ ����� 2"); 
?>
<?php
$dbhost = "localhost";
$dbuser = "user_test";
$dbpass = "pass_test";
$dbname = "db_test";
$connection = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die("������ �� ���� �� �� ������ ��� ������ ����� 1");
$db = mysql_select_db("$dbname",$connection)or die("������ �� ���� �� �� ������ ��� ������ ����� 2"); 
?>
 

Back
Горе