Witam.
Robię aplikację na którą będzie się składało kilka podstron z formularzami. Jedna podstrona natomiast będzie funkcjonowała na zasadzie ajax. Czyli:
pusta strona + przycisk "dodaj pozycje" -----[ naciskam przycisk]---> za pomocą ajaxa pokazuje formularz z przyciskiem "dodaj" ---[naciskam dodaj]--->
...no i właśnie. Ja sobie wymyśliłem to tak:
---> za pomocą ajaxa wysyłam dane z formularza do pliku get.php ----> tworze dynamicznie obiekt który przechowuje dane pobrane z post ---> serializuje obiekt, zapisuję go do sesji i wyswietlam dane za pomocą echo ----> wyswietlone dane są przesyłane z powrotem do zmiennej i dodawane jako pozycja do diva.
Trochę to zagmatwałem. Najlepiej pokażę kod:
<?php session_set_cookie_params(60*60*24*7); session_start(); ?>
<script type="text/javascript">
$(document).ready(function() {
var counter =
<?php
if(count($_SESSION) == 0) echo "0";
else echo $_SESSION["counter"];
?>
;
$("#go").click(function(){
var zapytanie = $.ajax({
url: "get.php",
type: "POST",
async: false,
data: $('form').serialize() + '&counter=' +counter,
error: function() {
alert("Błąd");
},
success: function() {
counter++;
}
}).responseText;
$("#text").append('
<p id="item' + counter + '">' + zapytanie + counter + '
</p>');
$('#item' + counter).hide().fadeIn(500);
});
});
<?php
include("class.php");
if(count($_SESSION) > 0) {
for ($i=0; $i<=count($_SESSION)-2; $i++) {
$a = $_SESSION[$arr[$i]];
$b = unserialize($a);
echo "<p id='item".$i."'>".$b->showData()."
</p>";
}
}
?>
<form method="post" action="#"> <input type="text" name="imie" value="imie"> <input type="text" name="nazwisko" value="nazwisko"> <a href="#" id="go">Go
</a>
Klasa:
<?php
class item {
private $imie;
private $nazwisko;
function getImie() {
$this->imie = $_POST['imie'];
}
function getNazwisko() {
$this->nazwisko = $_POST['nazwisko'];
}
function setData() {
$this->getImie();
$this->getNazwisko();
}
function showData() {
//$this->getImie();
//$this->getNazwisko();
return "Cześć ".$this->imie." ".$this->nazwisko;
}
}
0 => "zero",
1 => "jeden",
2 => "dwa",
3 => "trzy",
4 => "cztery",
5 => "piec",
6 => "szczesc",
7 => "siedem",
8 => "osiem",
9 => "dziewiec",
10 => "dziesiec",
11 => "jedenascie",
12 => "dwanascie",
13 => "trzynascie",
14 => "czternascie",
15 => "pietnascie",
16 => "szesnascie",
17 => "siedemnascie",
18 => "osiemnascie",
19 => "dziewietnascie",
20 => "dwadziescia"
);
?>
get.php
<?php
include("class.php");
$item = new item;
$item->setData();
$_SESSION["counter"] = $_POST["counter"];
$_SESSION[$arr[$_POST["counter"]]] = serialize($item);
?>
I tutaj pytanie. Czy rozwiązania:
przesyłanie danych do osobnego pliku
serializacja i deserializacja
trochę na sztywno nazywanie zmiennych sesyjnych
są dobre?
Od razu uprzedzam że baza i pliki nie wchodzą w gre
Ten post edytował makbol 23.07.2011, 15:44:53