jQuery - Zapis do bazy

0

Witam,

Próbuje już jakiś czas znaleźć problem. Chciałbym aby zdarzenie onclick powodowało zapis do bazy. Przy przycisku "submit" wszystko działa dobrze, natomiast przy zmianie na "button" i kierowaniu formularza najpierw do script.js (jquery) niestety już nie. Czy ktoś pomoże mi znaleźć błąd?

index.html:

<div class="left" id="formularz">
<h3>Dodaj nowy produkt</h3>
<p>Uzupełnij dane o produkcie i kliknij na przycisk "Dodaj".</p>
<form action="form.php" method="get">
<fieldset>
<label for="tytul">Tytuł</label>
<input type="text" id="tytul" size="35" class="field" name="tytul" />
<label for="cena">Cena</label>
<input type="text" id="cena" size="35" class="field" name="cena" />
<label for="kategoria">Kategoria</label>
<input type="text" id="kategoria" size="35" class="field" name="kategoria" />
<input type="button" value="Dodaj" class="button" id="dodaj" />
</fieldset>
</form>
</div>
 

from.php:

 
<?php
class Database
{	
	public function __construct()
	{
		try{
		global $pdo;
		$pdo = new PDO('mysql:host=localhost;dbname=ajax', 'root', '');
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		echo "Connected";
		} catch(PDOException $e) {
			exit('Database error');
		}
	}
}
$user = new Database();

$tytul 			= $_GET['tytul'];
$cena 			= $_GET['cena'];
$kategoria 	= $_GET['kategoria'];

$query = $pdo->prepare("INSERT INTO kursy (tytul, cena, kategorie) VALUES (?, ?, ?)");
$query->execute(array($tytul, $cena, $kategoria));

?>

script.js:

$(document).ready(function(){
	$("#dodaj").click(function(){
		var tytul = escape($("#tytul").val());
		var cena = escape($("#cena").val());
		var kategoria = escape($("#kategoria").val());
		var url = "form.php?tytul=" + tytul + "&cena=" + cena + "&kategoria=" + kategoria;
		$.get(url);
	});
});
0

Od wysyłania formularza masz zdarzenie submit nie click.

Jak chcesz wysłać formularz buttonem to zrób tak:

$('#button-id').click(function() {
    // walidacja i inne pierdoły
    $('#form-id').submit();
})
0

Chodzi mi o to aby wyniki były prezentowane bez przeładowania strony. Nie wiem czy dobrze rozumuję... Dodałem id do formularza. Takie rozwiązanie też nie działa:

$(document).ready(function(){
	$("#dodaj").click(function(){
		var tytul = escape($("#tytul").val());
		var cena = escape($("#cena").val());
		var kategoria = escape($("#kategoria").val());
		var url = "form.php?tytul=" + tytul + "&cena=" + cena + "&kategoria=" + kategoria;
		$.get(url);
		$.get("#form").submit();
	});
});

Naprawdę nie wiem co robię źle...

0

Swoją drogą, nie powinieneś używać GET tylko POST jak zapisujesz dane. GET jest spoko do odbierania. Nie zapisuj GET rzeczy...
Tu masz kilka linków do poczytania:
http://www.w3schools.com/tags/ref_httpmethods.asp
http://stackoverflow.com/questions/3477333/what-is-the-difference-between-post-and-get
http://www.diffen.com/difference/GET_%28HTTP%29_vs_POST_%28HTTP%29

0
Maciej Cąderek napisał(a):

Od wysyłania formularza masz zdarzenie submit nie click.

Jak chcesz wysłać formularz buttonem to zrób tak:

$('#button-id').click(function() {
    // walidacja i inne pierdoły
    $('#form-id').submit();
})

Błąd :) Oczywiście że w 99% przypadków wysyłamy ajaxem po onclick, często formatujemy dodatkowo dane pobrane z inputów, dodajemy coś oprócz tego co pobieramy z inputów :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1