Biblioteka szkolna. Dodawanie książek

Witam. Podjąłem się stworzenia, strony obsługującej bazę danych szkolnej biblioteki. Otóż mam pewien problem, po utworzeniu formularza, który ma dodawać książki do tabeli książki w tej bazie danych. Napisałem skrypt obsługujący ten formularz, i nie wiem gdzie leży błąd, gdyż cały czas po wysłaniu formularza, wyświetla mi błąd. “Nie dodano książki”.

Tutaj formularz:

<?php

if (isset($_POST['tytul'])) $tytul=$_POST['tytul']; 

if (isset($_POST['dodatkowy_tytul'])) $d_tyt=$_POST['dodatkowy_tytul'];

if (isset($_POST['rok'])) $rok=$_POST['rok'];

if (isset($_POST['wydawnictwo'])) $wydawnictwo=$_POST['wydawnictwo'];

if (isset($_POST['isbn'])) $isbn=$_POST['isbn'];

if (isset($_POST['miejsce_wydania'])) $m_wyd=$_POST['miejsce_wydania'];

if (isset($_POST['lokalizacja'])) $lokalizacja=$_POST['lokalizacja'];

if (isset($_POST['gatunek'])) $gatunek=$_POST['gatunek'];


if (!empty($tytul) AND !empty($rok) AND !empty($wydawnictwo) AND 

!empty($isbn) AND !empty($m_wyd) AND !empty($gatunek)) 

{	

	if(!get_magic_quotes_gpc()) 

	{ 

		$tytul=addslashes($tytul);

		$d_tyt=addslashes($d_tyt);

		$wydawnictwo=addslashes($wydawnictwo);

		$m_wyd=addslashes($m_wyd);

		$lokalizacja=addslashes($lokalizacja);

		$gatunek=addslashes($gatunek);

	}

require_once('dbc.php');

$zap="insert into ksiazki values (,'".$tytul."','".$d_tyt."',.$rok.,'".$wydawnictwo."','".$isbn."','".$m_wyd."','".$lokalizacja."','".$gatunek."')";

$query=mysqli_query($dbc,$zap);


	if(mysqli_affected_rows($dbc)==1)

	{

		echo "Dodano książkę";


	} else {

		echo "Nie dodano ksiazki";

		}

}


?>

Połączenie z bazą danych jest ustanowione w innym pliku php i odwołanie się do tego pliku jest przez require_once.

Z góry dziękuję za pomoc.

Tytul

Dodatkowy tytul

Rok wydania

Wydawnictwo

ISBN

Miejsce wydania

Lokalizacja

Gatunek

Skrypt przetwarzający formularz:
(,'".$tytul."','".$d_tyt."',.$rok.,'".$wydawnictwo."','".$isbn."','".$m_wyd."','".$lokalizacja."','".$gatunek."')";

Ten pierwszy przecinek, to nie jest czasem błąd? Czy to jest miejsce na id w AI?

Trochę uproszczeń kodu by się zdało chociaż tak na przyszłość, będzie trochę po javascriptowsku bo całe szczęście od PHP się uwolniłem:D

Pętla po obiektach $_POST sprawdzająca czy zmienna jest zdefiniowana i czy nie jest pusta. Nie wiem czy $_POST to tablica czy obiekt i jakie są różnice w PHP ale na pewno jest funkcja, która tabele zamienia na tekst oddzielony dowolnym znakiem i takie coś wrzucić do zapytania SQL

spróbuj zrobić echo $zap przed wysłaniem do bazy. zobaczysz czy formułuje Ci się poprawne zapytanie. Jeśli tak spróbuj wkleić je do bazy przez PHPMyAdmin. Jeśli nie, będziesz wiedział z którą zmienną jest problem. Leć w zdłóż kodu i wyświetlaj ją po każdej obróbce. Często w ten sposób rozgryzałem problem, często pomagało :slight_smile:

Tak, ponieważ pole Id w książkach nie ma właściwości auto_increment. Właśnie nie wiem czy zostawić je tak jak jest puste, czy należy dodać, kolejny numer, zgodny z kolejnością w bazie danych.

Jak nie ma auto_increment to ręcznie dodajesz, jak jest to wpisujesz DEFAULT przy insercie.

Poza tym mysql_real_escape_string, albo lepiej mysqli lub pdo. No i komendy sql: insert, select, from itp. pisz wielkimi literami, będzie Ci później łatwiej się połapać co i jak.