Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]przekazywanie zmiennej z PHP do JS
Forum PHP.pl > Forum > Przedszkole
alpork2
Witajcie

mam następujący problem z takim kodem:

plik t1.php
  1. <?php
  2. if ($_POST['detailsSelect'])
  3. echo $_POST['detailsSelect'];
  4.  
  5. echo '<form action="" method=POST>';
  6. $query="Select * from `Company` ORDER BY `Name` ASC";
  7. $wynik=WykonanieBezFetch($query);
  8. echo '<select name="detailsSelect" id="detailsSelect">';
  9. while ($Nazwa=mysql_fetch_array($wynik)){
  10. echo '<option value="'.$Nazwa['id'].'">'.$Nazwa['Name'].'</option>';
  11. }
  12. echo '</select>';
  13. echo '<input type="submit"/>';
  14. echo '</form>';
  15. <a href="java script:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("child3.php","Ratting","width=550,height=170
  16. ,left=150,top=200,toolbar=1,status=1,");>Click here to open the child window</a>
  17. ?>


plik child3.php

  1.  
  2. <script langauge="javascript">
  3. function post_value(){
  4. opener.document.f1.p_name.value = document.frm.c_name.value;
  5. var x=opener.document.getElementById("detailsSelect");
  6. var option=document.createElement("option");
  7. option.text=document.frm.c_name.value;
  8. option.selected=true;
  9. var value=option.text;
  10. location.href="nextpage.php?name="+value;
  11. option.value=200;
  12. try
  13. {
  14. // for IE earlier than version 8
  15. x.add(option,x.options[null]);
  16. }
  17. catch (e)
  18. {
  19. x.add(option,null);
  20. }
  21. self.close();
  22. }
  23.  
  24. <title>(Type a title for your page here)</title>
  25. </head>
  26.  
  27. <body >
  28.  
  29. <tr><td align="center"> Your name<input type="text" name="c_name" size=12 > <input type=button value='Submit' onclick="post_value();">
  30. </td></tr>
  31. </table></form>
  32. </body>
  33. </html>


i plik nexpage.php

  1. <?php
  2. $idek=NewClient($_GET['name']);
  3. ?>


zmienna $idek to zwracane id po wykonaniu polecenia INSERT INTO ...
gdybym w plikucnexpage wyświetlił tą zmienną bez problemu zmienna ta przyjmie wartość id wpisanego rekordu.

Potrzebuje w pliku child3 pozyskać tą zmienną i niestety nie wiem jak ...

Główny założenie kodu

w pliku t1 w polu select wyświetlam nazwy z tabeli Company ale value pola option jest wartość ID. W przypadku kiedy jakiejś wartości nie ma klikam na przycisk który powoduje wyświetlenie okienka popup z formularzem ... tak aby dopisać brakującą wartość do tabeli. po wypełnieniu formularza następuje zapis danej wartości w tabelę a zapisana wartość jest ustawiana w polu select (plik t1.html) jako selected. Dzieje się to przez java script w pliku child3
  1. var x=opener.document.getElementById("detailsSelect");
  2. var option=document.createElement("option");
  3. option.text=document.frm.c_name.value;
  4. option.selected=true;


i teraz value dla takiej warości jest definiowane przez linijkę:
  1. option.value=200;


i teraz całe sedno ... zamiast cyferki "200" chcę uzyskać cyferkę, która jest zmienną $idek w plik nexpage.php.. Nie mam pojęcia jak się do tego zabrać ... czy możecie mi pomóc ?
dzięki
b4rt3kk
Możesz przekazać zmienną za pomocą tablicy $_GET.

  1. echo '<a href="java script:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("child3.php?id='.$Nazwa['id'].'","Ratting","width=550,height=170
  2. ,left=150,top=200,toolbar=1,status=1,");>Click here to open the child window</a>';


W pliku child3.php możesz teraz odczytać jej wartość.

  1. echo $_GET['id'];


Natomiast przekazanie tej wartości do JS może wyglądać tak:

  1. echo '<input type="hidden" value="'.$_GET['id'].'" id="hid1" />';


  1. wartosc = document.getElementById('hid1').value;
alpork2
Cytat(b4rt3kk @ 13.11.2012, 19:33:32 ) *
Możesz przekazać zmienną za pomocą tablicy $_GET.

  1. echo '<a href="java script:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("child3.php?id='.$Nazwa['id'].'","Ratting","width=550,height=170
  2. ,left=150,top=200,toolbar=1,status=1,");>Click here to open the child window</a>';


W pliku child3.php możesz teraz odczytać jej wartość.

  1. echo $_GET['id'];


no właśnie nie mogę bo zapis robi się w pliku nexpage.php który wywołany jest w środku wywołanej funkcji JS
location.href="nextpage.php?name="+value;
dopiero po wykonaniu się powyższego skryptu "pojawia się" wartość id. tylko nie wiem jak plku który się otwiera, wykonuje i tyle przekazać zmienną ... bo później ten plik nie przekazuje dalej żadnej zmiennej ani GET ani POST ...
b4rt3kk
Straszliwie zagmatwany ten Twój kod.

t1.php:
- widzę, że wyświetla formularz
- czym jest więc $Nazwa['id']
- czemu ma służyć ten kod?
  1. <a href="java script:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("child3.php","Ratting","width=550,height=170
  2. ,left=150,top=200,toolbar=1,status=1,");>Click here to open the child window</a>


child3.php:
- jest to głównie skrypt JS, który po wciśnięciu submita przekierowuje do pliku nextpage.php

nextpage.php:
- jakaś funkcja co dodaje do bazy i zwraca id.

Tak więc moje pytanie, jak wygląda schemat działania tego skryptu? Możesz poszerzyć moją wiedzę na ten temat?

alpork2
w t1 wyświetlam nazwy firm z tabeli. polse select jest w formularzu który właśnie przekazuje $Nazwa['id'] -> to wyciągam z bazy. W przypadku kiedy moje pole wyboru nie posiada firmy chcę ją dodać ... więc klikam przycisk który odpala popup-a z kolejnym formem. Ten form ma za zadanie zrobić wpis do bazy danych (poptrzez plik nextpage.php)i USTAWIĆ nowododaną wartość do macierzystego pola select. -> to działa.

za pomocą javascripta ustawiam
<option (ustawiam selected) value="?questionmark.gifquestionmark.gif?" Tu ustawiam nowododaną wartość<option>

jak widziś w javascript dodaję (a raczej rejestruję) kolejny obiekt option w nim muszę ustawić kilka argumentów m.in option.value (tu ustawiłem sobie testowo cyferkę 200) ale potrzebuję wyciągną cyferkę która jest widziana w pliku nextpage jako zmienna $idek ... i nie wiem jak to zrobić ...

Cytat(b4rt3kk @ 13.11.2012, 19:53:17 ) *
Straszliwie zagmatwany ten Twój kod.

t1.php:
- widzę, że wyświetla formularz
- czym jest więc $Nazwa['id']
- czemu ma służyć ten kod?
  1. <a href="java script:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("child3.php","Ratting","width=550,height=170
  2. ,left=150,top=200,toolbar=1,status=1,");>Click here to open the child window</a>


child3.php:
- jest to głównie skrypt JS, który po wciśnięciu submita przekierowuje do pliku nextpage.php

nextpage.php:
- jakaś funkcja co dodaje do bazy i zwraca id.

Tak więc moje pytanie, jak wygląda schemat działania tego skryptu? Możesz poszerzyć moją wiedzę na ten temat?

b4rt3kk
No cóż, zawsze możesz użyć Ajaxa w tym celu.

Tzn. tak, każdy option selecta ma przypisane value, którym jest id, ale nie każdy posiada nazwę firmy? Myślę, że cały kod wymaga optymalizacji, jest bardzo zawiły i nieczytelny.
alpork2
nie wiem co w tym kodzie jest zawiłego ... widziałeś może jak w adminie django działa dodawanie wartości do pola select .? dokładnie ... tak ... skoro piszesz że kod dla Ciebie jest zawiły,,, to może daj szansę innym co ten kod zrozumieją .....
jeśli masz problem ze zrozumieniem javascriptu (raptem klika linijek funkcji) to przestań się mądrzyć ....
b4rt3kk
Wiesz co jest w tym zawiłego? Użycie JS - jest to zupełnie bez najmniejszego sensu, pobranie danych JS i przekierowanie z $_GET? Jeśli nikt inny w tym temacie się nie wypowiada, znaczy że również bladego pojęcia nie ma o co Ci chodzi. Ja tylko starałem Ci się pomóc, a Ty narzekasz, mimo że poświęcam Ci swój czas.

  1. function getXMLHttpRequestObject()
  2. {
  3.  
  4. var wersjeMSXML = new Array(
  5. "MSXML2.XMLHTTP.6.0",
  6. "MSXML2.XMLHTTP.5.0",
  7. "MSXML2.XMLHTTP.4.0",
  8. "MSXML2.XMLHTTP.3.0",
  9. "MSXML2.XMLHTTP",
  10. "Microsoft.XMLHTTP"
  11. );
  12.  
  13. try {
  14. return new XMLHttpRequest();
  15. }
  16. catch(e) {
  17. for (var indeks in wersjeMSXML) {
  18. try {
  19. return new ActiveXObject(wersjeMSXML[indeks]);
  20. }
  21. catch(e) {
  22. }
  23. }
  24. return null;
  25. }
  26. }
  27.  
  28.  
  29. function startGETRequest(url, onComplete, onEnd)
  30. {
  31.  
  32. var XMLHttpRequestObject = getXMLHttpRequestObject();
  33.  
  34. if (XMLHttpRequestObject) {
  35. XMLHttpRequestObject.open("GET", url);
  36. XMLHttpRequestObject.onreadystatechange = function()
  37. {
  38. if (XMLHttpRequestObject.readyState == 4) {
  39. if (XMLHttpRequestObject.status == 200) {
  40. var responseXML = XMLHttpRequestObject.responseXML;
  41. var responseText = XMLHttpRequestObject.responseText;
  42. onComplete(responseText, responseXML);
  43. }
  44. delete XMLHttpRequestObject;
  45. XMLHttpRequestObject = null;
  46. onEnd();
  47. }
  48. }
  49. XMLHttpRequestObject.send(null);
  50. }
  51.  
  52. }
  53.  
  54. function post_value(){
  55. opener.document.f1.p_name.value = document.frm.c_name.value;
  56. var x=opener.document.getElementById("detailsSelect");
  57. var option=document.createElement("option");
  58. option.text=document.frm.c_name.value;
  59. option.selected=true;
  60. var value=option.text;
  61.  
  62. var url = "nextpage.php";
  63. id = (new Date()).getTime();
  64. url += "?name=";
  65. url += value;
  66. url += "&?" + id;
  67. url = encodeURI(url);
  68. startGETRequest(url, onComplete, onEnd);
  69.  
  70. option.value=200;
  71. try
  72. {
  73. // for IE earlier than version 8
  74. x.add(option,x.options[null]);
  75. }
  76. catch (e)
  77. {
  78. x.add(option,null);
  79. }
  80. self.close();
  81. }
  82.  
  83. function onComplete(responseText, responseXML)
  84. {
  85. alert(responseText);
  86. }
  87.  
  88. function onEnd() {}


Do nextpage.php dodaj tylko echo.

  1. <?php
  2. echo $idek=NewClient($_GET['name']);
  3. ?>
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.