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; $('#item' + counter).hide().fadeIn(500); }); }); </script> </head> <body> <div id="text"> <?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>"; } } ?> </div> <form method="post" action="#"> <input type="text" name="imie" value="imie"> <input type="text" name="nazwisko" value="nazwisko"> </form> </body> </html>
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"]; ?>
I tutaj pytanie. Czy rozwiązania:
- przesyłanie danych do osobnego pliku
serializacja i deserializacja
trochę na sztywno nazywanie zmiennych sesyjnych
Od razu uprzedzam że baza i pliki nie wchodzą w gre