Dodawanie rekordów do bazy mysql bez przeładowania strony

Witam mam taki formularz:

Wyślij

i kawałek kodu:

echo"
";

i plik zapisz.php

// Odbieranie danych metodą post

   $tresc = htmlspecialchars(trim($_POST['tresc']));

   $kto = htmlspecialchars(trim($_POST['kto']));

   $zkim = htmlspecialchars(trim($_POST['zkim']));

   include('dodaj/setting.php'); 

   //Dodawanie rekordów do bazy mysql

   $dodaj = "INSERT INTO wiadomosci (tresc, kto, zkim) VALUES ('$tresc', '$kto', '$zkim')";

   mysql_query($dodaj) or die(mysql_error());

Chcę zeby bez przeładowania strony dodało dane do bazy mysql.

Niestety nie działa ten kod.

Co tu jest źle??

Niech ktoś napisze gdzie jest błąd bo ja nie znam ajax js czy czego tam jeszcze można użyć do tego.

Pomijając fakt (niepotrzebnie) długiego forma (nie będę go poprawiać, ale radzę go skrócić). Ten echo mi się bardzo nie podoba. Po prostu czytelność jest mała co prowadzi do popełniania błędów.

Zapytanie masz ok, więc je sobie pominiemy. Użyjmy sobie print_ w zapisz, oraz argumentu data w success do sprawdzenia co masz źle :))

Tworzymy 2pliki, plik 1 (który odpalasz przez przeglądarkę)

echo $login ? czyli wyświetlenie zmiennej--

Tak błąd był inny, głupi a mianowicie literówka w kodzie.

Już wszystko działa tylko mam takie pytanie jak pobrać wartość z bez przeładowania strony??

Dodane 11.12.2012 (Wt) 19:40

I czemu nie moze być jquery w echo?? co za różnica??

W kodzie który cię interesuje nic nie trzeba pobierać. A kod pobierasz tak jak pokazałem to w przypadku sprawdzania co wpisujesz.

Patrząc na nazwy zmiennych interesuje cie chat. Użyj sobie load. W jednym pliku wyświetlasz całą treść, a potem za pomocą load (wczytanie), oraz setTimeout(co jakiś czas) pobierasz i dajesz sobie do div’a.

function reload(){  $('#wiadomosci').load('messages.php');

Dobra ale dlaczego nie zapisuje do bazy??

jak dam alert data to wyświetla to

tresc=siema&kto=test&zkim=test

ale do bazy nic nie zapisuje

ehh, alert data ma być w success (tam gdzie jest u mnie w kodzie).

teraz wogule nie wyświetla alertu i nie dodaje

Podaj błąd który wywala w konsoli js przeglądarki.

Nie wiem któro w innych kartach nie ma błędów.

http://screenshooter.net/5065731/setyhad

konsola !!

ps błędy css’a również wypadało by poprawić

ps2, każdy ma swoją cierpliwość, radzę nie robić takich błędów bo odeślę cię do kursu js :slight_smile:

Jeśli w konsoli js’a nic nie ma błąd masz gdzie indziej. I albo zastosujesz się do mojej pierwszej porady, albo również odeślę cię do kursu js’a :slight_smile:

http://screenshooter.net/1634792/hqyrnhc

Ja nie znam js dlatego prosze o pomoc. błędy css są tylko narazie bo co chwila zmieniam to nie będe pisał 100 razy tego samego.

Daj cały kod. To co jest tam (po moich poprawkach) jest ok. Jak byś przeczytał/a, oraz zastosował/a się do mojego pierwszego postu. Wywaliło by to co potrzebuję wiedzieć i było by ok. ALE NIE. Ty musisz robić po swojemu.

czat.php

<?php

   // Odbieranie danych metodą post

   $tresc = htmlspecialchars(trim($_POST['tresc']));

   $kto = htmlspecialchars(trim($_POST['kto']));

   $zkim = htmlspecialchars(trim($_POST['zkim']));

   print_r($tresc);

   print_r($kto);

   print_r($zkim);

   include("dodaj/setting.php"); 

   //Dodawanie rekordów do bazy mysql

   $dodaj = "INSERT INTO czat (kto, zkim, tresc) VALUES ('$kto', '$zkim', '$tresc')";

   mysql_query($dodaj) or die(mysql_error());

?>

Co poza script masz w tym pliku ?

coś takiego:

Style ma być w jednym znaczniku, script tak samo. Pomijając fakt że masz wszystko w echo (nauczysz się jak będzie tam trzeba coś zmienić :P)

masz:

if(isset($_POST['wyslij']))

Gdzie w post nie wysyłasz zmiennej wyslij …

Więc jak coś ma się zrobić skoro bez tego pomijasz fragment kodu z wysyłaniem. BA nawet bez ajax, twój kod nic nie wyśle bo twój form również wyslij nie ma … Więc twój problem to nie js, a php :slight_smile:

Masz nauczkę na przyszłość, jak podajesz kod lepiej podać więcej niż zdaje się że się przyda.

No dobra coś porawiłem i zapisuje do bazy danych ale tylko tresc a nie zkim i kto dlaczego??

Dodane 11.12.2012 (Wt) 20:44

dobra już działa.

Dodane 11.12.2012 (Wt) 20:44

Dzięki za porady

$do=$_POST['do'];

  $temat=$_POST['temat'];

  $tresc=$_POST['tresc'];

To jest twój zapis przesłanych danych do zmiennych. Nijak ma się to do tego co podałeś w pierwszym poście. Ale cóż …

//edit, np