Czemu nie moge sie połączyć z bazą danych?

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Aver

Czemu nie moge sie połączyć z bazą danych?

Post autor: Aver »

Mam plik pierwszy install.html:

Kod: Zaznacz cały

<html>
<head>
<title>Tworzenie bazy danych</title>
</head>
<body>
<table>
<td width=30>
<form action="do_db.php" method="post">
<fieldset><legend align="center"><b>System Newsów:
</b></legend>
<b>Login:</b><br>
<input type="text" name="userlogin" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066"><br>
<br>
<b>Hasło:</b><br>
<input type="password" name="userpassword" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066"><br>
<br>
<b>Powtórz Hasło:</b><br>
<input type="password" name="userpassword1" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066"><br>
<br>
<b>Email:</b><br>
<input type="text" name="mail" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066"><br>
</fieldset>
<fieldset><legend align="left"><b>Baza danych:</b></legend>
<b>Adres:</b><br>
<input type="text" name="adres" value="np. twoja-domena.pl" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066"><br>
<br>
<b>Login:</b><br>
<input type="text" name="login" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066"><br>
<br>
<b>Hasło:</b><br>
<input type="password" name="password" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066"><br>
</fieldset>
<br>
<input type="submit" value="Instaluj" style="font-family:verdana, tahoma, sans-serif; font-size:11px; color:#000066; border: 1px solid #000066">
</form>
</td>
</table>
</body>
</html>
Z nim niema problemów wszystko pięknie działa.
Ale problem pojawia siegdy dane z formulaża zostana przesłane do pliku drugiego:

Kod: Zaznacz cały

<?
if($userpassword == $userpassword1)
{
$filename1 = "adres.txt";
$filename2 = "login.txt";
$filename3 = "password.txt";

$open = fopen($filename1, "a") or die("Nie udało się utworzyć pliku pierwszego.");

$write = fwrite($open, $adres) or die("Próba zapisania do pliku pierwszego nie powiodła się.");

fclose($open);

$open = fopen($filename2, "a") or die("Nie udało się utworzyć pliku drugiego.");

$write = fwrite($open, $login) or die("Próba zapisania do pliku drugiego nie powiodła się.");

fclose($open);

$open = fopen($filename3, "a") or die("Nie udało się utworzyć pliku trzeciego.");

$write = fwrite($open, $password) or die("Próba zapisania do pliku trzeciego nie powiodła się.");

fclose($open);

$db_name = "news";

$table_name = $db_name;

$connection = mysql_connect("$adres", "$login", "$password")
or die("Próba połączenia nie powiodła się.");

$db_create = mysql_create_db($db_name, $connection) or die("Próba utworzenia nowej bazy danych o nazwie $db_name nie powiodła się1.");

$db = mysql_select_db($db_name, $connection) or die("Wybór bazy danych nie powiódł się.2");

$sql = "CREATE TABLE $table_name (id int (5) NOT NULL auto_increment, primary key (id) ,tytul text ,wstep text ,tresc text ,gif text, data text ,godzina text,  mail text, autor text )";

$create_first_table = mysql_query($sql, $connection) or die("Wykonanie zapytanie nie powiodło się.");

$sql = "CREATE TABLE users (id int (5) NOT NULL auto_increment, primary key (id) ,login text ,password text ,mail text, status text ,data text, godzina text ,autor text)";

$create_second_table = mysql_query($sql, $connection) or die("Wykonanie zapytanie nie powiodło się.3");

$status = "admin";
$data = date("d-m-Y");
$godzina = date("G:i:s");
$autor = "system";

$sql = "INSERT INTO users (id, login, password, mail, status, data, godzina, autor) VALUES (\"\", \"$userlogin\", \"$userpassword\", \"$mail\", \"$status\", \"$data\", \"$godzina\", \"$autor\")";

$add_record = mysql_query($sql, $connection) or die("Wykonanie zapytania nie powiodło się.4");

$tytul = "Moje hobby";

$wstep = "wstęp";

$tresc = "treść";

$gif = "php.gif";

$autor = $userlogin;

$ile = "0";

$sql = "INSERT INTO $table_name (id, tytul, wstep, tresc, gif, data, godzina, mail, autor) VALUES (\"\", \"$tytul\", \"$wstep\", \"$tresc\", \"$gif\", \"$data\", \"$godzina\", \"$mail\", \"$autor\")";

$add_record = mysql_query($sql, $connection) or die("Wykonanie zapytania nie powiodło się.5");

if($create_first_table and $db_create and $create_second_table and $add_record)
{
$txt = "Teraz system newsów jest gotowy do działania, w celu zapewnienia wiekszej ochrony systemu newsów radze usunąć plik <b>install.html</b>";
}
}
else
{
header("Location: install.html");
exit;
}
?>
<html>
<head>
<title>ANS: System newsów jest gotowy do działania.</title>
</head>
<body>
<? echo "$txt"; ?>
</body>
</html>
No i w drugim pliku cos jest źle jak testuje w domu to wszystko jest ok, a jak przeniose to na lycos.co.uk to cos sie kopie i wyswietla się: "Próba połączenia nie powiodła się."
Krzysztof Gaudy
Nowy
Nowy
Posty: 77
Rejestracja: sob sty 17, 2004 11:10 am
Lokalizacja: Kraków
Kontakt:

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Krzysztof Gaudy »

Witam !

Nie przeglądałem dokładnie, ale jak ładujesz identyczny kod na stronę, to zmienna $adres nie jest nigdzie zadeklarowana - powinien bo być host (w większości localhost, ale sprawdź jak to jest u Twojego dostawcy dokładnie).
Po prostu jest jakiś problem z połączeniem się w ogóle z bazą danych, nie doradzę Ci nic innego jak sprawdzić czy dokładnie wpisałeś hasło, login oraz host. Jak wpiszesz poprawnie to powinien komunikat zniknąć i wszystko powinno działać, tym bardziej że mówisz, iż na Twoim kompie działa wszystko.
Aver

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Aver »

Krzysztof Gaudy pisze: jak ładujesz identyczny kod na stronę, to zmienna $adres nie jest nigdzie zadeklarowana
adres, login i hasło wpisuje sie w install.html(kod pierwszy) a następnie przekazuje do do_db.php(kod drugi)
Krzysztof Gaudy
Nowy
Nowy
Posty: 77
Rejestracja: sob sty 17, 2004 11:10 am
Lokalizacja: Kraków
Kontakt:

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Krzysztof Gaudy »

Witam !

No to spróbuj najpierw połączyć się z bazą danych bez przekazywania danych formularzem.
Wpisz po prostu bez żadnych zmiennych:

mysql_connect("localhost", "login", "haselko12345");

Jak pójdzie to powracasz do kodu wyjsciowego i printujesz na stronie hasło, login, host które przekazujesz i sprawdzasz czy się zgadzają z prawdziwymi danymi.
Dochodź do błędu krokami... !
Aver

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Aver »

Mam konto na wlan.pl ale niestety bez mysql'a więc szukam darmowych baz danych, ale naraize mam problem bo free.komrel.net zrobili płatne, a freesql.com jest na sprzedaż, wiec pozostało mi sprawdzanie jak zachowuje sie mój kod w sieci na lycos.co.uk. I tak przy okazji jesli baza ma adres localhost(tak jest na lycosie) to czy można jakos z niej kozystać jeśli ma sie konto na innym serverze??
Hygin
Moderator
Posty: 650
Rejestracja: wt gru 31, 2002 10:29 pm
Lokalizacja: Wrocław
Kontakt:

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Hygin »

http://freepgs.com - 20mb, mySQL
Krzysztof Gaudy
Nowy
Nowy
Posty: 77
Rejestracja: sob sty 17, 2004 11:10 am
Lokalizacja: Kraków
Kontakt:

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Krzysztof Gaudy »

Witam !

Próbowałem kiedyś coś takiego zrobić i nie wyszło. To zależy od zabezpieczeń serwera z tego co wiem. Generalnie nie spotkałem się z takim, który udostępniałby coś takiego :-) .
Hygin
Moderator
Posty: 650
Rejestracja: wt gru 31, 2002 10:29 pm
Lokalizacja: Wrocław
Kontakt:

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Hygin »

To nie pozostaje nic innego jak zmienić serwer, lub skrypty.
Aver

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Aver »

Dzieki za dotychczasową pomoc, założyłem konto na freepgs.com (uaktywniłem juz php) a teraz mam problemy z mysql'em, jak juzwyśle dane z tego formularza do do_db.php to wyświetla mi sie taki komunikat:
Warning: Access denied for user: 'aver@localhost' (Using password: YES) in /home/httpd/vhosts/freepgs.com/httpdocs/aver/do_db.phpon line 8

Warning: MySQL Connection Failed: Access denied for user: 'aver@localhost' (Using password: YES) in /home/httpd/vhosts/freepgs.com/httpdocs/aver/do_db.php on line 8
Próba połączenia nie powiodła się.
Aha troche zmnieniłem kod do_db.php o to on:
<?
if($userpassword == $userpassword1)
{
$db_name = "news";

$table_name = $db_name;

$connection = mysql_connect("localhost", "aver", "to_oczywiscie_nie_jest_moje_tajne_hasełko") or die("Próba połączenia nie powiodła się.");

$db_create = mysql_create_db($db_name, $connection) or die("Próba utworzenia nowej bazy danych o nazwie $db_name nie powiodła się1.");

$db = mysql_select_db($db_name, $connection) or die("Wybór bazy danych nie powiódł się.2");

$sql = "CREATE TABLE $table_name (id int (5) NOT NULL auto_increment, primary key (id) ,tytul text ,wstep text ,tresc text ,gif text, data text ,godzina text, mail text, autor text )";

$create_first_table = mysql_query($sql, $connection) or die("Wykonanie zapytanie nie powiodło się.");

$sql = "CREATE TABLE users (id int (5) NOT NULL auto_increment, primary key (id) ,login text ,password text ,mail text, status text ,data text, godzina text ,autor text)";

$create_second_table = mysql_query($sql, $connection) or die("Wykonanie zapytanie nie powiodło się.3");

$userlogin = "aver";
$userpassword = "to_oczywiscie_nie_jest_moje_tajne_hasełko";
$mail = "[email protected]";
$status = "admin";
$data = date("d-m-Y");
$godzina = date("G:i:s");
$autor = "system";

$sql = "INSERT INTO users (id, login, password, mail, status, data, godzina, autor) VALUES (\"\", \"$userlogin\", \"$userpassword\", \"$mail\", \"$status\", \"$data\", \"$godzina\", \"$autor\")";

$add_record = mysql_query($sql, $connection) or die("Wykonanie zapytania nie powiodło się.4");

$tytul = "tytuł";

$wstep = "wstęp";

$tresc = "treść";

$gif = "php.gif";

$autor = $userlogin;

$ile = "0";

$sql = "INSERT INTO $table_name (id, tytul, wstep, tresc, gif, data, godzina, mail, autor) VALUES (\"\", \"$tytul\", \"$wstep\", \"$tresc\", \"$gif\", \"$data\", \"$godzina\", \"$mail\", \"$autor\")";

$add_record = mysql_query($sql, $connection) or die("Wykonanie zapytania nie powiodło się.5");

if($create_first_table and $db_create and $create_second_table and $add_record)
{
$txt = "Teraz system newsów jest gotowy do działania, w celu zapewnienia wiekszej ochrony systemu newsów radze usunąć plik <b>install.html</b>";
}
}
else
{
header("Location: install.html");
exit;
}
?>
<html>
<head>
<title>ANS: System newsów jest gotowy do działania.</title>
</head>
<body>
<? echo "$txt"; ?>
</body>
</html>
Natomiast gdy adres localhost zastąpie freepgs.com to wyświetla mi sie takie coś:
Warning: Host 'ip148-b1.lvcs.net' is not allowed to connect to this MySQL server in /home/httpd/vhosts/freepgs.com/httpdocs/aver/do_db.php on line 8

Warning: MySQL Connection Failed: Host 'ip148-b1.lvcs.net' is not allowed to connect to this MySQL server in /home/httpd/vhosts/freepgs.com/httpdocs/aver/do_db.php on line 8
Próba połączenia nie powiodła się.
Może mi ktos wyjaśnic o co chodzi w tych errorach?
Hygin
Moderator
Posty: 650
Rejestracja: wt gru 31, 2002 10:29 pm
Lokalizacja: Wrocław
Kontakt:

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Hygin »

Ja dokładnie nie wiem, ale przypuszczam, że adres bazy jest nieprawidłowy. Takich rzeczy szukaj na ich forum support'u.
Aver

Re: Czemu nie moge sie połączyć z bazą danych?

Post autor: Aver »

Dobra dzięki za pomoc, juz sobie ze wszystkim poradziłem, a co do freepgs.com to php i mysql trzeba uaktywnićbo początkowo niedziła.
ODPOWIEDZ