Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Problem z wpisaniem danych do bazy
piotrekk
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

Ostrzeżenie: (0%)
-----


Witam,
mam niecodzienny problem z wpisaniem danych do bazy danych. Skrypt jest identyczny jak wcześniej i wszędzie działa, jednak tym razem dochodzi do pewnego momentu i wyskakuje mi błąd. O to część kodu:
  1. <?php
  2. if (!($connection = @mysql_connect($host, $login, $haslo)) || !($db = @mysql_select_db($db, $connection)))
  3.    {
  4.        $_SESSION['error'] = "Problem z polączeniem z baza danych, prosimy powiadomić o tym administratora serwisu.";
  5.        header("Location: ../function/error.php");
  6.        exit;
  7.    }
  8.    
  9. $sql = "select max(id) from $tabela";
  10.            
  11. if(!($result = mysql_query($sql, $connection)))
  12.    {
  13.        $_SESSION['error'] = "Problem z pobieraniem danych z tabeli: ".$tabela.".Prosimy skontaktować się z Administratorem ";
  14.        header("Location: ../function/error.php");
  15.        exit;
  16.    }
  17.    
  18. $nowaNazwa = $result['max(id)'] + 1;
  19.  
  20. /* !! do tego momentu wszystko gra i nagle wywala mi błąd. Nie mogę ani włączyć polskich znaków za pomocą tego, a jak to usunę i zostawię
  21. poniższa $query to i tak i tak tu wszystko siada i nie przechodzi dalej. */
  22.  
  23. if(!(mysql_query("SET names utf8", $connection))); //
  24.    {
  25.        $_SESSION['error'] = "Nie udało się włączyć polskich znaków.";
  26.        header("Location: ../function/error.php");
  27.        exit;
  28.    }
  29.    
  30. $query = "insert into $tabela SET id=$nowaNazwa, cena=$cena, material=$material";
  31.    
  32. if(!(mysql_query($query, $connection)))
  33.    {
  34.        $_SESSION['error'] = "Nie udało się zapisać danych w bazie danych, powiadom o tym administratora strony. Dziekuję.";
  35.        header("Location: ../function/error.php");
  36.        exit;
  37.    }
  38. ?>


Tworząc baze danych ustawiłem na dostęp na wszystkie możliwości. Nie mam pojecią co się dzieje, czy ktos widzi błąd?

prosze o pomoc (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)

dzieki
Go to the top of the page
+Quote Post
Kildyt
post
Post #2





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


Cytat
if(!(mysql_query("SET names utf8", $connection))); //
{

Skąd wziął Ci się tutaj apostrof i po co Ci pusty komentarz?

PS Czytaj ze zrozumieniem to co ci wywala php, a jak wiesz za mało: error_reporting().

Ten post edytował Kildyt 4.10.2008, 09:27:47
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




$query = "insert into $tabela SET id=$nowaNazwa, cena=$cena, material=$material";

Pomieszałeś INSERT z UPDATE (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Powinno byc:

Kod
$query = "insert into $tabela (id,cena,material) values ($nowaNazwa,$cena,$material)";


Swoją drogą ciekawe, jak to mogło działać wcześniej...
Go to the top of the page
+Quote Post
Kildyt
post
Post #4





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


@blooregard, ja bym się z tym nie zgodził.

Cytat
$query = "insert into $tabela SET id=$nowaNazwa, cena=$cena, material=$material";

Cytat
$query = "insert into $tabela (id,cena,material) values ($nowaNazwa,$cena,$material)";


To są dwie różne sposoby zapisania tego samego działania. Oba kody są poprawne.
Go to the top of the page
+Quote Post
blooregard
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Faktycznie. Nigdy wcześniej nie używałem tego zapisu i dlatego wydał mi się cokolwiek dziwny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ale sprawdziłem z ciekawości, działa takie coś.

Zwracam honor, błąd nie był w tym miejscu. 
Go to the top of the page
+Quote Post
piotrekk
post
Post #6





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

Ostrzeżenie: (0%)
-----


wygląda tak jakbym nie mógł wykonać polecenia insert itd. Wszystko działa i select pobiera wartość, natomist jak już chce cos wstawic to wywala błąd. Wydaje mi się ze moze cos na serwerze jest zle ustawione? choc jak tworzylem baze danych to dodałem wszystkie mozliwosci wraz z insert i update.

nie wiem jak skorzystać z funkcji error_reporting. Jak tobie echo error_reporting(); daje mi informacje : 6143. Nic mi to jednak nie mowi. Jakieś sugestie ?
Go to the top of the page
+Quote Post
Kildyt
post
Post #7





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


Usunąłeś apostrof? Podaj co wywala Ci php. Jaki błąd? Nie jesteśmy jasnowidzami.

Następnym razem polecam www.php.net . Tam się dowiesz jak działa funkcja error_reporting.
Go to the top of the page
+Quote Post
piotrekk
post
Post #8





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

Ostrzeżenie: (0%)
-----


Nie wiem do końca co masz na myśli z tymi apostrofami.

Kod wygląda teraz tak:

  1. <?php
  2. $cena = '100';
  3. $material = 'glazura';
  4. $tabela = 'kolczyki';
  5.  
  6. /*--------- łączenie z bazą aby pobrać najwiekszy id do nazy i zapisu */
  7.  
  8. if (!($connection = @mysql_connect($host, $login, $haslo)) || !($db = @mysql_select_db($db, $connection)))
  9.    {
  10.        $_SESSION['error'] = "Problem z polączeniem z baza danych, prosimy powiadomić o tym administratora serwisu.";
  11.        header("Location: ../function/error.php");
  12.        exit;
  13.    }
  14.    
  15. $sql = "select max(id) from $tabela";
  16.            
  17. if(!($result = mysql_query($sql, $connection)))
  18.    {
  19.        $_SESSION['error'] = "Problem z pobieraniem danych z tabeli: ".$tabela.".Prosimy skontaktować się z Administratorem ";
  20.        header("Location: ../function/error.php");
  21.        exit;
  22.    }
  23.    
  24. $nowaNazwa = $result['max(id)'] + 1; // pobranie id i zwiększenie o jeden
  25.  
  26. $sql = "SET names utf8";
  27. if(!(mysql_query($sql, $connection)));
  28.    {
  29.        $_SESSION['error'] = "Nie udało się włączyć polskich znaków.";
  30.        header("Location: ../function/error.php");
  31.        exit;
  32.    }
  33.    
  34. $query = "insert into $tabela SET id=$nowaNazwa, cena=$cena, material=$material";
  35.    
  36. if(!(mysql_query($query, $connection)))
  37.    {
  38.        $_SESSION['error'] = "Nie udało się zapisać danych w bazie danych, powiadom o tym administratora strony. Dziekuję.";
  39.        header("Location: ../function/error.php");
  40.        exit;
  41.    }
  42. ?>


Nadal nie działa. Dochodzi do miejsca z SET names i pada. Jak usunę całą tą linijke to to samo dzieje się na zapytaniu $query.

jezeli chodzi o error_reporting to probowałem takie opcje, nie wiem do końca czy dobrze.

error_reporting(E_ALL);
error_reporting(1);
echo error_reporting(E_ALL);
error_reporting(1);
error_reporting();

Nie zwracają nic. poza numerem 6143.

I co o tym myślicie?
Go to the top of the page
+Quote Post
Kildyt
post
Post #9





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


if(!(mysql_query($sql, $connection)));

Kurcze, ale zawaliłem. Co mi z apostrofami się walnęło? :/
Chodziło mi o średnik. Sory wielkie.

Ten post edytował Kildyt 4.10.2008, 10:30:29
Go to the top of the page
+Quote Post
piotrekk
post
Post #10





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

Ostrzeżenie: (0%)
-----


Tu jest błąd, ale dlaczego (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? może wiesz jak to powinno wyglądać?

  1. <?php
  2. $cena = strip_tags($_POST['cena']);
  3. $material = strip_tags($_POST['material']);
  4. $tabela = $_SESSION['tabela'];
  5. $nowaNazwa = $result['max(id)'] + 1;
  6.  
  7. $query = "insert into $tabela SET id = '$nowaNazwa', cena = '$cena', material = '$material'";
  8.    
  9. if(!(mysql_query($query, $connection)))
  10.    {
  11.        $_SESSION['error'] = "Nie udało się zapisać danych w bazie danych, powiadom o tym administratora strony. Dziekuję.";
  12.        header("Location: ../function/error.php");
  13.        exit;
  14.    }
  15. ?>


to oczywiśćie wycinek, ale tu jest bład jeżeli wyglada tak:

  1. <?php
  2. $query = "insert into nazwa SET id = '1', cena = '2', material = '3";
  3.    
  4. if(!(mysql_query($query, $connection)))
  5.    {
  6.        $_SESSION['error'] = "Nie udało się zapisać danych w bazie danych, powiadom o tym administratora strony. Dziekuję.";
  7.        header("Location: ../function/error.php");
  8.        exit;
  9.    }
  10. ?>


to wszystko działa.

jak myslicie ?
Go to the top of the page
+Quote Post
Kildyt
post
Post #11





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


Kod
if(!(mysql_query($query, $connection)))
   {
       $_SESSION['error'] = "Nie udało się zapisać danych w bazie danych, powiadom o tym administratora strony. Dziekuję.";
       header("Location: ../function/error.php");
       exit;
   }


Wstawiasz nawias przed wykrzyknikiem. Po co?

Kod
if(!mysql_query($query, $connection))

jest chyba poprawne.

Usunąłeś średnik z
Kod
if(!(mysql_query($sql, $connection)));
   {
       $_SESSION['error'] = "Nie udało się włączyć polskich znaków.";
       header("Location: ../function/error.php");
       exit;
   }
?

PS Dla mnie kod jest niezrozumiały. Może ja inaczej piszę? Ja nigdy nie wstawiam w warunkach nawiasów bez podania funkcji, czy dodaje średniki.
Czy ja o czymś nie wiem? (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował Kildyt 4.10.2008, 11:38:27
Go to the top of the page
+Quote Post
piotrekk
post
Post #12





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

Ostrzeżenie: (0%)
-----


usunąłem średnik. Jeżeli chodzi o wykrzyknik przed nawiasem to w sumie pisze w taki sposób, ponieważ w książce , z której się uczyłem tak było.

Nie wiem czemu, ale błąd jest w zapytaniu $query

  1. $query = "INSERT INTO $tabela SET id = '$nowaNazwa', cena = '$cena', material = '$material'";


Jeżeli wszystko zapisane jest w takiej formie to działa:

  1. $query = "INSERT INTO nazwa SET id = '1', cena = '2', material = '3'";


Nie znam przyczyn niestety.
Go to the top of the page
+Quote Post
Lion_87
post
Post #13





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Cytat
$query = "INSERT INTO $tabela SET id = '$nowaNazwa', cena = '$cena', material = '$material'";


a dlaczego nie mozesz tak?
  1. <?php
  2. $query = "INSERT INTO $tabela VALUES('$nowaNazwa', '$cena', '$material')";
  3. ?>
Go to the top of the page
+Quote Post
piotrekk
post
Post #14





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

Ostrzeżenie: (0%)
-----


tak nadal nie działało, też próbowałem. Problemem okazło się że nie przepuszczalem przez mysql_fetch_array. Rozwiązanie:

  1. <?php
  2. if (!($connection = @mysql_connect($host, $login, $haslo)) || !($db = @mysql_select_db($db, $connection)))
  3.    {
  4.        $_SESSION['error'] = "Problem z polączeniem z baza danych, prosimy powiadomić o tym administratora serwisu.";
  5.        header("Location: ../function/error.php");
  6.        exit;
  7.    }
  8.    
  9. $sql = "select max(id) from $tabela";
  10.            
  11. if(!($result = mysql_query($sql, $connection)))
  12.    {
  13.        $_SESSION['error'] = "Problem z pobieraniem danych z tabeli: ".$tabela.".Prosimy skontaktować się z Administratorem.";
  14.        header("Location: ../function/error.php");
  15.        exit;
  16.    }
  17.  
  18. $row = mysql_fetch_array($result);
  19.  
  20. $nowaNazwa = $row["max(id)"] + 1;
  21.  
  22. if(!(mysql_query("SET names utf8", $connection)))
  23.    {
  24.        $_SESSION['error'] = "Nie udało się włączyć polskich znaków.";
  25.        header("Location: ../function/error.php");
  26.        exit;
  27.    }
  28.  
  29.  
  30. $query = "INSERT INTO $tabela SET id='$nowaNazwa', cena='$cena', material='$material'";
  31.    
  32. if(!(mysql_query($query, $connection)))
  33.    {
  34.        $_SESSION['error'] = "Nie udało się zapisać danych w bazie danych, powiadom o tym administratora strony. Dziekuję.";
  35.        header("Location: ../function/error.php");
  36.        exit;
  37.    }
  38. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:39