Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]problem ze zmiennymi
Forum PHP.pl > Forum > Przedszkole
gregor81
pomóżcie, bo już nie wiem gdzie robię błąd, a który pewnie jest banalny. Chodzi o odczyt wartości tablicy x[1], x[2]. Co jest nie tak, że elementy x[i] nie chcą się wczytać



  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.  
  6. <form name="testowy">
  7.  
  8. pole1 <input type="text" name="pole1" size="10"><br>
  9. pole2 <input type="text" name="pole2" size="10"><br>
  10.  
  11. <select name="lista" id="id" size="5" onchange="wykonaj()">;
  12. <option>pozycja1</option>
  13. <option>pozycja2</option>
  14. <option>pozycja3</option>
  15. </select>
  16.  
  17. <?php
  18.  
  19. $x[1]='aaa';
  20. $x[2]='bbb';
  21.  
  22. echo '<script type="text/javascript" >';
  23.  
  24. print "function wykonaj()";
  25. print "{";
  26.  
  27. print "var i=1;";
  28. print "var j=2;";
  29.  
  30. print "{";
  31. print "document.testowy.pole1.value = '$x[i]';";
  32. print "document.testowy.pole2.value = '$x[j]';";
  33. print "}";
  34.  
  35. print "}";
  36.  
  37. echo '</script>';
  38.  
  39. ?>
  40.  
  41. </form>
  42. </body>
  43. </html>
bastard13
To jest PHP tzn. wykonywane po stronie serwera:
  1. $x[1]='aaa';
  2. $x[2]='bbb';

A to jest JS co oznacza, że wykonywane po stronie klienta:
  1. print "document.testowy.pole1.value = '$x[i]';";
  2. print "document.testowy.pole2.value = '$x[j]';";


Skoro i=1, a j=2 w JS, to zrób po prostu:
  1. print "document.testowy.pole1.value = 'aaa';";
  2. print "document.testowy.pole2.value = 'bbb';";
gregor81
ale jeśli zapisze tak:

  1. print "document.testowy.pole1.value = '$x[1]';";
  2. print "document.testowy.pole2.value = '$x[2]';";


to jest OK.

Problem jest wtedy jak użyję x[i] x[j], mimo że zmienne i,j są już zadeklarowane
luckyps
Ale sa zadeklarowane jako zmienne js a nie php
gregor81
zgadza się, zmienne deklaruje w JS

czy jest w takim razie sposób żebym mógł się dostać do wybranego elementu x[i] który jest w JS a jego elementy zadeklarowane w PHP
luckyps
Może cos w tym stylu ?
  1. <?php
  2. $x[1]='aaa';
  3. $x[2]='bbb';
  4.  
  5. echo '<script type="text/javascript" >';
  6.  
  7. print "function wykonaj()";
  8. print "{";
  9.  
  10. $i = 1;
  11. $j = 2;
  12.  
  13. print "i=0;";
  14. print "j=1;";
  15. print " tab = ['$x[1]', '$x[2]'];";
  16.  
  17. print "{";
  18. print "document.testowy.pole1.value = tab[i];";
  19. print "document.testowy.pole2.value = tab[j];";
  20. print "}";
  21.  
  22. print "}";
  23.  
  24. echo '</script>';
  25. ?>
gregor81
to jest pewnie rozwiązanie problemu, ale jeśli będę miał tablice na wejściu gdzie będzie dużo elementów i będę chciał wpisać tylko takie elementy które spełniają pewien warunek to zrobi się kłopot.


  1. $x[1]='aaa';
  2. $x[2]='bbb';
  3. ...
  4. ...
  5. $x[20]='xxx';
  6.  
  7. $i = 1;
  8.  
  9. print "i=0;";
  10.  
  11. print " tab = ['$x[1]', '$x[2]',..........];";
  12.  
  13.  
  14. print "for(i=1; i<=20; i++)";
  15. print "{";
  16.  
  17. print "if (tab[i]=='xxx')";
  18. print "{";
  19. print "document.testowy.pole1.value = tab[i];";
  20. print "}";
  21.  
  22. print "}";
kudlatypawelek
Niekoniecznie. Linijkę z elementami tabeli możesz przecież generować jako przyrostowy ciąg w pętli:

foreach ($x as $element)
{
$str .= $element."', ";
}
$str = substr($str, 0, -3);
print "tab = ['$str'];";
luckyps
Mozesz tez zrobic tak:
  1. $x[1]='aaa';
  2. $x[2]='bbb';
  3.  
  4. $tablica = "'".implode($x, "','")."'";
  5. print " tab = [$tablica];";
eccocce
Jeśli chcesz szybko sprawdzić, czy jakaś zmienna jest dostępna w Twoim kodzie JS użyj po prostu:
Kod
alert(zmienna);

A jaki widzisz kłopot w tym ostatnim przypadku? To raczej normalne, że używa się PHP do generowania kodu JS.
#luq
Po pierwsze, jeśli generujesz kod JS przez PHP to lepiej jest potem zajrzeć w źródło żeby zobaczyć jak został wygenerowany, a narzędzia takie jak FireBug itp. są naprawdę wygodne.
Po drugie, jeśli wrzucasz tablice PHP do JS`a to wygeneruj sobie jsona

  1. <script type="text/javascript">
  2. var foo = <?=json_encode($arr)?>;
gregor81
dzięki za wszystkie odpowiedzi
propozycja luckyps najbardziej mi sie przyda
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.