Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja get i problem
Forum PHP.pl > Forum > Przedszkole
parafik
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.
wookieb
$_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. ?>
parafik
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.
Pawel_W
po 1: bbcode
po 2: ty chyba dalej nie wiesz jak switch działa winksmiley.jpg
wookieb
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
parafik
A można liczyć na twoją pomoc i napiszesz mi jak to ma wyglądać??
wookieb
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=
parafik
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)
wookieb
A dlatego do tej jednej jedynej czynności podałem ci inny kod, którego nadal nie przeczytałeś i nie przetestowałeś.
parafik
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.
wookieb
Wiesz chociaż jak ten kod działa?
http://php.net/in_array
http://php.net/array
parafik
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.
wookieb
Jezu... nie napiszesz jak krowie na miedzy to NIC sie nie domysli...
  1. <?php
  2. include('komponenty/'.$komponent.'/'.$komponent.'.php');
  3. ?>
Pawel_W
  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?
parafik
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
wookieb
Literówka, którą mogłeś sam poprawić...
  1. <?php
  2. include('komponenty/'.$komponent.'./'.$komponent.'.php');
  3. ?>
parafik
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
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.