Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem polaczenia php z mysql
Forum PHP.pl > Forum > PHP
damianwz24
Witam Wszystkich Forumowiczow,

Mam problem : chcialem sie poloczyc za pomoca php z baza danych mysql i do wczesniej utworzonej tabeli dodac za pomoca php pewna wartosc tekstowa. I po dodaniu nic mi sie nie pojawia zaden komunikat ze inforamcja zostala dodana.. po prostu nic.. przegladarka tkwi w tym samym punkcie, jest tylko odswiezona strona i tyle... Prosze o pomoc.. Mam 2 pliki : jeden konfiguracyjny i drugi zawierajacy formularz:

mysql_connect.inc

<?php

DEFINE (DB_USER,"root");
DEFINE (DB_PASSWORD,"naroznik");
DEFINE (DB_HOST,"localhost");
DEFINE (DB_NAME,"finanse");

$db_connection = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
mysql_select_db(DB_NAME);
?>

-------------------------------------------------------------------------------------------

add_expense_category.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Dodawanie kategorii wydatkow</title>
</head>
<body>

<?php

if (isset($HTTP_POST_VARS['submit'])) {

if (strlen($HTTP_POST_VARS['expense_category'])>0) {

require_once ("../mysql_connect.inc");



$query="INSERT INTO kategorie_wydatkow VALUES
(NULL, '{$HTTP_POST_VARS['expense_category']}')";
$query_result=mysql_query ($query);

if($query_result) {
echo '<b><font color="green">Kategoria zostala dodana!</font></b>';
} else {
echo '<b><font color="red">Nie mozna dodac podanej kategorii!</font></b>';
}

mysql_close();

} else {
echo '<b><font color="red">Nie wprowadzono kategorii!</font></b>';

}

} else {
?>
Dodaj nowa kategorie do tabeli kategorie_wydatkow:<br/>

<form action="add_expense_category.php" method="post">
<input type="text" name="expense_category" size="30" maxlength="30"/><p />
<input type="submit" name="submit" value="Wyslij!"/>
</form>

<?php
}
?>
</body>
</html>



Dodam ze obdwa pliki mam w tym samym katalogu C:\Server\www. Bardzo prosze o pomoc gdyz ja swoja przygode z php i mysql dopiero zaczynam. Pozdrawiam
kristaps
Użyj BBcode. Co do całości, to przede wszystkim zrezygnuj z formatu .inc. Plik z takim rozszerzeniem nie jest parsowany przez PHP, wywołując plik mysql_connect.inc otrzymasz całą jego zawartość. Co do problemu, to sam zobacz:
Cytat
Dodam ze obdwa pliki mam w tym samym katalogu C:\Server\www.

  1. require_once ("../mysql_connect.inc");
szok
Widze ze zaczynasz się uczyć dostępu do baz z poziomu PHP, odpuśc sobie mysql_connect i cała resztę.
Tym się zainteresuj:
https://www.google.pl/search?q=pdo+tutorial...me&ie=UTF-8
kristaps
Włączone raportowanie błędów.
damianwz24
Dzieki Wszsytkim za wskazowki lecz problem dalej pozostal. Projekt musze zrobic na studia wiec dalej musze to wertowac, najchetniej zrobilbym to inna technologia ale nie moge. Zrobilem prosty przyklad polaczenia i wychodzi na to ze php laczy sie baza danych dobrze ale juz nie moge wstawic zadnych informacji. Tabele w bazie sa na 100% ok wiec nie wiem dalej co jest grane. Moze macie jakies pomysly?? Ponizej przedstawiam ten skrypcik :

<html>
<head><title>ufooo</title></head>
<body>
<?php
$polaczenie=@mysql_connect('localhost','root','naroznik') or die("Brak polaczenia z serwerem mysl");

mysql_select_db('finanse'); echo "udalo sie polaczyc";

$query="INSERT INTO kategorie_wydatkow VALUES (NULL, 'Dupa_jasia')";
$query_result=mysql_query ($query);

if ($query_result) {
echo "zapytanie wykonane";

} else { echo "zapytanie nie wykonane"; }
?>
</body>
</html>

Po wykonaniu tego skyrptu mam komunikat "udalo sie polaczyc" oraz " Zapytanie nie wykonane"
kristaps
Po raz drugi, użyj BBcode. Skrypt nie jest najwyższych lotów, ale działa.

Zamień:
  1. $query_result = mysql_query ($query);

na:
  1. $query_result = mysql_query ($query) or die(mysql_error());
a wszystkiego się dowiesz.
damianwz24
Dzieki Kristaps! sorki za brak BBcode. Ten ostatni przyklad juz dziala poniewaz probowalem wcisnac w rekord tabeli pusta wartosc NULL.Wszystko ok..ale ten pierwszy przyklad kluczowy dla mnie nie dziala mi w dalszym ciagu..Nawet jezeli go zmodyfikuje i umieszcze wybor bazy itpp w jednym pliku php bez zadnych dodatkowych plikow to tez nie dziala. Gdy wpisuje kategorie w pole formularza i klikam "Wyslij" to przegladarka tylko odswieza strone i nie pokazuje komunikatow ze zostalo cos dodane. Przeciez skoro mam dobre polaczenie z baza danych to co moze byc nie tak?? Pomozesz Kristaps?questionmark.gif?
kristaps
Zrób wszystko jak niżej:

connect.php (tak na marginesie, jak pisał szok, ta metoda łączenia jest niewskazana - ale nie komplikujmy więcej)
  1. <?php
  2.  
  3. DEFINE (DB_USER,"root");
  4. DEFINE (DB_PASSWORD,"naroznik");
  5. DEFINE (DB_HOST,"localhost");
  6. DEFINE (DB_NAME,"finanse");
  7.  
  8. $db_connection = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
  9. mysql_select_db(DB_NAME);
  10. ?>


index.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>Dodawanie kategorii wydatkow</title>
  6. </head>
  7. <body>
  8.  
  9. <?php
  10.  
  11. if (isset($HTTP_POST_VARS['submit'])) {
  12.  
  13. if (strlen($HTTP_POST_VARS['expense_category'])>0) {
  14.  
  15. require_once ("connect.php");
  16.  
  17. $query="INSERT INTO kategorie_wydatkow VALUES (NULL, 'Dupa_jasia')";
  18. $query_result=mysql_query ($query) or die(mysql_error());
  19.  
  20. if($query_result) {
  21. echo '<b><font color="green">Kategoria zostala dodana!</font></b>';
  22. }
  23.  
  24. else {
  25. echo '<b><font color="red">Nie mozna dodac podanej kategorii!</font></b>';
  26. }
  27.  
  28. }
  29.  
  30. else {
  31. echo '<b><font color="red">Nie wprowadzono kategorii!</font></b>';
  32.  
  33. }
  34.  
  35. }
  36.  
  37. else {
  38. ?>
  39. Dodaj nowa kategorie do tabeli kategorie_wydatkow:<br/>
  40.  
  41. <form action="" method="post">
  42. <input type="text" name="expense_category" size="30" maxlength="30"/><p />
  43. <input type="submit" name="submit" value="Wyslij!"/>
  44. </form>
  45.  
  46. <?php
  47. }
  48. ?>
  49. </body>
  50. </html>


Zrób dokładnie takie nazwy plików, odpal formularz i napisz jaki błąd wyskoczył - bo musi być bardzo błahy.
damianwz24
Zrobilem te dwa pliki dokladnie tak jak pisales i nic...Odpalam formularz wpisuje cos do pola albo wogole nie wpisuje, klikam button wyslij i strona mi sie tylko przeladowywuje w sekunda czy inaczej mowic odswieza.Tak jak mowisz wydaje mi sie ze to bardzo banalny blad, no ale nawet raportowanie bledow nie potrafi do odnalezc..
kristaps
Działasz na localhostcie?
damianwz24
Tak na localhoscie. Odpalam przegladarke wpisuje localhost\index.php i w ten sposob odpalam..Kristaps mozesz sprawdzic czy u Cb dziala questionmark.gif?
kristaps
Podmieniłem dane do bazy i tabeli, w efekcie otrzymuję "Kategoria zostala dodana!". Trochę to dziwne, skoro poprzedni przykład Ci działa. Na 100% masz wyłączone raportowanie błędów.
CuteOne
1. włącz raportowanie błędów
index.php
  1. ini_set('error_reporting', 1);
  2. display_errors(-1);


2. podmień to
  1. if (isset($HTTP_POST_VARS['submit'])) {
  2.  
  3. if (strlen($HTTP_POST_VARS['expense_category'])>0) {

na to
  1. if (isset($_POST['submit'])) {
  2.  
  3. if (!empty($_POST['expense_category'])) {


3. jeżeli nadal nie będzie działało to wstaw
  1. if (isset($_POST['submit'])) {
  2.  
  3. echo '<pre>';print_r($_POST);die();
  4. if (!empty($_POST['expense_category'])) {

i pokaż jakie dane ci się wyświetliły
kristaps
(display_errors = on w php.ini) CuteOne to lepiej opisał.
damianwz24
CuteOne dzieki cos tam zaczelo dzialac ale nie do konca.. Po zastapieniu kodu z punktu 2. po odswiezeniu strony otrzymuje "kategoria zostala dodana", ale skrypt wpisuje wartosc "dupa jasia" do kategorii a ja bym chcial dodac wartosc wprowadzona do formularza..ale dzieki zawsze cos..
kristaps
  1. $_POST['expense_category']
w tej tablicy masz dane formularza, zapisz je do zmiennej i wrzuć do SQL'a zamiast "dupa jasia".

Pisałeś wyżej, że projekt robisz na studia (pomijając jakie), dobrą praktyką, jeśli nie koniecznością jest filtrowanie danych. Nie wiem czy aby na pewno chcesz w to brnąć, jeśli nie to zmień:

  1. $query="INSERT INTO kategorie_wydatkow VALUES (NULL, 'Dupa_jasia')";

na:
  1. $query="INSERT INTO kategorie_wydatkow VALUES (NULL, $dane_z_formularza')";
damianwz24
dzieki. dziala tylko ze ja w bazie dla tabeli kategorie_wydatkow mam 2 pola: jedno kategoria_id i drugie kategoria_wydatku i kategoria_id nie moze byc pusta tak zaznaczylem a takze jest inkrementowana. Wiec jak w skrypcie mam wartosc NULL to mi sie pojawia komunikat ze nie moge dodac takiej wartosci, co moge zmienic w skrypcie zeby bylo ok questionmark.gif czy musze po prostu zmienic w bazie danych strukture bazy?questionmark.gifO tym filtrowaniu to dopiero bede czytal biggrin.gif
kristaps
Co do kategoria_id, to zostaw auto_increment, not null. Jak robisz insert, to po prostu pomijasz kolumne:
  1. $query="INSERT INTO kategorie_wydatkow VALUES ('', '$dane_z_formularza')";

Ewentualnie inny przykład:
  1. INSERT INTO tabela (login,imie,nazwisko,DATA) VALUES('$login','$imie','$nazwisko','$unixtime')"

A struktura tabeli wygląda tak: id, login, imie, nazwisko, data - pomijam id, SQL zajmie się resztą.
damianwz24
dzieki Kristaps dziala juz wszystko jak nalezy, Pozdrawiam !
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.