Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienne... :./
Forum PHP.pl > Forum > Przedszkole
deadmen4
Witam,

Dopiero zaczynam przygode z php... i mam problem.

Nie wiem jak określić zmienną z pomocą pola tekstowego...questionmark.gif Zmienna jako wyraz(y)

W javascript jest to banalne, a w php to nie wiem. I jeszcze.... czy wystarczy poprostu wpisać, czy trzeba też zrobić button który wykona jakieś zadanie?? worriedsmiley.gif


Prosiłbym o podanie gotowego przykładu pola tekstowego, ewentualnie przycisku...



pozdrawiam
agata
nie wiem czy dobrze rozumiem o co chodzi, ale chyba o to:

  1. $zmienna = 'jakiś tekst';
  2.  
  3. echo $zmienna; // jesli chcesz wywołać
  4.  
elmozaur
Cytat(deadmen4 @ 17.02.2010, 12:26:23 ) *
Nie wiem jak określić zmienną z pomocą pola tekstowego... questionmark.gif Zmienna jako wyraz(y)



Musisz zrobic formularz.
w formularzu robisz tak:

  1. <form action="plik.php" method="POST">
  2. <input type="text" name="zmienna" />
  3. <input type="submit" value="ok" />
  4. </form>


robisz drugi plik plik.php
a w nim:

  1. <?php
  2. $zmienna = $_POST['zmienna'];
  3. echo $zmienna;
  4. ?>
deadmen4
To może opisze o co chodzi smile.gif

A więc tworze sobie formularz:


  1.  
  2. <script type="text/javascript">
  3. // <![CDATA[
  4.  
  5.  
  6. function usun_pl(formularz) // TO JEST USUWACZ POLSKICH ZNAKów
  7. {
  8. for (i = 0; i < formularz.length; i++)
  9. {
  10. var pole = formularz.elements[i];
  11. if (pole.type != "text" && pole.type != "textarea") continue;
  12. var str = "";
  13. for (j = 0; j < pole.value.length; j++)
  14. {
  15. switch (pole.value.charAt(j))
  16. {
  17. case "ą": str += "a"; break;
  18. case "ć": str += "c"; break;
  19. case "ę": str += "e"; break;
  20. case "ł": str += "l"; break;
  21. case "ń": str += "n"; break;
  22. case "ó": str += "o"; break;
  23. case "ś": str += "s"; break;
  24. case "ź": str += "z"; break;
  25. case "ż": str += "z"; break;
  26. case "Ą": str += "a"; break;
  27. case "Ć": str += "c"; break;
  28. case "Ę": str += "e"; break;
  29. case "Ł": str += "l"; break;
  30. case "Ń": str += "n"; break;
  31. case "Ó": str += "o"; break;
  32. case "Ś": str += "s"; break;
  33. case "Ź": str += "z"; break;
  34. case "Ż": str += "z"; break;
  35. default: str += pole.value.charAt(j); break;
  36. }
  37. }
  38. pole.value = str;
  39. }
  40. }
  41. // ]]>
  42.  
  43. </script>
  44.  
  45. <input type="text" name="temacik"> // TU JEST POLE W KTÓRYM MA BYĆ TEMAT WYSŁANEGO FORMULARZA
  46.  
  47. <?php // A TU SKRYPT KTÓRY WYSYŁA FORUMLARZ (działa dobrze)
  48.  
  49.  
  50. $temat = $_POST['temacik']; // TU USTALAM ZMIENNĄ JAKĄ MA BYĆ TEMAT MAILA
  51.  
  52.  
  53.  
  54.  
  55. if (count($_POST))
  56. {
  57. ////////// USTAWIENIA //////////
  58. $email = 'zb007@o2.pl'; // Adres e-mail adresata
  59. $subject = $temat; // TEMAT
  60. $message = 'Dziękujemy za wysłanie formularza'; // Komunikat
  61. $error = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
  62. $charset = 'iso-8859-2'; // Strona kodowa
  63. //////////////////////////////
  64.  
  65. $head =
  66. "MIME-Version: 1.0\r\n" .
  67. "Content-Type: text/plain; charset=$charset\r\n" .
  68. "Content-Transfer-Encoding: 8bit";
  69. $body = '';
  70. foreach ($_POST as $name => $value)
  71. {
  72. if (is_array($value))
  73. {
  74. for ($i = 0; $i < count($value); $i++)
  75. {
  76. $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
  77. }
  78. }
  79. else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
  80. }
  81. echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  82. }
  83. else
  84. {
  85. ?>
  86. <form action="?" method="post" onsubmit="usun_pl(this)"> // A TU JEST FORMULARZ (wersja próbna)
  87.  
  88.  
  89.  
  90.  
  91. <b>Twoje imię:</b> <input type="text" name="Imie" /></br></br>
  92.  
  93. <b>Twoja płec:</b> <select name="nazwa">
  94. <option>Mężczyzna</option>
  95. <option>Kobieta</option>
  96. (...)
  97. </select>
  98.  
  99. </br></br>
  100.  
  101. <input type="submit" value="wartość" />
  102.  
  103.  
  104.  
  105. </form>
  106. <?php
  107. }
  108. ?>




Chodzi o to aby wysyłający mógł określić temat maila, bo domyślnie $subject jest stała.
Jak się ustawia na stałe to wszystki maile mają taki sam temat... i wszystko działa.

Gdy zrobiłem tak jak na górze... w temacie przychodzącego maila było: =?iso-8859-2?B??=

Ale całość zadziałała. Myśle, że wiadomo o co mi chodzi. Proszę o pomoc. ;(


Głównie chodzi o to , że mam w temacie maila =?iso-8859-2?B??=. Dlaczego??



Jakieś sugestie?
DiH
  1. $head =
  2. "MIME-Version: 1.0\r\n" .
  3. "Content-Type: text/plain; charset=$charset\r\n" .
  4. "Content-Transfer-Encoding: 8bit";

Ładnie to tak zmienną do stringa wpychać na siłę? Powyższe zamień na:
  1. $head =
  2. "MIME-Version: 1.0\r\n" .
  3. "Content-Type: text/plain; charset=".$charset."\r\n" .
  4. "Content-Transfer-Encoding: 8bit\r\n";

W paru innych miejscach wstawiasz zmienne w ten sam sposób. Co do Twojego pytania natomiast, czytałeś może http://pl2.php.net/manual/en/book.mail.php ?

Ażeby wywołać twoją funkcję proponowałbym wrzucić do switcha.
  1. switch($_GET['q']) {
  2. case 'funkcja'
  3. // tu sama funkcja
  4. break;
  5. }

Wtedy w formularzu jako action ustawiasz: <?php echo $_SERVER['PHP_SELF'];?>?q=funkcja

Pole subject będziesz mógł jeżeli zastosujesz się do rad kolegów powyżej. Tworzysz dodatkowe pole input, o nazwie np. temat.
  1. <input type="text" name="temat" id="temat" />

Aby odwołać się do niego w php:
  1. $subject = $temat;

Co do usuwania polskich znaków, można by to zrobić w php i nieco prościej. http://php.net/manual/en/function.chr.php, a dla pewności podawać kody ASCII znaków do zastąpienia.
altruista2
NAPISAŁEM CI JASNO I WYRAŹNIE CO MASZ ZROBIĆ:
Temat: PHPFunkcje i ich wywoanie

A ty zrobiłeś "po swojemu" i dziwisz się że nie działa....

Sorry za capslocka, ale strasznie mnie to irytuje... Dałeś <input type=text name=temacik> przed <form> i dziwisz się że pusty temat.

Zrobię Ci gotowca bo widzę że nawet jak napisze Tobie jak to zrobić krok po kroku to i tak zrobisz po swojemu i będziesz się pytał gdzie jest problem...
  1. <script type="text/javascript">
  2. // <![CDATA[
  3.  
  4.  
  5. function usun_pl(formularz) // To jest usuwacz polskich znaków
  6. {
  7. for (i = 0; i < formularz.length; i++)
  8. {
  9. var pole = formularz.elements[i];
  10. if (pole.type != "text" && pole.type != "textarea") continue;
  11. var str = "";
  12. for (j = 0; j < pole.value.length; j++)
  13. {
  14. switch (pole.value.charAt(j))
  15. {
  16. case "ą": str += "a"; break;
  17. case "ć": str += "c"; break;
  18. case "ę": str += "e"; break;
  19. case "ł": str += "l"; break;
  20. case "ń": str += "n"; break;
  21. case "ó": str += "o"; break;
  22. case "ś": str += "s"; break;
  23. case "ź": str += "z"; break;
  24. case "ż": str += "z"; break;
  25. case "Ą": str += "a"; break;
  26. case "Ć": str += "c"; break;
  27. case "Ę": str += "e"; break;
  28. case "Ł": str += "l"; break;
  29. case "Ń": str += "n"; break;
  30. case "Ó": str += "o"; break;
  31. case "Ś": str += "s"; break;
  32. case "Ź": str += "z"; break;
  33. case "Ż": str += "z"; break;
  34. default: str += pole.value.charAt(j); break;
  35. }
  36. }
  37. pole.value = str;
  38. }
  39. }
  40. // ]]>
  41.  
  42. </script>
  43.  
  44.  
  45. <?php // Tu się zaczyna skrypt wysyłania forumlarza na email
  46.  
  47. if (count($_POST))
  48. {
  49. ////////// USTAWIENIA //////////
  50. $email = 'zb007@go2.pl'; // Adres e-mail adresata
  51. $subject = $_POST['temat']; // Temat listu
  52. $message = 'Dziękujemy za wysłanie formularza'; // Komunikat
  53. $error = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
  54. $charset = 'iso-8859-2'; // Strona kodowa
  55. //////////////////////////////
  56.  
  57. $head =
  58. "MIME-Version: 1.0\r\n" .
  59. "Content-Type: text/plain; charset=$charset\r\n" .
  60. "Content-Transfer-Encoding: 8bit";
  61. $body = '';
  62. foreach ($_POST as $name => $value)
  63. {
  64. if (is_array($value))
  65. {
  66. for ($i = 0; $i < count($value); $i++)
  67. {
  68. $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
  69. }
  70. }
  71. else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
  72. }
  73. echo mail($email, base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  74. }
  75. else
  76. {
  77.  
  78. ?>
  79. <form action="?" method="post" onsubmit="usun_pl(this)"> // A od tąd forumlarz (narazie wersja próbna)
  80.  
  81.  
  82.  
  83. <b>Temat:</b> <input type="text" name="temat">
  84. <b>Twoje imię:</b> <input type="text" name="Imie" /> </br></br>
  85.  
  86. <b>Twoja płec:</b> <select name="nazwa">
  87. <option>Mężczyzna</option>
  88. <option>Kobieta</option>
  89. (...)
  90. </select>
  91.  
  92.  
  93.  
  94. <input type="submit" value="wartość" />
  95.  
  96.  
  97.  
  98. </form>
  99. <?php
  100. }
  101. ?>
  102.  
griwes
Cytat(DiH @ 18.02.2010, 00:12:45 ) *
  1. $head =
  2. "MIME-Version: 1.0\r\n" .
  3. "Content-Type: text/plain; charset=$charset\r\n" .
  4. "Content-Transfer-Encoding: 8bit";

Ładnie to tak zmienną do stringa wpychać na siłę? Powyższe zamień na:
  1. $head =
  2. "MIME-Version: 1.0\r\n" .
  3. "Content-Type: text/plain; charset=".$charset."\r\n" .
  4. "Content-Transfer-Encoding: 8bit\r\n";


Tak, ładnie, bo do tego służy umieszczanie ciągu w cudzysłowie sleep.gif Jeśli chcesz już wywalać zmienną ze stringa, to użyj apostrofów, a nie wszędzie zostawiasz cudzysłowy - po ką cholerę? Najładniej (i najkrócej) można to zapisać tak:
  1. $head =
  2. 'MIME-Version: 1.0\r\n' .
  3. "Content-Type: text/plain; charset=$charset\r\n" .
  4. 'Content-Transfer-Encoding: 8bit';
Szybsze od oryginału i twojego kodu, a równie krótkie jak oryginał, poza tym nie ma zbędnych dwóch dodatkowych operatorów łączenia ciągów.
Fifi209
[JAVASCRIPT] pobierz, plaintext
  1. for (j = 0; j < pole.value.length; j++)
  2. {
  3. switch (pole.value.charAt(j))
  4. {
  5. case "ą": str += "a"; break;
  6. case "ć": str += "c"; break;
  7. case "ę": str += "e"; break;
  8. case "ł": str += "l"; break;
  9. case "ń": str += "n"; break;
  10. case "ó": str += "o"; break;
  11. case "ś": str += "s"; break;
  12. case "ź": str += "z"; break;
  13. case "ż": str += "z"; break;
  14. case "Ą": str += "a"; break;
  15. case "Ć": str += "c"; break;
  16. case "Ę": str += "e"; break;
  17. case "Ł": str += "l"; break;
  18. case "Ń": str += "n"; break;
  19. case "Ó": str += "o"; break;
  20. case "Ś": str += "s"; break;
  21. case "Ź": str += "z"; break;
  22. case "Ż": str += "z"; break;
  23. default: str += pole.value.charAt(j); break;
  24. }
  25. }
  26. pole.value = str;
[JAVASCRIPT] pobierz, plaintext

Zlituj się...
Od czego masz replace?

Cytat(griwes @ 18.02.2010, 09:34:37 ) *
Tak, ładnie, bo do tego służy umieszczanie ciągu w cudzysłowie

Jeżeli ktoś nie zna podstaw, to propozycja kolegi była znacznie lepsza.
Cytat(griwes @ 18.02.2010, 09:34:37 ) *
Szybsze od oryginału i twojego kodu

Z ciekawości zapytam o czasy i sposób ich mierzenia.
griwes
Nie podam ci czasów i sposobu ich mierzenia, bo tego nie robię. Jednakże tylko mój kod wyeliminował dwa stringi ujęte w cudzysłowy. Stringi ujęte w cudzysłowy są parsowane, to przedłuża czas ich interpretacji w stosunku do apostrofów.
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.