Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Błąd w dodawaniu rekordów do bazy
Forum PHP.pl > Forum > Przedszkole
kafar610
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
Jarma
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')
kafar610
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ć ?
Boshi
A gdzie tutaj jest wykonanie zapytania dodającego rekord do bazy?

string jest zawsze wartości true.
kafar610
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?
Boshi
  1. $query=mysql_query($connect, $ins);
  2.  
  3. if ($query)
  4. {
  5. echo 'dodano';
  6. }
  7. else
  8. echo 'nie dodano';
kafar610
Ł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?
Boshi
Sprawdzić czy w bazie istnieje już taka nazwa, wyciągając dane selectem.
kafar610
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...
Boshi
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.
kafar610
a microtime ? będzie dobre?

?
rad11
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.
nospor
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?
kafar610
no powiedzmy ze robię hosting obrazków to chyba do jednego katalogu bym wrzucał tongue.gif
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.