Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozszerzenie funkcji przekazywanej do zmiennej
Forum PHP.pl > Forum > Przedszkole
MysticPL
Witam,

Mam taką sytuację obecnie na stronie:
Do zmiennej "$tekst" jest przypisana funkcja "nazwa" w której obecnie znajduję się tablica superglobalna "$_GET['simowo']" w której są napisane co dana podstrona w tablicy superglobalnej "$_GET['simowo']" ma wyświetlać. Zmienna "$tekst" jest następnie wyświetlana w nagłówku.

A ja chcę, żeby do zmiennej "$tekst" przypisana została tablica superglobalna "$_GET['games']" oraz te inne. Niestety nie wiem jak to zrobić. Czy mam stworzyć nową funkcję np. nazwa2 i dopisać ją do zmiennej "$tekst czy utworzyć switch z tablicą superglobalną w funkcji nazwa. Dlatego proszę o pomoc w rozszerzeniu tego skryptu.

Poniżej załączam pliki związane z tematem:

index.php
  1. <?php
  2.       $tekst = nazwa($_GET['simowo']);
  3.       echo $tekst;
  4. ?>


function.php
  1. <?php
  2. function nazwa($simowo) {
  3. switch($simowo) {
  4. case 'redakcja': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/redakcja.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Redakcja</p></div>'; break;
  5. case 'historia': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/historia.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Historia</p></div>'; break;
  6. case 'o_stronie': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/o_stronie.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">O stronie</p></div>'; break;
  7. case 'kontakt': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/kontakt.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Kontakt</p></div>'; break;
  8. default: $text = "Ze świata simów";
  9. };
  10. return $text;
  11. }
  12. ?>
kantek
Tablica globalna to get, a $_GET['simowo'] to jej element.

Chcesz w $tekst mieć zawartość całej tablicy get no to: $tekst = $_GET;

Troszkę zawile opisujesz problem nie wiem o co do końca chodzi questionmark.gif

masz zmienną $text której zawartość jest generowana przez funkcję nazwa, która pobiera 1 parametr
(u Ciebie tym parametrem jest element tablicy globalnej get).

Jeżeli dobrze zrozumiałem chodzi Ci o coś takiego:
(przykład dla $_GET['simowo'], $_GET['games'])
np. z linka index.php?simowo=kontakt&games=historia

  1. <?php
  2. $tablica = $_GET;
  3. foreach($tablica as $var){
  4.      $text[] = nazwa($var);   //twoja funk. na podstawie wartości var generuje text
  5. }
  6. ?>

//otrzymujesz tablicę
$text (ma ona 2 elementy)
$text[0] - masz text wygenerowany na podstawie $_GET['simowo'];
$text[1] - masz text -||- $_GET['games']


Pozdrawiam
MysticPL
Witam,

Przepraszam, że tak późno odposuję, ale ze względów technicznych nie mogłem zajrzeć na to forum.

Nie o to mi chodzi co kolega napisał.
Tablica superglobalna posiada element: "Simowo", dzięki czemu można dodać nagłówek do podstron znajdujących się w tym elemencie, np. index.php?simowo=historia - mogę tam dodać w pliku function jakiś tekst który oczywiście jest wyświetlany za pomocą funkcji nazwa przypisanej do zmiennej $tekst.

Chodzi mi o to, żeby utworzyć całkiem inny elemnt w tej tablicy czyli "Games" - całkiem inny dział, linki w nim będą wyglądać tak: "index.php?games=thesims2" i chodzi mi o to, żebym mógł tak samo dodać nagłówki do tych podstron jak w "Simowo".


Pozdrawiam.

Pomoże ktoś?
Kubofonista
Też nie do końca rozumiem ale chodzi ci o wywołania przez simowo lub games?

index.php:
  1. <?php
  2. if(isset($_GET['simowo'])) {
  3. $tekst = nazwa($_GET['simowo']);
  4. } else if(isset($_GET['games'])) {
  5. $tekst = nazwa2($_GET['games']);
  6. }
  7. echo $tekst;
  8. ?>


function.php
  1. <?php
  2. function nazwa($simowo) {
  3. switch($simowo) {
  4. case 'redakcja': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/redakcja.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Redakcja</p></div>'; break;
  5. case 'historia': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/historia.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Historia</p></div>'; break;
  6. case 'o_stronie': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/o_stronie.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">O stronie</p></div>'; break;
  7. case 'kontakt': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/kontakt.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Kontakt</p></div>'; break;
  8. default: $text = "Ze świata simów";
  9. };
  10. return $text;
  11. }
  12.  
  13. function nazwa2($games) {
  14. switch($games) {
  15. case 'redakcja': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/redakcja.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Redakcja</p></div>'; break;
  16. case 'historia': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/historia.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Historia</p></div>'; break;
  17. case 'o_stronie': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/o_stronie.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">O stronie</p></div>'; break;
  18. case 'kontakt': $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/kontakt.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">Kontakt</p></div>'; break;
  19. default: $text = "Ze świata simów";
  20. };
  21. return $text;
  22. }
  23. ?>

Oczywiście wiem, że można lepiej to rozwiązać ale to w zupełności powinno działać, jeśli dobrze Cię zrozumiałem
MysticPL
Dziękuje, chyba to jest. Jutro sprawdze. Pozdrawiam.

Wszystko w porządku, skrypt działa. Dziękuje za pomoc.

Mam jeszcze jedno pytanie, po wstawieniu tego skryptu, na stronie głównej powinien się wyświetlać napis domyślny z tego skryptu. A on niestety nie wyświetla się, tylko jest puste, pole, ale jak podam np. zły adres to ten tekst domyślny wyświetla się. Jak to poprawić?

Chodzi mi o plik index.php

Tak jakby "omijał"go ten default: ... w skrypcie.
cojack
Nie wyświetla się danych bezpośredni z GET'a, get ma służyć za informację jaką akcje nalezy wykonać, a jeżeli takiej akcji nie masz strzelić w dupę urzytkownika komunikatem żeby nie kombinował bo i tak mu się nie uda. nie rozumiem tego po co dwie funkcje tworzyć?
Jeżeli już robimy to proceduralnie, to zróbmy to tak:
Kod
<?php
require_once('function.php');
$sim = trim($_GET['simowo']);
$gam = trim($_GET['games']);
if($sim != '')
  $tekst   = nazwa($sim);
elseif($gam != '')
  $tekst = nazwa($gam);
else
 $tekst = 'Jakis tutaj blad';
echo $tekst;
?>

i w function.php zostawiasz jedną funkcje która się nazywa nazwa($zmienna){switch($zmienna){....}; return $text};

Amen.
MysticPL
Możesz pokazać jak to ma wyglądać w pliku function.php?

questionmark.gif?
cojack
Możesz ją zostawić tak jak wygląda u Ciebie w 1 poscie.
MysticPL
No dobrze, ale w pierwszym mam tylko $simowo bez $games. A ja chce mieć z $games.
cojack
A Ty dla games chcesz wyświetlać jakie dane? Bo mało mówisz to co chcesz zrobić.
MysticPL
To samo co w $Simowo tylko troche inne działy.
cojack
  1. <?php
  2. $tablica_sim = array ('redakcja','historia','o_stronie','kontakt');
  3. $tablica_game = array('twojTyp','TwojTyp2','TwojTyp3'....);
  4. nazwa($sim,$tablica_sim); // tak bedzie teraz wygladalo wywolanie funkcji
  5. ?>
te tablice przed wywolaniem funkcji

  1. <?php
  2. function nazwa($zmienna, $tablica) {
  3. switch($zmienna) {
  4. case $tablica[0]: $text = '<div style="overflow:auto;"><img style="float:right;" src="gfx/pages/icons/redakcja.jpg"><p style="padding-top:12px; font-size:15px; font-weight:bold; color:#005A93;">'.ucfirst($tablica[0]).'</p></div>'; break;
  5. /* i tak robisz z pozostałymi caseami */
  6. default: $text = "Ze świata simów";
  7. };
  8. return $text;
  9. }
  10. ?>
MysticPL
Nie działa

Jak wstawiam te pliki to pojawia się biała strona w przeglądarce.
cojack
Coś musiałeś sknocić, przykład że działa:
  1. <?php
  2. $tablica = array ('test1','test2');
  3. function zmien($co, $tab)
  4. {
  5. switch($co)
  6. {
  7. case $tab[0]:
  8.  echo $tab[0];
  9.  break;
  10. default:
  11.  echo 'cos zepsules';
  12.  break;
  13. }
  14. }
  15.  
  16. echo 'Pierwszy tekst<br>';
  17. $cos = 'test1';
  18. zmien($cos, $tablica);
  19. ?>
MysticPL
Czy mógłbyś przedstawić takie dane żeby zgadzały się z tymi z pliku function.php? Bo trochę skomplikowany ten skrypt.

Czy mógłbyś wyjaśnić gdzie co umieścić, dodać komentarze gdzie się np. jak dodaje coś nowego?

W function.php też ma być ten skrypt który wcześniej napisałeś?
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.