Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][PHP]Formularz z wcześniejszym wyborem kategorii.
brzanek
post
Post #1





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Witam robię dodatek na swoją stronę a mianowicie możliwość dodawania ikonek na mapę google.
Przedstawię jak to wygląda.
Mam formularz zgłoszeniowy http://pogoda-zachodniopomorskie.pl/zjawiska/new.php
Tam dodaje się nowe zdarzenia. Wszystkie dane wędrują do bazy sql na moim serwerze a potem za pomocą skryptu zgodnie z podanymi współrzędnymi wyświetlają się na mapie w tym miejscu http://pogoda-zachodniopomorskie.pl/zjawiska/index.html
Problem w tym że chcę tam dodać kilka kategorii typu: grad, opady, wiatr, trąba itp każda z kategorii będzie musiała mieć inne pola w formularzu ale aby wędrowało wszystko do jednej bazy danych bo inaczej nie będzie można pobierać wszystkiego do mapy.
Wybór ikonki następuje w formularzu gdzie mogła by być kategorią.
Jak zrobić aby najpierw była możliwość wyboru kategorii (odrazu ikony) a potem aby na dole pojawił się formularz z odpowiednimi polami.
Mam nadzieję że wytłumaczyłem o co mi chodzi.
Przedstawiam kod formularza.
  1. <?php
  2. if(isset($_POST["submit"])) {
  3. include ("db.php");
  4.  
  5. $dzien = $_POST['dzien'];
  6. $godzina = $_POST['godzina'];
  7. $intensywnostmin = $_POST['intensywnostmin'];
  8. $lat = $_POST['lat'];
  9. $lng = $_POST['lng'];
  10. $flaga = $_POST['flaga'];
  11. $miejsce = $_POST['miejsce'];
  12. $add = mysql_query("INSERT INTO mroz(dzien, godzina, intensywnostmin, lat, lng, flaga, miejsce) VALUES('$dzien', '$godzina', '$intensywnostmin', '$lat','$lng','$flaga','$miejsce')");
  13.  
  14.  
  15. if ($add) {
  16. echo '<p>Dodano do bazy</p><br>';
  17. echo '<p><a href="http://pogoda-zachodniopomorskie.pl/zjawiska/index.html">Przejdz do mapy</a></p>';
  18. } else {
  19. echo mysql_error(); echo '<p>Błąd! Spróbuj ponownie</p>';
  20. }
  21. } else {
  22. ?>
  23.  
  24.  
  25. <!-- kod formularza-->
  26. <form action="new.php" method="post">
  27. <table>
  28. <tr>
  29. <td align="right">Data w formie (18.05.2014) </td>
  30. <td><input type="text" name="dzien" style="width: 200px"></td>
  31. </tr>
  32. <tr>
  33. <td align="right">Godzina w formie (18:12) </td>
  34. <td><input type="text" name="godzina" style="width: 200px"></td>
  35. </tr>
  36. <tr>
  37. <td align="right">Najniższa temperatura w formie (-22) </td>
  38. <td><input type="text" name="intensywnostmin" style="width: 50px"></td>
  39. </tr>
  40. <tr>
  41. <td align="right">Długość geograficzna w przedziale (52.581122 - 54.599999) </td>
  42. <td><input type="text" name="lat" style="width: 200px"></td>
  43. </tr>
  44. <tr>
  45. <td align="right">Szerokość geograficzna w przedziale (14.051234 - 17.023456) </td>
  46. <td><input type="text" name="lng" style="width: 200px"></td>
  47. </tr>
  48. <tr>
  49. <td align="right">ikona (www.pogoda-zachodniopomorskie.pl/images/opady.png</td>
  50. <td><select name="flaga" size="1">
  51. <option>opady</option>
  52. <option>grad</option>
  53. <option>traba</option>
  54. </select></td>
  55. </tr>
  56. <tr>
  57. <td align="right">miejsce </td>
  58. <td><input type="text" name="miejsce"></td>
  59. </tr>
  60.  
  61. <tr>
  62. <td colspan="2" align="right">
  63. <input type="submit" name="submit" value="Wyślij" /></td>
  64. </tr>
  65. </table>
  66. </form>
  67.  
  68. <?php
  69. }
  70. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
tzm
post
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Podobny problem miałem kiedyś jak pisałem gierke ..
Najpierw musiałem wybrać klase postaci i potem dopiero ustalać jakieś inne parametry.
Ogólnie podzieliłem stronę na step1 i step2.
Na pierwszej wybierałem klasę i w tablicy sesji zapisywałem wynik który potem przenosiłem dalej, dalej wybierałem odpowiednie parametry i w step3 wszystko z tablicy sesji zapisywałem do bazy danych.
W sumie rozwiązanie dobre. Ewentualnie GET dałby radę no ale wiadomo że przy formularzach lepiej POST'a używać.

Edit: poza tym to sobie zabezpiecz bo cuda się dzieją wink.gif

Ten post edytował tzm 27.08.2014, 08:02:53
Go to the top of the page
+Quote Post
brzanek
post
Post #3





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


tzm możesz podać jakiś namiar na taki kod myślę że to by mi wystarczyło.
Chyba że jest jakiś inny na to sposób. Może cos z js?
Go to the top of the page
+Quote Post
tzm
post
Post #4





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


niestety nie mam, to dawno bylo. czego nie rozumiesz to wyjasnie.
Go to the top of the page
+Quote Post
brzanek
post
Post #5





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Jak podzielić stronę na step1 i step2 i kolejne
Przypominam że wszystko musi odbyć się w jednym pliku
http://pogoda-zachodniopomorskie.pl/zjawiska/new.php
Bo wszystko zapisuje się do jednej bazy danych do jednej tabeli
W kolejnych step1 będą jakieś pola do wypełnienia a w kolejnym step2 jeszcze inne - rozumiesz?
Go to the top of the page
+Quote Post
tzm
post
Post #6





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


switch($_GET['page'])

i robisz w linki ?page=step1/2/3

tylko nawet lepiej jak będziesz miał ?page=1/2/3 i potem sprawdzał czy $_GET['page'] to (int)
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Przypominam że wszystko musi odbyć się w jednym pliku
http://pogoda-zachodniopomorskie.pl/zjawiska/new.php
Bo wszystko zapisuje się do jednej bazy danych do jednej tabeli

To, że wszystkjo zapisywac ma sie w jednej tabeli w żaden sposób nie powoduje, że ma sie wykonywać w jednym pliku... Ot taka luźna dygresja


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tzm
post
Post #8





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 27.08.2014, 10:45:45 ) *
To, że wszystkjo zapisywac ma sie w jednej tabeli w żaden sposób nie powoduje, że ma sie wykonywać w jednym pliku... Ot taka luźna dygresja


jasne że może być w wielu plikach i zapisywać do jednej tabeli, tylko po co w sumie? jak przemyśli kod to faktycznie można to upchać bez burdelu do jednego pliku. ot taka pojedyńcza klasa.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Chciałem jedynie poprawić jego błędny tok myślenia. Nie mowie że tak należy robić. Mowie jedynie, ze jego założenie jest błędne. Lepiej mu to powiedziec teraz niz przez kolejne 5 lat ma żyć w tym mylnym przeświadczeniu.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
brzanek
post
Post #10





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Zrobiłem coś takiego.
  1. <?php
  2.  
  3. if(!isset($_GET['act']))
  4. {
  5. $_GET['act'] = 'index';
  6. }
  7. switch($_GET['act'])
  8. {
  9. case 'dod':
  10. echo 'Jak nie damy komendy "break", to pokaże nam się też...<br/>';
  11. case 'dodaj':
  12.  
  13.  
  14. if(isset($_POST["submit"])) {
  15. include ("db.php");
  16.  
  17. $dzien = $_POST['dzien'];
  18. $godzina = $_POST['godzina'];
  19. $intensywnostmin = $_POST['intensywnostmin'];
  20. $lat = $_POST['lat'];
  21. $lng = $_POST['lng'];
  22. $flaga = $_POST['flaga'];
  23. $miejsce = $_POST['miejsce'];
  24. $add = mysql_query("INSERT INTO mroz(dzien, godzina, intensywnostmin, lat, lng, flaga, miejsce) VALUES('$dzien', '$godzina', '$intensywnostmin', '$lat','$lng','$flaga','$miejsce')");
  25.  
  26.  
  27.  
  28. if ($add) {
  29. echo '<p>Dodano do bazy</p><br>';
  30. echo '<p><a href="http://pogoda-zachodniopomorskie.pl/zjawiska/index.html">Przejdz do mapy</a></p>';
  31. } else {
  32. echo mysql_error(); echo '<p>Błąd! Spróbuj ponownie</p>';
  33. }
  34. } else {
  35. echo '<form action="new.php" method="post">
  36. <table>
  37. <tr>
  38. <td align="right">Data w formie (18.05.2014) </td>
  39. <td><input type="text" name="dzien" style="width: 200px"></td>
  40. </tr>
  41. <tr>
  42. <td align="right">Godzina w formie (18:12) </td>
  43. <td><input type="text" name="godzina" style="width: 200px"></td>
  44. </tr>
  45. <tr>
  46. <td align="right">Najniższa temperatura w formie (-22) </td>
  47. <td><input type="text" name="intensywnostmin" style="width: 50px"></td>
  48. </tr>
  49. <tr>
  50. <td align="right">Długość geograficzna w przedziale (52.581122 - 54.599999) </td>
  51. <td><input type="text" name="lat" style="width: 200px"></td>
  52. </tr>
  53. <tr>
  54. <td align="right">Szerokość geograficzna w przedziale (14.051234 - 17.023456) </td>
  55. <td><input type="text" name="lng" style="width: 200px"></td>
  56. </tr>
  57. <tr>
  58. <td align="right">ikona (www.pogoda-zachodniopomorskie.pl/images/opady.png</td>
  59. <td><select name="flaga" size="1">
  60. <option>opady</option>
  61. <option>grad</option>
  62. <option>traba</option>
  63. </select></td>
  64. </tr>
  65. <tr>
  66. <td align="right">miejsce </td>
  67. <td><input type="text" name="miejsce"></td>
  68. </tr>
  69. <tr>
  70. <td colspan="2" align="right">
  71. <input type="submit" name="submit" value="Wyślij" /></td>
  72. </tr>
  73. </table>
  74. </form>';
  75. }
  76. case 'wiatr':
  77. echo 'Usuwanie danych';
  78. break;
  79. case 'edytuj':
  80. echo 'Edycja danych';
  81. break;
  82. case 'usun':
  83. echo 'Usuwanie danych';
  84. break;
  85. default:
  86.  
  87. echo '<p><a href="?act=dodaj">Dodaj grożne zjawisko - opady</a></p>';
  88. echo '<p><a href="?act=wiatr">Dodaj grożne zjawisko - wiatr</a></p>';
  89. }
  90. ?>

Czy coś takiego może być?

Dobra zrobiłem już podział i odpowiada mi to, ale napotkałem kolejny problem jak można pobrać współrzędne z mapy google i po kliknięciu w odpowiednie miejsce na mapie współrzędne dodawały się do odpowiedniego pola w formularzu?
Tu jest formularz http://pogoda-zachodniopomorskie.pl/zjawiska/grad.php w polach
Długość geograficzna w przedziale (52.581 - 54.599) *
Szerokość geograficzna w przedziale (14.051 - 17.023) *
Powinny pojawić się automatycznie współrzędne po kliknięciu na mapie. Mapa otwierała by się w nowym oknie.
Macie jakiś na to pomysł?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Google Maps ma swoje API oraz dokuementacje wraz z przykładami jak to się robi...
Zacznij wpierw od wstawienia google maps do tego forma.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
brzanek
post
Post #12





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Ok dodałem linka do mapy. Mapa otwiera się w nowym oknie ale jak teraz zastosować te API aby wysiągnąć (po kliknięciu na mapie) współrzędne oraz aby dodały się w odpowiednich polach formularza?
Tak wygląda kod ze stronę mapa.html
  1. <head>
  2. <title>Asynchronous Loading</title>
  3. <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
  4. <meta charset="utf-8">
  5. html, body, #map-canvas {
  6. height: 100%;
  7. margin: 0px;
  8. padding: 0px
  9. }
  10. </style>
  11. function initialize() {
  12. var mapOptions = {
  13. zoom: 8,
  14. center: new google.maps.LatLng(53.5664142, 15.7379150)
  15. };
  16.  
  17. var map = new google.maps.Map(document.getElementById('map-canvas'),
  18. mapOptions);
  19. }
  20.  
  21. function loadScript() {
  22. var script = document.createElement('script');
  23. script.type = 'text/javascript';
  24. script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&' +
  25. 'callback=initialize';
  26. document.body.appendChild(script);
  27. }
  28.  
  29. window.onload = loadScript;
  30.  
  31. </script>
  32. </head>
  33. <body>
  34. <div id="map-canvas" style="width: 500px; height: 500px; border: 1px solid black; background: gray;"></div>
  35. </body>
  36. </html>
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Mapa ma byc na tej samej stronie co formularz.
Od biedy mozesz zrobic popup (window.open) lub jakies okienko modalne.
W przeciwnym wypadku nie bedziesz mial jak odwolac sie do okna formularza


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
brzanek
post
Post #14





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Nie mogę sobie poradzić z tą opcją window.open coś mi nie wychodzi. Robiłem to przez generator http://www.kurshtml.edu.pl/skrypty/generator_okien,okno.html skopiowałem kod
  1. window.open('http://pogoda-zachodniopomorskie.pl/zjawiska/mapa.html', 'mapa', 'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizab
    le=no,fullscreen=no,channelmode=no,width=500,height=500,left=800,top=20')

Ale coś to nie działa.

Wracam do tego projektu dodałem już mapę na stronie w której chcęaby po kliknięciu na dany punkt na mapie google dodawało tego punktu współrzędne do formularza.
http://pogoda-zachodniopomorskie.pl/infusi..._panel/grad.php
Tak to wygląda
Nie wiem jak teraz zrobić aby pobierało te współrzędne. Może ktoś podpowiedzieć?

Udało mi się zrobić aby pobierało dane z mapy ale mam teraz problem bo nie chcą mi się zapisać te współrzędne do bazy sql.
O to fragment kodu gdzie generowane są współrzędne i powinny być zapisywane do bazy danych.
  1. <table border="0" cellpadding="0" cellspacing="0" width="750px" align="left">
  2. <tr>
  3. <td class="tbl" width="490px">Długość geograficzna w przedziale (52.581 - 54.599) <b>*</b></td>
  4. <td class="tbl" width="260px" id="LatLong" name="lat"></td>
  5. </tr>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 10:06