Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> formularz z paroma podstronami
ravenaot
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.03.2013

Ostrzeżenie: (0%)
-----


Staram sie stworzyc formularz ktory bedzie mial pare podstron, czyli na kazdej z nich po 5 pytan, lacznie okolo 35. I teraz planuje dodac je do bazy danych i glowny problem lezy w jaki sposob. Czy na kazda podstrone jedna tabela i jak je ze soba najlepiej polaczyc czyli w taki sposob polaczyc wszystkie dane tak aby odpowiadaly tylko do jednego uzytkownika ktory go bedzie wypelnial. Uzytkownik jest oczywiscie anonimowy. Macie jakies pomysly?

Ten post edytował ravenaot 9.03.2013, 15:13:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
kamil_lk
post
Post #2





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

Ostrzeżenie: (0%)
-----


Sposób I:
Dzielisz formularz na kilka bloków w których ładujesz odpowiednie pytania, a następnie wyświetlasz/ukrywasz odpowiednie bloki. W ostatnim bloku oprócz pytań dodajesz przycisk obsługujący cały formularz.

Sposób II:
Robisz kilka formularzy. Dane z każdego zapisujesz do zmiennych sesyjnych. W ostatnim formularzu zapisujesz dane ze zmiennych sesyjnych do bazy.
Poniżej link do przykładu, który kiedyś tam pisałem w ramach nauki. Źródło mogę udostępnić, ale zaznaczam od razu, że cudów nie ma (IMG:style_emoticons/default/tongue.gif)
Przykład

Ten post edytował kamil_lk 9.03.2013, 15:40:22
Go to the top of the page
+Quote Post
StrefaPi
post
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


III sposób:

Robisz kilka formularzy. Dane z każdego zapisujesz do bazy danych (od razu po każdej części) z odpowiednim ID, które ustawiasz i pobierasz wcześniej (potem ID przechowujesz np. w sesji)... (IMG:style_emoticons/default/wink.gif)

(w przypadku natychmiastowego zapisu do bazy, masz przynajmniej odpowiedzi na część pytań w wypadku gdy użytkownik nie skończy ankiety bo się znudzi np.)

Ten post edytował StrefaPi 9.03.2013, 15:46:41
Go to the top of the page
+Quote Post
ravenaot
post
Post #4





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.03.2013

Ostrzeżenie: (0%)
-----


Kamil jezeli moglbys prosze udostepnij kod (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kamil_lk
post
Post #5





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

Ostrzeżenie: (0%)
-----


Bez zbędnych komentarzy proszę. Pisałem to kilka lat temu w ramach nauki. (IMG:style_emoticons/default/smile.gif)
http://kamilgluchowski.cba.pl/cv/index.zip <-- skopiuj i wklej do przeglądarki

Ten post edytował kamil_lk 9.03.2013, 16:12:54
Go to the top of the page
+Quote Post
ravenaot
post
Post #6





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.03.2013

Ostrzeżenie: (0%)
-----


Super, z tym mysle ze sobie juz poradze. Dzieki za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Sielly
post
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 28.01.2010

Ostrzeżenie: (0%)
-----


hmm, wydaje mi się najsensowniejszym rozwiązaniem sposób IV, czyli mając np 2 formularze, z jednego wysyłasz zmienne do drugiego i w tym drugim dajesz <input type="hidden"> o nazwie i wartości takiej jakie podał użytkownik na poprzedniej stronie.
Go to the top of the page
+Quote Post
kamil_lk
post
Post #8





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

Ostrzeżenie: (0%)
-----


Cytat(Sielly @ 9.03.2013, 18:09:25 ) *
hmm, wydaje mi się najsensowniejszym rozwiązaniem sposób IV, czyli mając np 2 formularze, z jednego wysyłasz zmienne do drugiego i w tym drugim dajesz <input type="hidden"> o nazwie i wartości takiej jakie podał użytkownik na poprzedniej stronie.


Bez sensu. Lepiej już zastosować sposób I z wykorzystaniem jQuery.
Go to the top of the page
+Quote Post
Sielly
post
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 28.01.2010

Ostrzeżenie: (0%)
-----


nie rozumiem, czemu według Ciebie jest to pomysł bez sensu, ale co kto lubi. (IMG:style_emoticons/default/wink.gif) Sposób z jquery jest dobry, tylko trzeba ogarniać jquery. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
kamil_lk
post
Post #10





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

Ostrzeżenie: (0%)
-----


Cytat
nie rozumiem, czemu według Ciebie jest to pomysł bez sensu

Prosty przykład. Zaczyansz czytać książkę z 10 rozdziałami.
Pierwszego dnia czytasz pierwszy rozdział.
Drugiego dnia czytasz znowu pierwszy, żeby przejść do drugiego? (IMG:style_emoticons/default/smile.gif)
Przynajmniej w moim przekonaniu jest to bezsensowne.
Go to the top of the page
+Quote Post
Sielly
post
Post #11





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 28.01.2010

Ostrzeżenie: (0%)
-----


ja zrozumiałem że jest to formularz np rejestracyjny, który na raz się uzupełnia. Jeśli nie, to ajax też nic nie da, musi być mysql. Dobra, autor topicu wybierze sobie metodę i sam zrobi. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
ravenaot
post
Post #12





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.03.2013

Ostrzeżenie: (0%)
-----


Panowanie mam jeszcze problem z pobraniem danych z bazy. Po uzupelnieniu metryki.php przechodzi mi do pytania.php w ktorym znajduje sie kod, do bazy ladnie dodaje ale nie w tym sęk. Mam problem z wyciagnieciem z bazy id ktore zostalo wlasnie wpisane do bazy danych. Pozniej zamieszczam kod, jakies pomysly co moge miec zle ?
  1. <?php
  2. require_once('bazadanych.php');
  3. // Łączenie się z bazą danych.
  4. $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)or die("Cannot execute SELECT query.");
  5.  
  6. if (isset($_POST['submit'])) {
  7. // Pobieranie danych do profilu z żądania POST.
  8. $pyt11 = $_POST['pyt11'];
  9. $pyt22 = $_POST['pyt22'];
  10. $pyt33 = $_POST['pyt33'];
  11. $pyt44 = $_POST['pyt44'];
  12. $pyt55 = $_POST['pyt55'];
  13. $pyt66 = $_POST['pyt66'];
  14. $pyt77 = $_POST['pyt77'];
  15. $pyt88 = $_POST['pyt88'];
  16. $pyt99 = $_POST['pyt99'];
  17. $query = "INSERT INTO metryka VALUES ('','$pyt11','$pyt22','$pyt33','$pyt44','$pyt55','$pyt66','$pyt77','$pyt88','$pyt99')";
  18. mysqli_query($dbc, $query);
  19. mysqli_close($dbc);
  20. }
  21.  
  22. $query2 = "SELECT * FROM metryka WHERE id = ".$_GET['id'];
  23. //$query2 = "SELECT * FROM metryka";
  24. $wynik = mysqli_query($dbc, $query2);
  25. while ($row = mysqli_fetch_array($wynik)) {
  26. echo $row['id'];
  27. }
  28.  
  29. ?>
Go to the top of the page
+Quote Post
!*!
post
Post #13





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Chodzi Ci o wyciągnięcie ostatniego ID? http://php.net/manual/en/mysqli.insert-id.php
Go to the top of the page
+Quote Post
ravenaot
post
Post #14





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.03.2013

Ostrzeżenie: (0%)
-----


Chodzi mi o wyciagniecia tego 'id' aby przekazac je dalej w podstronach formularza(pytania.php, pytania2.php itd.) tak zeby odpowiedzi byly spojnie dodane do bazy danych
Go to the top of the page
+Quote Post
!*!
post
Post #15





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Z tego co widzę, id siedzi w get
  1. $_GET['id']
lub przeleć post vardump() i wygrzeb.
Go to the top of the page
+Quote Post
ravenaot
post
Post #16





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.03.2013

Ostrzeżenie: (0%)
-----


Doszedlem do takiego punktu, zwraca mi wartosc "Id dodanego rekordu: 0". Do bazy danych dodaje, ale nie zwraca mi zadnego id. W bazie danych mam ustawiona kolumne na auto-increment, jakies pomysly?

  1. <?php
  2. require_once('bazadanych.php');
  3. // Łączenie się z bazą danych.
  4. $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)or die("Cannot execute SELECT query.");
  5.  
  6. if (isset($_POST['submit'])) {
  7. // Pobieranie danych do profilu z żądania POST.
  8. $pyt11 = $_POST['pyt11'];
  9. $pyt22 = $_POST['pyt22'];
  10. $pyt33 = $_POST['pyt33'];
  11. $pyt44 = $_POST['pyt44'];
  12. $pyt55 = $_POST['pyt55'];
  13. $pyt66 = $_POST['pyt66'];
  14. $pyt77 = $_POST['pyt77'];
  15. $pyt88 = $_POST['pyt88'];
  16. $pyt99 = $_POST['pyt99'];
  17. $query = "INSERT INTO metryka VALUES ('','$pyt11','$pyt22','$pyt33','$pyt44','$pyt55','$pyt66','$pyt77','$pyt88','$pyt99')";
  18. mysqli_query($dbc, $query);
  19. $id = mysql_insert_id();
  20. if($query) echo "Rekord o ID: ".$id." został dodany poprawnie";
  21. else echo "Błąd nie udało się dodać nowego rekordu";
  22.  
  23.  
  24.  
  25. // dodajemy rekord do bazy
  26.  
  27. mysqli_close($dbc);
  28. }
  29. ?>


Ten post edytował ravenaot 11.03.2013, 22:15:58
Go to the top of the page
+Quote Post
Sielly
post
Post #17





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 28.01.2010

Ostrzeżenie: (0%)
-----


a masz w tabeli kolumnę z kluczem AUTO_INCREMENT ?
Go to the top of the page
+Quote Post
ravenaot
post
Post #18





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.03.2013

Ostrzeżenie: (0%)
-----


Witam ponownie, zeby nie zakladac nowego tematu to zadam pytanie tutaj. Staram sie zrobic walidacje, nic specjalnego, ale w formularzu mam ze po uzupelnieniu pol przechodzi do nastepnej strony, wiec jezeli umieszcze kod na tej ktora ma sie wczytac to wyswietli sie blad na niej a nie wczesniej. Tak wiec postanowilem zeby zmienic parametr
<form method="post" action="index.php"> na <form method="post" action="pytania_1_5.php"> Tyle ze cos mi to nie wychodzi, moglby ktos rzucic okiem? mecze sie nad tym juz 2 dzien.
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. $pyt11 = mysqli_real_escape_string($dbc, trim($_POST['pyt11']));
  4. $pyt22 = mysqli_real_escape_string($dbc, trim($_POST['pyt22']));
  5. $pyt33 = mysqli_real_escape_string($dbc, trim($_POST['pyt33']));
  6.  
  7.  
  8. if (!empty($pyt11) && !empty($pyt22) && !empty($pyt33) {
  9. echo '<form method="post" action="pytania_1_5.php">';
  10. }
  11. else {
  12. echo '<div id="error">';
  13. echo '<br>Musisz wpisać wszystkie dane </a>';
  14. echo '</div>';
  15. echo '<form method="post" action="index.php">';
  16. }
  17. }
  18. ?>
  19. <h2>METRYKA RESPONDENTA</h2><br />
  20.  
  21. <h3>Płeć</h3>
  22. <input id="income" type="radio" name="pyt11" value="Kobieta" />Kobieta<br />
  23. <input id="income" type="radio" name="pyt11" value="Mężczyzna" />Mężczyzna
  24. <h3>Do której badanej grupy wiekowej się Pan/i zalicza?</h3>
  25. <input type="radio" name="pyt22" value="20-30" />20-30<br />
  26. <input type="radio" name="pyt22" value="31-40" />31-40<br />
  27. <input type="radio" name="pyt22" value="41-50" />41-50 <br />
  28. <input type="radio" name="pyt22" value="51-60" />51-60 <br />
  29. <input type="radio" name="pyt22" value="Więcej niż 60 " />Więcej niż 60
  30. <h3>Jakie stanowisko zajmuje Pan/i w firmie?</h3>
  31. <input type="text" name="pyt33" size="50"/>
  32.  
  33. <center><input type="submit" value="Zatwierdz" name="submit"/></center><br /><br />
  34. </form>


Ten post edytował ravenaot 15.03.2013, 12:17:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 10:34