Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Funkcja get i problem
parafik
post 4.08.2009, 17:36:00
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


Otóż mam taki problem. Chcę stworzyć linki do komponentów z funkcją get wyglądającą tak

$komponent = $_GET['komponent'] ;
if ($_GET['komponent'] !== '') {

switch ($komponent) {
case $Komponent:
global $Komponent;
include("komponenty/$Komponent/$Komponent.php");
break;
}
}

Zawartość case to $Komponent i ma się to odnosić do tego komponentu który wpisze w linku np.

index.php?komponent=zaloguj czy index.php?komponent=artykuly

i chcę aby mi się wyświetliła zawartość komponentu zaloguj. Podobnie ma być z innymi komponentami.
Wartość include działa i odnosi się do komponentu w którym właśnie jestem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
wookieb
post 4.08.2009, 17:48:52
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




$_GET to nie funkcja

Zobacz jak się używa switch http://php.net/switch
$Komponent != $komponent (wielkość znaków)

Niepotrzebny ci ten global $komponent

Wszystko masz NIE tak.

  1. <?php
  2. $komponenty = array('zaloguj', 'inne_pierdoly');
  3.  
  4. $komponent='domyslny_komponent';
  5.  
  6. if(isset($_GET['komponent']) && in_array($_GET['komponent'], $komponenty))
  7. {
  8. $komponent=$_GET['komponent'];
  9. }
  10.  
  11. //tutaj sobie zalaczasz $komponent
  12. ?>


Ten post edytował wookieb 4.08.2009, 17:56:03


--------------------
Go to the top of the page
+Quote Post
parafik
post 4.08.2009, 17:59:28
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


W miejscu case wpisuje nazwę komponetu i automatycznie ma mi wyświetlić zawartość tego komponentu.
Pisanie wszystkiego w ten sposób:

$komponent = $_GET['komponent'] ;
if ($_GET['komponent'] !== '') {
switch ($komponent) {
case "zaloguj":

include("komponenty/zaloguj/zaloguj.php");
break;
}
}

$komponent = $_GET['komponent'] ;
if ($_GET['komponent'] !== '') {
switch ($komponent) {
case "artykuly":

include("komponenty/artykuly/artykuly.php");
break;
}
}


jest bezsensowne. Dodając w przyszłości nowe komponenty będę musiał ingerować w plik index.php.
Go to the top of the page
+Quote Post
Pawel_W
post 4.08.2009, 18:00:38
Post #4





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


po 1: bbcode
po 2: ty chyba dalej nie wiesz jak switch działa winksmiley.jpg
Go to the top of the page
+Quote Post
wookieb
post 4.08.2009, 18:01:29
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wiec podałem ci inna metodę. A dodatkowo nadal nie przeczytałeś jak się używa switch bo jego istnienie w twoim skrypcie jest bezsensowne.
Używaj BBCODE


--------------------
Go to the top of the page
+Quote Post
parafik
post 4.08.2009, 18:04:35
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


A można liczyć na twoją pomoc i napiszesz mi jak to ma wyglądać??
Go to the top of the page
+Quote Post
wookieb
post 4.08.2009, 18:05:39
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Oczywiście, że możesz liczyć na moją pomoc.
Ma to wyglądać prawidłowo zgodnie z manualem na http://php.net/switch

Angielski za trudny? http://www.google.pl/search?hl=pl&q=ph...mp;aq=f&oq=

Ten post edytował wookieb 4.08.2009, 18:06:28


--------------------
Go to the top of the page
+Quote Post
parafik
post 4.08.2009, 18:35:55
Post #8





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


Ok switch jest mi już znany.
Teraz chodzi mi o to case.
Mam coś takiego:
Kod
<?php

    switch($_GET['act'])
    {
        case 'dodaj':
            echo 'Dodawanie danych';            
            break;
        case 'edytuj':
            echo 'Edycja danych';
            break;
        case 'usun':
            echo 'Usuwanie danych';
            break;
        default:
            echo 'Wyświetlenie danych';    
    }

?>


W przeglądarce wpisze index.php?act=dodaj i wyświetli mi się Dodawanie danych.
Mnie o to chodzi abym w miejscu tego case wpisał sobie nazwę komponentu czyli np: index.php?act=zaloguj i wyświetlił mi się dany komponent.
Pod case dlatego pisałem include('komponenty/$Komponent/$Komponent.php)
Go to the top of the page
+Quote Post
wookieb
post 4.08.2009, 18:37:02
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A dlatego do tej jednej jedynej czynności podałem ci inny kod, którego nadal nie przeczytałeś i nie przetestowałeś.


--------------------
Go to the top of the page
+Quote Post
parafik
post 4.08.2009, 19:20:08
Post #10





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


Kod
<?php
$komponenty = array('zaloguj', 'inne_pierdoly');

$komponent='domyslny_komponent';

if(isset($_GET['komponent']) && in_array($_GET['komponent'], $komponenty))
{
$komponent=$_GET['komponent'];
}

//tutaj sobie zalaczasz $komponent
?>


Wszystko fajnie tylko teraz jak załączyć wiele komponentów. Jak na razie mogę tylko jeden.
Go to the top of the page
+Quote Post
wookieb
post 4.08.2009, 19:21:32
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wiesz chociaż jak ten kod działa?
http://php.net/in_array
http://php.net/array


--------------------
Go to the top of the page
+Quote Post
parafik
post 4.08.2009, 19:25:02
Post #12





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


Kod
$komponenty = array('wyloguj', 'zaloguj');

$komponent='domyslny_komponent';

if(isset($_GET['komponent']) && in_array($_GET['komponenty'], $komponenty))
{
$komponent=$_GET['komponent'];
}
include('komponenty/wyloguj/wyloguj.php');
  include('komponenty/zaloguj/zaloguj.php');


I działa mi tylko komponent wyloguj.
Go to the top of the page
+Quote Post
wookieb
post 4.08.2009, 19:26:10
Post #13





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Jezu... nie napiszesz jak krowie na miedzy to NIC sie nie domysli...
  1. <?php
  2. include('komponenty/'.$komponent.'/'.$komponent.'.php');
  3. ?>


Ten post edytował wookieb 4.08.2009, 19:26:19


--------------------
Go to the top of the page
+Quote Post
Pawel_W
post 4.08.2009, 19:27:22
Post #14





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


  1. <?php
  2. include('komponenty/wyloguj/wyloguj.php');
  3.  include('komponenty/zaloguj/zaloguj.php');
  4. ?>

zamień na
  1. <?php
  2. include('komponenty/'.$komponent'./'.$komponent.'.php');
  3. ?>


takie trudne?
Go to the top of the page
+Quote Post
parafik
post 4.08.2009, 19:32:26
Post #15





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


Ostatnie pytanie gdzie mam wkleić to

Kod
$komponenty = array('wyloguj', 'zaloguj');

$komponent='domyslny_komponent';

if(isset($_GET['komponent']) && in_array($_GET['komponenty'], $komponenty))
{
$komponent=$_GET['komponent'];
}
include('komponenty/'.$komponent'./'.$komponent.'.php');


do tego

Kod
$Komponent = 'index';

require('silnik.php');




if($BazaDanych == 'mysql')
{
    $ZapytanieStrona = 'SELECT * FROM '.$Prefix.'strona WHERE strona_id';
}

    if(!WykonajZapytanie($ZapytanieStrona))
    {
        PokazBlad('Bł±d w zapytaniu',__FILE__,__LINE__,$ZapytanieStrona);
    }

    $Wynik = PobierzWynik();

    $Wynik[0]['strona_tytul'] = stripslashes($Wynik[0]['strona_tytul']);
    $Wynik[0]['strona_tresc'] = stripslashes($Wynik[0]['strona_tresc']);
    $Wynik[0]['strona_keyword'] = stripslashes($Wynik[0]['strona_keyword']);
    $Wynik[0]['strona_desc'] = stripslashes($Wynik[0]['strona_desc']);


$SlowaKuczowe = $Wynik[0]['strona_keyword'];
$OpisStrony = $Wynik[0]['strona_desc'];
$TytulStrony = $Wynik[0]['strona_tytul'].' - ';
$koomponenty = array('zaloguj', 'inne_pierdoly');

Szablon();


aby nie mieć tego

Kod
Parse error: parse error in c:\usr\krasnal\www\victorio\index.php on line 11


I bardzo dziękuję za pomoc. pozdro
Go to the top of the page
+Quote Post
wookieb
post 4.08.2009, 19:34:30
Post #16





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Literówka, którą mogłeś sam poprawić...
  1. <?php
  2. include('komponenty/'.$komponent.'./'.$komponent.'.php');
  3. ?>


--------------------
Go to the top of the page
+Quote Post
parafik
post 4.08.2009, 20:00:09
Post #17





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


Oto gotowy kod

Kod
global $Komponent;

if(isset($_GET['komponent']))
{
$komponent=$_GET['komponent'];
}
include('komponenty/'.$komponent.'/'.$komponent.'.php');


I działa jak należy.

Dzięki wielkie za pomoc.

pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:28