• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

AJAX i PHP Formularz zmieniający wartości w PHP i ładujący kod dzięki AJAX

Object Storage Arubacloud
0 głosów
574 wizyt
pytanie zadane 2 kwietnia 2017 w JavaScript przez Pan_Izaak Nowicjusz (160 p.)

Witam masz dość duży problem z AJAX i PHP. Głównie rozchodzi się o to że nie mam pojęcia jak odbierać dane w PHP, wydaje mi się że mam jakiś błąd .Próbowałem szukać rozwiązania na wielu stronach ale nigdzie nie mogę znaleźć tego o co mi chodzi.Głównie w skrypcie chodzi pobieranie z Bazy Danych informacji i wyświetlanie ich na stronie dzięki ajaxowi (Formularz ma zmieniać dane i dzięki JQuery odpalać na nowo listę odpowiednio posortowaną i to nie działa ) Z góry dziękuje.

Plik index.html

<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>
Strona
</title>
<style type="text/css">
b{background-color:red;}
</style>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="_js/jquery.min.js"></script>
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
function Pętla2()
{
  $( function() {
    $( "#accordion" ).accordion({
      collapsible: true
    });
  } );

}
</script>
<script type="text/javascript">
	$(document).ready(function() 
	{
		$("#login").submit(function() 
		{ 
		event.preventDefault();
			$.ajax
			({
			type: 'POST',
            url: 'Zawody.php',
            data: $('#login').serialize(),
			success: function(data) 
			{
					
			$("#Glowna").load('Zawody.php');

			}
				
			});
		});
	});
	</script>
</head>
<body>
<div id="Glowna">
</div>
</div>
<div id="Formularz">
<form id="login">
		<input type="radio" name="Ocena" value="WHERE Ocena = 4  " id="Ocena" />4
		<input type="radio" name="Ocena" value="WHERE Ocena = 5  " id="Ocena" />5
		<input type="submit" id="submit" value="submit" />
</form>
</div>
</body>
</html>

 

Plik Zawody.php

<?php 
echo"<div id='accordion'>";
$imie = 'AND Imie=\'Mateusz\' ';
$wiek = $_POST['Ocena'];
$zapytaniewynik = 'SELECT * FROM `dziennik2` '.$wiek.$imie;
$connection = @mysql_connect('localhost', '', '') 
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error()); 
$db = @mysql_select_db('test', $connection) 
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error()); 

$wynik = mysql_query($zapytaniewynik) 
or die('Błąd zapytania'); 

if(mysql_num_rows($wynik) > 0) 
{ 
    while($r = mysql_fetch_array($wynik)) 
	{ 
	echo "<h3>".$r[1]."</h3>";
	echo "<div><b>".$r[0]."  ".$r[2]."</b></div>";
	} 
} 	
mysql_close($connection); 
echo"</div>";
print "<script type='text/javascript'>";
print "Pętla2()";
print "</script>\n";
?>

I wiem że część z wiekiem jest błędna ale nie wiem jak ma wyglądać prawidłowo.

Plik SQL

-- phpMyAdmin SQL Dump
-- version 4.6.5.2
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Czas generowania: 21 Lut 2017, 18:19
-- Wersja serwera: 10.1.21-MariaDB
-- Wersja PHP: 5.6.30

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Baza danych: `test`
--

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

--
-- Struktura tabeli dla tabeli `dziennik2`
--

CREATE TABLE `dziennik2` (
  `Imie` text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  `Nazwisko` text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  `Ocena` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `dziennik2`
--

INSERT INTO `dziennik2` (`Imie`, `Nazwisko`, `Ocena`) VALUES
('Mateusz', 'Urbaniec', 4),
('Mateusz', 'Urbaniec', 4),
('Marek', 'Czega', 5),
('Patryk', 'Czega', 3),
('Patryk', 'Urbaniec', 7),
('Mateusz', 'Czega', 5),
('Mateusz', 'Urbaniec', 3),
('Mateusz', 'Czega', 3),
('Mateusz', 'łółółółółó', 5);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

PS. To fikcyjne postacie :) i przepraszam za nazwy trochę pomieszane to (Baza znajduje się w Defaultowym TEST)

Na sam koniec nie mogę naprawić polskich znaków które nie chcą się wyświetlać prawidłowo jeżeli dane są odbierane z SQL 

komentarz 2 kwietnia 2017 przez xandros Nałogowiec (29,450 p.)
Jakiej wersji php używasz?
komentarz 2 kwietnia 2017 przez Pan_Izaak Nowicjusz (160 p.)
Wydaje mi się że 5.6.30 jak napisane jest w SQL ale nie jestem pewny niestety moją jedyną wiedzą o PHP jest ta ze szkoły (nauczycielka lekko mówiąc miała zerową wiedzę) i wiem o tym języku bardzo mało.

1 odpowiedź

0 głosów
odpowiedź 2 kwietnia 2017 przez kap Stary wyjadacz (11,620 p.)
$("#Glowna").load('Zawody.php');

Próbujesz tu wczytać do HTMLa plik pehapowy, nie ma sensu ta linijka.

W metodzie succes masz argument data i to on zawiera wynik skryptu pehapowego (o ile backend i samo zapytanie jest ok), uzyj tej zmiennej.

komentarz 2 kwietnia 2017 przez Pan_Izaak Nowicjusz (160 p.)
Dopiero uczę się JQuery i nie bardzo rozumiem dlaczego load nie ma sensu. Jak na razie to jedyna metoda jaką znam która wczytuje plik do danego diva co jest głównym założeniem mojego skryptu. Wydaje mi się że poprostu nie zrozumiałeś czemu tak zrobiłem ale jeżeli to ja się mylę to bardzo proszę o wytłumaczenie bo musiałem źle zrozumieć o co chodzi w metodzie load.

I myślałem że data to informacje przesyłane z formularza oraz nie bardzo rozumiem o jaką zmienną chodzi(z góry przepraszam jestem z natury praktykiem i rozumiem dopiero jak zobaczę albo sam przetestuje jakiś kod, tłumaczenie nazwami itp jest dla mnie dość trudne .
komentarz 2 kwietnia 2017 przez ShiroUmizake Nałogowiec (46,300 p.)
Load raczej się opłaca do ładowania treści statycznych (np: treści HTML,txt etc.), ale nie oczekujemy, że nasz kod coś z nimi zrobi. W tym przypadku bardziej lepszym rozwiązaniem jest użycie AJAX-a zdarzaniowego (Co mam wziąść, kiedy mam wziąść, jaki typ to danych jest)

Mówiąc prościej ładujesz jak kolega wyżej napisał ładujesz phpa jako plik ale nie jako wynik działania. Mówiąc jeszcze prościej jeżeli nastąpi zdarzenie submit, załaduj plik plik PHP. A powinno być, jeżeli ja wyśle submit, to zrób coś z moimi danymi(co zajmie mu trochę czasu) i zwróc wynik.

http://api.jquery.com/jquery.ajax/
komentarz 2 kwietnia 2017 przez Pan_Izaak Nowicjusz (160 p.)
Myślałem że to co biorę to dane statyczne. Chyba najlepiej jak wytłumaczę działanie mojego skryptu w punktach.

1.Formularz wysyła dane jaka ma być wartość 'wiek' i dzięki ajaxowi formatuje diva (id Glowna) i ładuje w nim plik Zawody.php

2.Władowany plik tworzy div-a (id accordion) i w nim listę h3 i div-ów z informacjami zabranymi z Bazy Danych .

(Wszystko dzieje się w divie (id Glowna))

3.Kiedy chcemy zobaczyć informacje posegregowane w inny sposób klikamy formularz i koło się zatacza.

Dlatego bardzo proszę o pokazanie jak ma wyglądać kod albo co jest w nim źle (w części JQuery i php).

Podobne pytania

+1 głos
3 odpowiedzi 1,084 wizyt
0 głosów
1 odpowiedź 219 wizyt
+2 głosów
2 odpowiedzi 259 wizyt
pytanie zadane 23 marca 2021 w JavaScript przez dee Początkujący (360 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...