Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nietypowe przkazanie zmiennej PHP do JS
Forum PHP.pl > Forum > Po stronie przeglądarki
kaznodzieja
Witam!

Sprawdziłem opisywane na forum sposoby przekazania zmiennej php do js i żaden nie działa. Proszę o pomoc dla poniższego kodu lub sposób na obliczenie daty o 10 dni wcześniejszej niż obecna w JS.

To jest fragment kodu a zmienna $ddata jest obliczana w php. Jeśli potrzeba umieszcze całość na serwerze i podam linka.

  1. $ddata="2011-01-02";


  1. echo '<script type="text/javascript">
  2. $().ready(function() {
  3. // validate the comment form when it is submitted
  4. $(function()
  5. {
  6. $(".date-pick").datePicker(
  7. {
  8. startDate: !!!! tutaj zmienna z php!!!!;
  9. endDate: (new Date()).asString()
  10. }
  11. );
  12. });
  13.  
  14.  
  15. ....
  16.  
kamil4u
Kod
<?php
//....
?>
<script type="text/javascript">
$().ready(function() {
       // validate the comment form when it is submitted
      $(function()
{
    $(".date-pick").datePicker(
        {
            startDate: '<?php echo($ddata); ?>',
            endDate: (new Date()).asString()
        }
    );
});
<?php
//....
?>
celbarowicz
HTML+PHP do JS
  1. html>
  2. <head>
  3. <script language="javascript" type="text/javascript">
  4. function zmiana(a,b){var n; var i2;var ix; var z;var k;
  5. n=a+'->'+b;
  6.  
  7. alert(n);
  8. }
  9.  
  10. </script>
  11. <head>
  12. <body>
  13. <form>
  14. <?php $a='celbarowicz'; $b='2011-01-02';?>
  15.  
  16. <input type="button" value="BUT" onclick="zmiana('<?php echo $a; ?>','<?php echo $b; ?>');">
  17.  
  18. </form>
  19. </div>
  20.  
  21.  
  22. <br>
  23. </body>
  24. </html>
  25.  


ponadto cofnij datę o ? dni
  1. <?php
  2. $dni=3;
  3. echo $wynik = date("Y-m-d",( strtotime("-$dni day")));
  4.  
  5. ?>
  6.  

kaznodzieja
Opisywane sposoby nie działają już je testowałem.

Może przykład zobrazuje problem, w przykładzie do zmiennej "startDate" podaje ręcznie datę a chce by była z php. Aby wpisać datę należy kliknąć na ikonę kalendarza i wybrać datę z zakresu od 2011-01-11 do dnia dzisiejszego.
Przykład po linkiem http://vlaho.pl/a/
Całość do pobrania po linkiem http://vlaho.pl/a/a.7z

  1. <head>
  2. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  3.  
  4.  
  5. <link href="datePicker.css" rel="stylesheet" type="text/css" />
  6.  
  7.  
  8. <script type="text/javascript" src="http://ajax.googleapis.com/
  9. ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  10. <script src="jquery.js" type="text/javascript"></script>
  11.  
  12. <script type="text/javascript" src="date.js"></script>
  13. <!--[if IE]><script type="text/javascript" src="jquery.bgiframe.js"></script><![endif]-->
  14. <script type="text/javascript" src="jquery.datePicker.js"></script>
  15.  
  16. </head>
  17.  
  18. <style type="text/css">
  19. a.dp-choose-date {
  20. float: left;
  21. width: 32px;
  22. height: 32px;
  23. padding: 0;
  24. margin: -3px 0px 0;
  25. display: block;
  26. text-indent: -2000px;
  27. overflow: hidden;
  28. background: url(calendar.png) no-repeat;
  29. }
  30. /*a.dp-choose-date.dp-disabled {
  31. background-position: 0 -20px;
  32. cursor: default;
  33. }
  34. input.dp-applied {
  35. width: 140px;
  36. float: left;
  37. */
  38. }
  39.  
  40.  
  41. </style>
  42.  
  43. <?php
  44.  
  45. $ddata='2011-01-11';
  46.  
  47. echo "<script type='text/javascript'>
  48.  
  49. $().ready(function() {
  50.  
  51. var a=new Date();
  52. a.setDate(a.getDate()+ 2);
  53. var r1=a.getFullYear();
  54. var m1=a.getMonth()+1;
  55. var d1=a.getDate();
  56. var zm=r1+'-'+m1+'-'+d1;
  57.  
  58. // validate the comment form when it is submitted
  59. $(function()
  60. {
  61. $('.date-pick').datePicker(
  62. {
  63. startDate: '2011-01-11',
  64. endDate: (new Date()).asString()
  65. }
  66. );
  67.  
  68. });
  69.  
  70.  
  71. });
  72. </script>";
  73.  
  74.  
  75.  
  76.  
  77. <form class="cmxform" id="signupForm" method="post" action="#">
  78.  
  79.  
  80. <p>
  81. <label for="data_o">Przeglšd wykonany</label>
  82. <input id="date_o" name="data_o" class="date-pick" />
  83.  
  84. </p>
  85.  
  86. </form>';
  87.  


phpion
Przykład ~kamil4u będzie działał. Chodzi konkretnie o tą linijkę:
  1. startDate: '<?php echo($ddata); ?>',

Czy na pewno masz datę w '? Czy na pewno masz , na końcu? Generalnie sprawdź co Ci się drukuje w źródle strony.
kaznodzieja
Dzięki za pomoc! Musiałem sobie uświadomić(co to napisałem) że kod JS już był osadzony w php i nie było już sensu wstawiania <?php ?>
Crozin
Przekazywanie informacji PHP -> JS poprzez:
  1. startDate: '<?php echo($ddata); ?>',
To proszenie się o kłopoty. Wystarczy, że w takim ciągu pojawi się "'", "\" czy coś takiego i już jesteś... masz przechlapane.

Dane eksportuj w formie JSON-a, a przynajmniej będziesz mieć pewność, że ich format jest prawidłowy.
  1. <?php
  2.  
  3. $jsonEncoded = json_encode(array(
  4. 'startDate' => '2008-01-19',
  5. 'unsafeData' => 'Hello "world!", Unikod? \\u0123 Nie to nadal \'\\u0123\'.'
  6. ));
  7.  
  8. ?>
  9.  
  10. ...
  11.  
  12. var data = <?php echo $jsonEncoded ?>;
kamil4u
@Crozin: masz rację, ale gdy wiesz jak dokładnie będzie wyglądała zmienna(tu data) to czy jest sens takiego "bawienia się"? Moim zdaniem niekoniecznie, chyba, że w założeniach mamy, że z biegiem czasu ta część kodu może się zmienić.
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.