Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: lista z przypisanymi wartościami
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
cheschire_kotek
Witam,

mam formularz wysyłany przez php. Oddzielnie wyskrobałem z pomocą internetu skrypt przypisujący cenę do produktu z listy. Niestety po dodaniu skryptu do formularza przestał mi php prawidło działać (przesyła cene przedmiotu a nie nazwę). A do tego skryp też nie działa. Proszę o informację czy da się to jakoś łatwo usprawnić
  1. <?php
  2.  
  3. if (!empty($_POST['submit'])) { // sprawdza czy formularz został wysłany
  4.  
  5. $to = "info@glinaidrewno.pl";
  6. $subject = "Zamowienie";
  7. $tresc = "Zamawiam lampkę: $_POST[lampka]\nIlosc: $_POST[sztuk]\nWyslal: $_POST[name]\nMail: $_POST[email]";
  8. $header = "From: $_POST[email]";
  9. $sent = @mail($to, $subject, $tresc, $header);
  10.  
  11.   if ($sent) {
  12. print "Wiadomosc doszla";
  13. }
  14. else {
  15. print "probuj dalej";
  16. }
  17. }
  18.  
  19. ?>

  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5.  
  6.  
  7. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"/>
  8. <title>formularz php</title>
  9.  
  10. <style type="text/css">
  11.  
  12. <script type="text/javascript">
  13.  
  14. function favBrowser()
  15. {
  16. var mylist=document.getElementById("myList");
  17. document.getElementById("favorite").value=mylist.options[mylist.selectedIndex].value;
  18.  
  19. }
  20.  
  21.  
  22. td {font-size:12px; font-family: verdana}
  23.  
  24.  
  25. </head>
  26.  
  27.  
  28. <form action="contact.php" method="post">
  29.  
  30. <tr style="height:1em">
  31. <td style="width:10em">Wybierz lampke:</td>
  32. <td style="width:10em"><select style="width:15em" id="myList" onchange="favBrowser()" name="lampka" value="".$_POST['lampka']"">
  33. <option value="450">lampka1</option>
  34. <option value="500">lampka2</option>
  35. </td>
  36. <td>sztuk:</td><td><input type="text" name="sztuk" style="width:2em" value="".$_POST['sztuk']""/></td>
  37. <td>cena:</td><td><input type="text" id="favorite" size="2"/></td>
  38. </tr>
  39. <tr>
  40. <td style="width:10em">Imie i nazwisko:</td><td><input type="text" name="name" style="width:15em" value="".$_POST['name']""/></td>
  41. </tr>
  42. <tr>
  43. <td style="width:10em">Adres email:</td><td><input type="text" name="email" style="width:15em" value="".$_POST['email']/></td>
  44. </tr>
  45. <input type="submit" value="Wyslij" name="submit"/>
  46. </form>
  47. </body>
  48. </html>


Z góry dziękuję,
Tomek
f1xer
no przesyłasz cene bo myList w <options> ma value="450" czyli cena daj value="nazwa" to Ci prześle nazwę poza tym trzymaj się tego że piszesz $_POST['nazwa'] a nie $_POST[nazwa]
cheschire_kotek
f1xer rozumiem, że wprowadzenie value w <option> zmienia mi przesyłane dane. Tyle, że value w <option> jest mi potrzebne do działania skryptu, bo określa cenę danego przedmiotu, wybranie przedmiotu podwoduje pojawienie się ceny. To jest skrypt, który oddzielnnie wycisnąłem z internetu

  1. <script type="text/javascript">
  2.  
  3. function favBrowser()
  4. {
  5. var mylist=document.getElementById("myList");
  6. document.getElementById("favorite").value=mylist.options[mylist.selectedIndex].value;
  7. }
  8. </head>
  9.  
  10. <p>
  11. Wybierz lampke:
  12. <select id="myList" onchange="favBrowser()">
  13. <option value="500">lampka 1</option>
  14. <option value="450">lampka 2</option>
  15. <option value="600">lampka 3</option>
  16. cena: <input type="text" id="favorite" size="20"></p>
  17. </form>
  18. </body>
  19. </html>


Problem mam, bo skrypt wsadzony we wcześniej napisany formularz
  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5.  
  6. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"/>
  7. <title>formularz php</title>
  8. <style type="text/css">
  9. td {font-size:12px; font-family: verdana}
  10. </head>
  11.  
  12. <form action="contact.php" method="post">
  13. <tr style="height:1em">
  14. <td style="width:10em">Wybierz lampke:</td>
  15. <td style="width:10em"><select name="lampka" style="width:15em" value="".$_POST['lampka']"">
  16. <option>lampka1</option>
  17. <option>lampka2</option>
  18. </td>
  19. <td>sztuk:</t><td><input type="text" name="sztuk" style="width:2em" value="".$_POST['sztuk']""/></td>
  20. </tr>
  21. <tr>
  22. <td style="width:10em">Imie i nazwisko:</td><td><input type="text" name="name" style="width:15em" value="".$_POST['name']""/></td>
  23. </tr>
  24. <tr>
  25. <td style="width:10em">Adres email:</td><td><input type="text" name="email" style="width:15em" value="".$_POST['email']/></td>
  26. </tr>
  27. <input type="submit" value="Wyslij" name="submit"/>
  28. </form>
  29. </body>
  30. </html>

przestaje działać, nie wyświetla się cena i zamiat lampka1 lub lampka2 przesyła ich ceny. Moje pytanie jest, czy mogę i jeżeli tak, to jak mogę prawidłowo wsadzić skrypt we wcześniej napisany formularz?
f1xer
no to skoro cena musi być w option to nie możesz użyć tej listy do przesyłania nazwy przedmiotu
możesz stworzyć sobię ukryte pole formularza
  1. <input type="hidden" id="ukrytaNazwa" name="nazwa" value="<?php
  2. if (isset($_POST['nazwa']))
  3. echo $_POST['nazwa];
  4. else
  5. echo 'ampka 1'; // czyli pierwszy element z listy to tak na wypadek gdyby skrypt JS nigdy się nie uruchomił
  6. ?>"/>


i zakładając że to tutaj będzie nazwa lampki trzeba jeszcze dopisać do skryptu JS
  1. document.getElementById("ukrytaNazwa").value=mylist.options[mylist.selectedIndex].text;

wtedy w $_POST['nazwa'] bedzie np. lampka 1
pisane tak z głowy bo nie mam jak przetestować tak więc możliwe błędy smile.gif
cheschire_kotek
patrzę na podpowiedź z lewa i z prawa i nic sad.gif Możesz mi powiedzieć, gdzie i jak następuje powiązanie pozycji listy z <select> z ukrytym polem <input>?
f1xer
Kod
document.getElementById("ukrytaNazwa").value=mylist.options[mylist.selectedIndex].text;


przypisuje to polu hidden nie wartość ale nazwę z listy czyli tekst lampa 1 lampa 2 itd.
cheschire_kotek
działa snitch.gif wreszcie dodarło o co chodzi

Dziękuję za pomoc.

Miałbym jeszcze prośbę, jak mogę powiązać cenę z ilością sztuk?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.