Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] Przeniesienie wartości w funkcji
Forum PHP.pl > Forum > PHP
wpatrykw
Witam mam taki problem, mianowicie mam skrypt który wyświetla działy (dane pobierane z mysql'a) zabezpieczony przed brakiem wpisania wartosci lub wpisania złej wartości poprzez wyświetlenie komunikatu. W skrypcie tym nie umie zrobić tak żeby z pliku modyly/dzialy.php przeniosło mi wartość z treścią do pliku dzial.php. Troche jest to źle napisane ale jak pokaże kod to może ktoś zrozumie o co chodzi smile.gif

konfiguracja.php
  1. <?php 
  2. $host = 'localhost';
  3. $user = 'dana';
  4. $pass = 'dana';
  5. $baza = 'dana';
  6.  
  7. $sql = mysql_connect($host, $user, $pass)
  8. or die ("Brak połączenia z baza danych");
  9.  
  10. mysql_select_db($baza, $sql)
  11. or die ("Brak połączenia z baza danych");
  12.  
  13. require_once 'szablon/funkcje.php';
  14. require_once 'szablon/gora.php';
  15. require_once 'szablon/dol.php';
  16. require_once 'szablon/lewa.php';
  17. require_once 'szablon/prawa.php';
  18. require_once 'szablon/srodek.php';
  19.  
  20. $t_dzialy = 'dzialy';
  21. ?>


szablon/srodek.php
  1. <?php
  2. function srodek() {
  3.  
  4. tytul();
  5. zawartosc();
  6.  
  7. }
  8. ?>


moduly/dzialy.php
  1. <?php
  2.  
  3. function wyswietl() {
  4.  
  5. global $t_dzialy, $PHP_SELF, $pwcms;
  6.  
  7. $pwcms = (int) $pwcms;
  8.  
  9. $zapytanie = "SELECT * FROM $t_dzialy WHERE id=$pwcms";
  10. $wynik = mysql_query($zapytanie);
  11. $wiersz_a = mysql_num_rows($wynik);
  12.  
  13. if($wiersz_a=='0') {
  14.  
  15. $d_tytul = 'Błąd! ';
  16. $d_tekst = 'Prosimy o kontakt z administratorem strony.';
  17.  
  18. } else {
  19.  
  20. $wiersz_b = mysql_fetch_array($wynik);
  21.  
  22. $d_tytul = $wiersz_b['tytul'];
  23. $d_tekst = $wiersz_b['tekst'];
  24.  
  25. $d_tekst = stripslashes($d_tekst);
  26. $d_tytul = stripslashes($d_tytul);
  27.  
  28. echo $d_tytul;
  29. echo $d_tekst;
  30.  
  31.  
  32. }
  33.  
  34. function tytul() {
  35. echo $d_tytul;
  36. }
  37.  
  38. function zawartosc() {
  39. echo $d_tekst;
  40. }
  41.  
  42.  
  43. }
  44.  
  45. ?>


dzial.php
  1. <?php
  2.  
  3. include('konfiguracja.php');
  4. include('moduly/dzialy.php');
  5.  
  6. global $pwcms;
  7.  
  8. if(isset($pwcms)) {
  9.  
  10. require_once 'moduly/dzialy.php';
  11.  
  12. function tytul() {
  13. echo $d_tytul;
  14. }
  15. function zawartosc() {
  16. echo $d_tekst;
  17. }
  18.  
  19.  
  20.  
  21.  
  22. } else {
  23.  
  24. function tytul() {
  25. echo 'Błąd! ';
  26. }
  27.  
  28. function zawartosc() {
  29. echo 'Prosimy o kontakt z administratorem strony.';
  30. }
  31.  
  32.  
  33. }
  34.  
  35. include('szablon/index.php');
  36.  
  37. ?>


szablon/index.php (plik szablonu)
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title><?php echo $title_strony ?></title>
  5. <meta name="Description" content="<?php echo $description_strony ?>">
  6. <meta name="keywords" content="<?php echo $keywords_strony ?>">
  7. <meta http-equiv="Content-Language" content="pl">
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  9. <link rel="stylesheet" href="szablon/style.css" type="text/css">
  10. </head>
  11. <body>
  12.  
  13. <table border="0" cellpadding="0" cellspacing="0" style="width: 600px;" align="center">
  14. <tr>
  15. <td class="gora"><?php gora(); ?></td>
  16. </tr>
  17. <tr>
  18. <td class="stelarz">
  19. <table border="0" cellpadding="0" cellspacing="0" style="width: 600px;">
  20. <tr>
  21. <td class="lewa"><?php lewa(); ?></td>
  22. <td class="srodek"><?php srodek(); ?></td>
  23. <td class="prawa"><?php prawa(); ?></td>
  24. </tr>
  25. </table>
  26. </td>
  27. </tr>
  28. <tr>
  29. <td class="dol"><?php dol(); ?></td>
  30. </tr>
  31. </table>
  32.  
  33. </body>
  34. </html>


Wyświetla mi jedynie komunikat błędu jak w przeglądarce wpisze www.mojastrona.pl/dzial.php

a jak podam już wartość żeby wyświetliło dział np. www.mojastrona.pl/dzial.php?pwcms=1 to nie wyświetla nic. Tak samo jak wpisze wartość 0 to powinien wyskoczyć komunikat o błędzie i też go nie wyświetla.

Problem tkwi chyba w przekazaniu zmiennej i jej wyświetlenia.

Za pomoc serdecznie dziękuje
Kicok
register_globals masz wyłączone, więc zamiast zapisu: $pwcms stosuj: $_GET['pwcms']. Analogicznie dla $_POST, $_COOKIE, $_SERVER, $_SESSION itp.

Są to tablice superglobalne, więc widoczne będą także wewnątrz funkcji.
wpatrykw
To nic nie pomogło.

Chodzi o to że w pliku dzial.php są dwie zmienne $d_tytul oraz $d_tekst - te zmienne są martwe nie pobierają danych z moduly/dzialy.php
Kicok
hmm, przeglądnąłem dokładniej twój kod ;]

No cóż, radziłbym poszukać na googlach jakiegoś kursu PHP i poczytać dokładnie co to są funkcje. A szczególnie:
1. Jak funkcje zwracają wynik, dlaczego nie przez echo
2. Jak wywołuje się funkcje, dlaczego nie wystarczy napisać:
  1. <?php
  2. function tytul() {
  3. echo $d_tytul;
  4. }
  5. ?>

żeby dana funkcja się wykonała
3. Co to jest zasięg zmiennych, dlaczego ze zmiennej $d_tytul utworzonej wewnątrz funkcji wyswietl() nie można już korzystać poza tą funkcją.
wpatrykw
biggrin.gif

A jakiś substytut który zadziała winksmiley.jpg
domis86
Na poczatku programowania nalezy uzyc czegos takiego error_reporting(E_STRICT | E_ALL);
To sprawi, ze programowanie stanie sie przyjemniejsze i bedzie mniej bledow w programie. guitar.gif
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.