Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] fwrite i wartosc zmiennej
Forum PHP.pl > Forum > Przedszkole
-Frugo-
Dopadło i mnie, bo rzadko pytam na forum... do tej pory wyszukiwałem rozwiazanie problemu, ale teraz nic nie znalazłem.

Krótko:

Plikiem x.php generuje strone y.php i w jej tresc przez funkcję fwrite wstawiam kod php, przesyłajac podczas generowania przez POST wartosc id.

W nowym pliku y.php wszystko działa jak na lezy do momentu ponownego wczytania pliku z paska adresu. Jak dam odswiez - jest ok (trzyma te same dane), ale jak wejde z paska adresu to pusto.

Jak zrobić, żeby w kluczowym zapytaniu w pliku y.php podczas generacji w zapytaniu

  1. SELECT * FROM towar WHERE id='id_towaru'


zamiast 'id_towaru' wstawało w kod strony od razu wartosc np 123. Czyli zeby po wygenerowaniu strony y.php w kodzie nie było WHERE id = 'id_towaru", ale WHERE id = 123.

Bede wdzieczny za pomoc.

A.
b4rt3kk
Przedstaw kawałek kodu jak robisz to dotychczas. Bo chyba nie chodzi o to, by przed id_towaru wstawić znak dolara?
-Frugo-
  1.  
  2. id_towaru = $_POST['idtowaru'];
  3.  
  4.  
  5. mysql_connect("localhost","***","***") or die(mysql_error());
  6.  
  7.  
  8.  
  9. $query = "SELECT * FROM towary WHERE id='$id_towaru'";


No i chodzi mi o to, a by w powyzszym zapytaniu przy generowaniu strony i wklejaniu fwrite'em jej zawartosci zamiast WHERE id = '$id_meczu', zamiast zmiennej była wstawiana wartosc liczbowa na stałe.
b4rt3kk
Jeśli chcesz by zmienna przyjęła swoją wartość to umieść ją pomiędzy " (cudzysłów). Oczywiście jeśli dobrze rozumiem problem.

  1. $foo = 123;
  2.  
  3. $zmienna = '$foo'; // zapiszesz do pliku $foo
  4. $zmienna = "$foo"; // zapiszesz do pliku 123
  5.  
  6. // alternatywna metoda:
  7. $zmienna = 'jakis tekst ' . $foo . ' dalsza czesc tekstu';


Pod warunkiem, że właśnie tak generujesz stringa, który później zapisujesz do pliku.
-Frugo-
Zrobiłem jak pisałeś
  1.  
  2. $id_towaru = $_POST['idtowaru'];
  3. $idbis = "$towaru";
  4.  
  5. $query = "SELECT * FROM mecze WHERE id='$idbis'";
  6.  


I nadal nie wstawia mi wartosci jaka przekazywana jest przez $_POST, tylko wpisuje całe zapytanie. A chciałbym, jeśli tak się da, żeby to wyglądało w zrodle strony tak:

  1. "SELECT * FROM mecze WHERE id=123";
b4rt3kk
Cytat(-Frugo- @ 13.06.2013, 11:03:12 ) *
Zrobiłem jak pisałeś
  1.  
  2. $id_towaru = $_POST['idtowaru'];
  3. $idbis = "$towaru";
  4.  
  5. $query = "SELECT * FROM mecze WHERE id='$idbis'";
  6.  


I nadal nie wstawia mi wartosci jaka przekazywana jest przez $_POST, tylko wpisuje całe zapytanie. A chciałbym, jeśli tak się da, żeby to wyglądało w zrodle strony tak:

  1. "SELECT * FROM mecze WHERE id=123";


Pokaż więc proszę fragment kodu, w którym generujesz dane do zapisu do pliku, bo teraz to dla mnie jest wróżenie z fusów.
-Frugo-
  1.  
  2. $file = fopen("/Applications/XAMPP/htdocs/prace/comments/top/$id/$id.php", "x+");
  3.  
  4. $filew = <<< 'PHP'
  5. <?php
  6.  
  7.  
  8. $id_towaru = $_POST['idtowaru'];
  9.  
  10. //Połączenie z bazą
  11.  
  12. $idbis = "$id_towaru";
  13.  
  14. $query = "SELECT * FROM towary WHERE id="$idbis"";
  15.  
  16. $result = mysql_query($query) or die(mysql_error());
  17.  
  18.  
  19. ?>
  20.  
  21. PHP;
  22.  
  23. @fwrite($file, $filew);
  24. @fclose($file);


Powyzszym generuje plik, wstawiam kod i wszystko dobrze działa, poza tym, że zamiast wartosci liczbowej która przekazywana jest w zmiennej, wstawia mi zmienną. Jeszcze raz podkreślę, że to działa i pobiera dane ze zmiennej i plik ladnie sie wyswietla nawet po podswiezeniu strony. Ale jesli wejde do pliku przez pasek asdresu np http://towary/123, to juz mi tego id nie pobiera i nie wyswietla danych.
b4rt3kk
  1. $filew = '
  2. <?php
  3.  
  4.  
  5. $id_towaru = $_POST['idtowaru'];
  6.  
  7. //Połączenie z bazą
  8.  
  9. $idbis = ' . $id_towaru . ';
  10.  
  11. $query = "SELECT * FROM towary WHERE id=\'' . $idbis . '\'";
  12.  
  13. $result = mysql_query($query) or die(mysql_error());
  14.  
  15.  
  16. ?>';


Spróbuj tak.
-Frugo-
nie działa ;(
nadal do nowego pliku nie wpisuje 123

tylko

  1. $idbis = ' . $id_meczu . ';
  2.  
  3. $query = "SELECT * FROM mecze WHERE id=\'' . $idbis . '\'";
b4rt3kk
Cytat(-Frugo- @ 13.06.2013, 13:32:43 ) *
nie działa ;(
nadal do nowego pliku nie wpisuje 123

tylko

  1. $idbis = ' . $id_meczu . ';
  2.  
  3. $query = "SELECT * FROM mecze WHERE id=\'' . $idbis . '\'";


A to ciekawe. Jak więc teraz Twój kod wygląda?
-Frugo-
Ano wygląda tak. Kurcze nie moge dojsc jak to zrobic.

  1.  
  2. $id_meczu = $_POST['idmeczu'];
  3.  
  4. //Połączenie z bazą
  5.  
  6. mysql_connect("localhost","root","") or die(mysql_error());
  7.  
  8. mysql_set_charset("utf8");
  9.  
  10. mysql_select_db("nazywo");
  11.  
  12. $idbis = ' . $id_meczu . ';
  13.  
  14. $query = "SELECT * FROM mecze WHERE id=\'' . $idbis . '\'";
  15.  
b4rt3kk
Chodzi mi o plik, który w pierwszym poście określiłeś jako x.php. Jak w tym pliku wygląda kod PHP?
-Frugo-
PLik x wyglada tak:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title></title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.  
  7. </head>
  8. <body>
  9.  
  10. <?php
  11.  
  12. //połaczenie z baza i wybor bazy
  13.  
  14. $query3 = "
  15. SELECT * FROM mecze
  16. ";
  17.  
  18. mysql_query($query3) or die(mysql_error());
  19.  
  20. $result = mysql_query($query3) or die(mysql_error());
  21.  
  22. while ($rzad = mysql_fetch_assoc($result))
  23.  
  24. {
  25.  
  26. echo "<table border='1' cellpadding='9' margin: 20px;'>";
  27.  
  28. echo "<tr><td>$rzad[id]</tr>";
  29.  
  30. echo "</table>";
  31.  
  32. $wynik = $rzad[goals_host];
  33.  
  34. $id = ($rzad[id]);
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41. $file = fopen("/Applications/XAMPP/htdocs/prace/comments/top/$id/$id.php", "x+");
  42. $filew = <<< 'PHP'
  43. "!DOCTYPE html>
  44. <html>
  45.   <head>
  46.   <title></title>
  47.   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  48.  
  49.   </head>
  50.   <body>
  51.  
  52. <?php
  53.  
  54.   // odbieramy dane z relacji
  55.  
  56. $id_meczu = $_POST['idmeczu'];
  57.  
  58. //Połączenie z bazą
  59.  
  60. mysql_connect("localhost","root","") or die(mysql_error());
  61.  
  62. mysql_set_charset("utf8");
  63.  
  64. mysql_select_db("nazywo");
  65.  
  66. $idbis = ' . $id_meczu . ';
  67.  
  68.   $query = "SELECT * FROM mecze WHERE id=\''$idbis'\'";
  69.  
  70.   $result = mysql_query($query) or die(mysql_error());
  71.  
  72.   mysql_set_charset("utf8");
  73.  
  74.  
  75.  
  76. PHP;
  77. @fwrite($file, $filew);
  78. @fclose($file);
  79.  
  80. }
  81.  
  82. ?>
  83.  
  84.  
  85. </body>
  86. </html>
b4rt3kk
No widzisz, a więc zastąp kod od 42 do 76 linijki następującym:

  1. $filew = '
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title></title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7.  
  8. </head>
  9. <body>
  10.  
  11. <?php
  12.  
  13. // odbieramy dane z relacji
  14.  
  15. $id_meczu = $_POST['idmeczu'];
  16.  
  17. //Połączenie z bazą
  18.  
  19. mysql_connect("localhost","root","") or die(mysql_error());
  20.  
  21. mysql_set_charset("utf8");
  22.  
  23. mysql_select_db("nazywo");
  24.  
  25. $idbis = ' . $id_meczu . ';
  26.  
  27. $query = "SELECT * FROM mecze WHERE id=\''.$idbis.'\'";
  28.  
  29. $result = mysql_query($query) or die(mysql_error());
  30.  
  31. mysql_set_charset("utf8");
  32. ';
-Frugo-
Wstawiłem i bez tego podkreśla na czerwono $id_meczu = $_POST['idmeczu']; ze unexpected indentifier 'idmeczu' after String.

Bez tego <<< 'PHP' PHP; nie da sie fwirtem wstawic kodu.
b4rt3kk
Cytat(-Frugo- @ 13.06.2013, 14:52:55 ) *
Wstawiłem i bez tego podkreśla na czerwono $id_meczu = $_POST['idmeczu']; ze unexpected indentifier 'idmeczu' after String.

Bez tego <<< 'PHP' PHP; nie da sie fwirtem wstawic kodu.


Przeoczyłem te apostrofy, użyj znaku ucieczki i będzie ok:

  1. $id_meczu = $_POST[\'idmeczu\'];
-Frugo-
Kolego sprawdze za pol godz.
. Ale jak zadziala... Dobre piwo bedzie dla Ciebie;)
-Frugo-
Niestety ;( nie dziala

Mam tak:
  1. $id_meczu = $_POST['\idmeczu\''];
  2.  
  3. echo $id_meczu; //echo wyswietla tu wartosc liczbowa np 123
  4.  
  5.  
  6. //Połączenie z bazą
  7.  
  8. $idbis = ' . $id_meczu . ';
  9.  
  10.  
  11. $query = "SELECT * FROM mecze WHERE id=\''.$idbis.'\'";
-Frugo-
Pomoze ktos prosze? Bo już nie mam pomysłu, jak to zrobic
-Frugo-
Panowie da sie to zrobic, czy nie? Ma ktos jakis pomysł?
b4rt3kk
Nie wiem czemu tak masz bo powinno być wszystko ok. Znów pokaż cały kod pliku x, po zmianach.
-Frugo-
W kluczowych linijkach tak jak ponizej.
Dochodze do wniosku ze tak sie nie da, bo fwrite traktuje to jako string i zawsze wklejka nazwe zmiennej a nie jej wartosc.

  1. $id_meczu = $_POST['\idmeczu\''];
  2.  
  3. echo $id_meczu; //echo wyswietla tu wartosc liczbowa np 123
  4.  
  5.  
  6. //Połączenie z bazą
  7.  
  8. $idbis = ' . $id_meczu . ';
  9.  
  10.  
  11. $query = "SELECT * FROM mecze WHERE id=\''.$idbis.'\'";
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.