Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Błąd w dodawaniu rekordów do bazy
kafar610
post 6.02.2015, 22:27:47
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

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


Witam
Pomoże mi ktoś dodać rekordy do bazy, mecze się już z tym trochę i mi się pomysły skończyły...
Odrazu mowie ze wiem ze nie tak dodaje się obrazki ale to narzazie test tongue.gif

  1. <?php
  2.  
  3. //definicja zmiennych
  4. $host = '...';
  5. $user = 'kafar_3';
  6. $password = 'haslo';
  7. $nazwa_bazy = 'kafar_3';
  8.  
  9. $kolor = $_POST ['kolor'];
  10.  
  11. $rodzaj = $_POST ['rodzaj'];
  12.  
  13. $cena_sklep = $_POST ['cena_sklep'];
  14.  
  15. $nasza_cena = $_POST ['nasza_cena'];
  16.  
  17. $screenshot = $_POST ['screenshot'];
  18.  
  19. //walidacja start
  20. if (empty($kolor) && (empty($rodzaj)) && (empty($cena_sklep)) && (empty($nasza_cena)) && (empty($screenshot))) {
  21.  
  22. echo "Wypełnij wszystkie pola.";
  23.  
  24. }
  25. if (empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  26.  
  27. echo "Podaj kolor";
  28.  
  29. }
  30. if (!empty($kolor) && (empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  31.  
  32. echo "Podaj rodzaj";
  33.  
  34. }
  35. if (!empty($kolor) && (!empty($rodzaj)) && (empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  36.  
  37. echo "Podaj cene w sklepie";
  38.  
  39. }
  40. if (!empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (empty($nasza_cena)) && (!empty($screenshot))) {
  41.  
  42. echo "Podaj nasza cene";
  43.  
  44. }
  45. if (!empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (empty($screenshot))) {
  46.  
  47. echo "Nie wstawiłes zdjecia";
  48.  
  49. }
  50. //walidacja end
  51. //wykoananie skryptu
  52. if (!empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  53.  
  54. $connect = mysql_connect($host, $user, $password)
  55. or die('Brak połączenia z serwerem MySQL');
  56.  
  57. $db = @mysql_select_db('kafar_3', $connect)
  58. or die('Nie mogę połączyć się z bazą danych');
  59.  
  60. echo 'Połączenie nawiązane';
  61.  
  62. // dodajemy rekord do bazy
  63. //$ins = @mysql_query("INSERT INTO drzwi VALUES (0,NOW(), '$kolor', '$rodzaj', '$cena_sklep','$nasza_cena', '$screenshot' ");
  64.  
  65. $ins = "INSERT INTO drzwi VALUES (0,NOW(), '$kolor', '$rodzaj', '$cena_sklep','$nasza_cena', '$screenshot' )";
  66.  
  67. if($ins) echo "Rekord został dodany poprawnie";
  68. else echo "Błąd nie udało się dodać nowego rekordu";
  69.  
  70. mysqli_close($connect, $ins);
  71. }
  72. ?>


Wyskakuje mi taki błąd Warning: mysqli_query() expects parameter 1 to be mysqli i wskazuje na ta linijkę
  1. mysqli_close($connect, $ins);


Wrzucam też tabelkę

Pozdrawiam Darek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Jarma
post 6.02.2015, 22:38:50
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 11
Dołączył: 20.07.2009

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


Korzystasz wreszcie z z mysqli czy mysql? Bo tego nie możesz używać zamiennie.

Po drugie $ins zawsze da Ci true, bo jest stringiem, a dokładniej to takim
  1. $ins = "INSERT INTO drzwi VALUES (0,NOW(), '$kolor', '$rodzaj', '$cena_sklep','$nasza_cena', '$screenshot' )";


A po trzecie
  1. mysqli_close

przyjmuje tylko jeden parametr
  1. mysqli_close($connect)


z tym że w twoim przypadku
  1. $connect = mysqli_connect($host, $user, $password,'kafar_3')


Ten post edytował Jarma 6.02.2015, 22:41:00
Go to the top of the page
+Quote Post
kafar610
post 6.02.2015, 23:15:48
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

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


Dobra, zmieniłem kod, ale nadal nie widzę rekordów w bazie...

  1. <?php
  2.  
  3.  
  4. //definicja zmiennych
  5. $host = '...';
  6. $user = 'kafar_3';
  7. $password = 'haslo';
  8. $nazwa_bazy = 'kafar_3';
  9. $port = '3307';
  10.  
  11. $kolor = $_POST ['kolor'];
  12.  
  13. $rodzaj = $_POST ['rodzaj'];
  14.  
  15. $cena_sklep = $_POST ['cena_sklep'];
  16.  
  17. $nasza_cena = $_POST ['nasza_cena'];
  18.  
  19. $screenshot = $_POST ['screenshot'];
  20. //definicja zmiennych
  21.  
  22. //walidacja start
  23. if (empty($kolor) && (empty($rodzaj)) && (empty($cena_sklep)) && (empty($nasza_cena)) && (empty($screenshot))) {
  24.  
  25. echo "Wypełnij wszystkie pola.";
  26.  
  27. }
  28. if (empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  29.  
  30. echo "Podaj kolor";
  31.  
  32. }
  33. if (!empty($kolor) && (empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  34.  
  35. echo "Podaj rodzaj";
  36.  
  37. }
  38. if (!empty($kolor) && (!empty($rodzaj)) && (empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  39.  
  40. echo "Podaj cene w sklepie";
  41.  
  42. }
  43. if (!empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (empty($nasza_cena)) && (!empty($screenshot))) {
  44.  
  45. echo "Podaj nasza cene";
  46.  
  47. }
  48. if (!empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (empty($screenshot))) {
  49.  
  50. echo "Nie wstawiłes zdjecia";
  51.  
  52. }
  53. //walidacja end
  54. //wykoananie skryptu
  55. if (!empty($kolor) && (!empty($rodzaj)) && (!empty($cena_sklep)) && (!empty($nasza_cena)) && (!empty($screenshot))) {
  56.  
  57. $connect = mysqli_connect($host, $user, $password, $nazwa_bazy, $port)
  58. or die('Brak połączenia z serwerem MySQL');
  59.  
  60.  
  61. echo 'Połączenie nawiązane';
  62.  
  63. // dodajemy rekord do bazy
  64.  
  65. $ins = "INSERT INTO drzwi VALUES (0,NOW(), '$kolor', '$rodzaj', '$cena_sklep','$nasza_cena', '$screenshot' )";
  66.  
  67. if($ins) echo "Rekord został dodany poprawnie";
  68. else echo "Błąd nie udało się dodać nowego rekordu";
  69.  
  70.  
  71. mysqli_close($connect);
  72. }
  73. ?>



I nie rozumiem tego
Cytat
Po drugie $ins zawsze da Ci true, bo jest stringiem, a dokładniej to takim
to co innego mam użyć ?
Go to the top of the page
+Quote Post
Boshi
post 6.02.2015, 23:26:27
Post #4





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


A gdzie tutaj jest wykonanie zapytania dodającego rekord do bazy?

string jest zawsze wartości true.
Go to the top of the page
+Quote Post
kafar610
post 6.02.2015, 23:33:30
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

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


dobra dzięki faktycznie brakowało
  1. mysqli_query($connect, $ins);
tongue.gif

a co do tego drugiego to co mam zrobić aby bylo dobrze?
Go to the top of the page
+Quote Post
Boshi
post 6.02.2015, 23:39:45
Post #6





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


  1. $query=mysql_query($connect, $ins);
  2.  
  3. if ($query)
  4. {
  5. echo 'dodano';
  6. }
  7. else
  8. echo 'nie dodano';
Go to the top of the page
+Quote Post
kafar610
post 6.02.2015, 23:45:26
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

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


Łapki poleciały, wielkie dzięki wink.gif
Jeszcze takie pyt. jak mam dodawać obrazki aby ich nazwy się nie powtarzały?
Powiedzmy 2 użytkowników doda obrazek o tej samej nazwie, i co dalej? jak temu zapobiec?
Go to the top of the page
+Quote Post
Boshi
post 6.02.2015, 23:49:42
Post #8





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


Sprawdzić czy w bazie istnieje już taka nazwa, wyciągając dane selectem.
Go to the top of the page
+Quote Post
kafar610
post 6.02.2015, 23:52:07
Post #9





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

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


ale co da mi sprawdzenie? jak mam zrobić skrypt aby w bazie nie zapisywał się pod ta sama nazwa. przecież użytkownikowi nie wywalę takiego błędu...
Go to the top of the page
+Quote Post
Boshi
post 6.02.2015, 23:56:33
Post #10





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


Nie jestem pewien czy to dobre rozwiązanie pod względem logicznym, ale można np dopisywać do nazwy numerek, np pierwsze zdjęce= zdjecie, drugie zdjęcie1, zdjęcie2. Można zamieniać nazwy, itd.

Pewnie można to rozwiązać w bardziej cywilizowany sposób.
Go to the top of the page
+Quote Post
kafar610
post 7.02.2015, 18:56:12
Post #11





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

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


a microtime ? będzie dobre?

?
Go to the top of the page
+Quote Post
rad11
post 7.02.2015, 18:59:37
Post #12





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Przed dodaniem rekordu podaj biezace id rekordu, czyli pobierasz wszystko z tabeli wybierasz max id lub robisz grupowanie wgledem id tak aby pierwsza wartoscia byl najwiekszy numer dodajesz limit i do tej pobranej wartosci dodajesz 1 i masz aktualne id rekordu.

cos na wzor:

  1. 1.
  2. $sql = "SELECT MAX(id) FROM tabela";
  3.  
  4. 2.
  5. $sql = "SELECT id FROM tabela ORDER BY id DESC GROUP BY id LIMIT 1";
  6.  
  7. 3.
  8.  
  9. $sql = "SELECT COUNT(*) FROM tabela";
  10.  

i mozesz albo w phpie do wyniku dodac 1 lub w zapytaniu dodac 1.
Ogolnie masz duzo rozwiazan.

Ten post edytował rad11 7.02.2015, 19:10:07
Go to the top of the page
+Quote Post
nospor
post 7.02.2015, 20:27:25
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
aby pierwsza wartoscia byl najwiekszy numer dodajesz limit i do tej pobranej wartosci dodajesz 1 i masz aktualne id rekordu.

No niestety to nie jest prawda. A konkretnie rzecz mowiac nie zawsze jest prawda i nie mozna na tym polegac.

Id ostatnio dodanego rekordu pobiera sie prze last insert id. Najpierw wiec dodajesz rekord, potem pobierasz swiezo dodane id i dopisujesz do nazwy pliku.
ps: a czemu w ogole to problem, ze dwie osoby wrzuca plik o tej samej nazwie? Chodzi o to, ze pliki wrzucasz do tego samego katalogu?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kafar610
post 7.02.2015, 20:40:26
Post #14





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

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


no powiedzmy ze robię hosting obrazków to chyba do jednego katalogu bym wrzucał tongue.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 10:48