Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ogarniecie plikow/Struktrua kodu
Forum PHP.pl > Forum > Przedszkole
viamarimar
Nie wiem czy temat do konca poprawny ale juz tlumacze o co chodzi. Pisze w php strukturalnym wiec jak juz czytalem na x poratli i tutaj tez nie ma mowy o MVC czy SMARTY. Strukturalny kod ma to do siebie ze troche sie powtarza no ale nie popadajmy w skrajnosc. Trzeba to ograniczac z tad moje pytanie.


Mam przykladowy kod wyswielajacy jakies dane z bazy:


  1. //start skrypt
  2. if (isset($_GET['komunikat']) && mysql_escape_string($_GET['komunikat'] == '5') && (int)($_GET['komunikat'])) {
  3. $wynik = mysql_query("SELECT imie,nazwisko,email FROM users WHERE rank='mod'")
  4. or die('Błąd zapytania');
  5.  
  6. if(mysql_num_rows($wynik) > 0) {
  7. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  8. echo '<table class="table table-striped">';
  9. echo "<tr><td>Imie</td><td>Nazwisko</td><td>Email</td></tr>";
  10. while($r = mysql_fetch_assoc($wynik)) {
  11. echo "<tr>";
  12. echo "<td>".$r['imie']."</td>";
  13. echo "<td>".$r['nazwisko']."</td>";
  14. echo "<td>".$r['email']."</td>";
  15. echo "</tr>";
  16. }
  17. echo "</table>";
  18. }
  19.  
  20. }
  21.  
  22. //koniec skryptu


Jak widac opatrzylem go w GETa juz mniejsza ze nazwya sie komunikat bo to jest do przerobki chodzi o funkcjonalnosc. Plik w ktorym jest ten kod nazywa sie np pracownicy.php
Jakim kodem wywolac tego GETa w index.php gdzie struktura mojego indexa to mniej wiecej

include a - gora strony
include b - srodek

include c - bok

include d - dol strony


Chodzi o to jak zrobic zeby nie pieszac HTML z PHP czy w php zostawic tam np

jakies includy
<div class=conent>

sdasd -- tu if na wywolanie geta przykladowo wyolujacego pracownikow

</div>
jakies includy


1. czy tak by to mialo wygladac?
2. Jak wywolac wspomnianego geta?

no tak bo wywoluje klikajac w menu
  1. echo '<li><a href="pracownicy.php?komunikat=5">Lista pracowników</a></li>


ale chce zeby wykonywalo sie na index ale kod bralo z pracownikow

ew moglbym zrobic index.php?komunikat=5 ale wsadzajac wszystkie ify w indexa zawsyfiny bedzie strasznie kdo i prawie wszystko w indexsie a pliku pracownicy by nie bylo wtedy bo po co?
snerf
A switch?? Rozumiem ze chcesz zrobić podstrony?
P.s skorzystaj z jakiegoś systemu szablonów i rozdziel HTML z PHP.
ghastblood
w sumie to nie rozumiem za wiele z twojej wypowiedzi ale strzelam że wystarczy do tego

  1. switch ($_GET['komunikat']) {
  2. case "5":
  3. include "pracownik.php"
  4. break;
  5. default:
  6. echo "Strona główna";
  7. }


jeźeli będziesz miał link domena.pl/index.php?komunikat=5

zostanie dodany plik pracownik.

odnośnie smarty nie zgodzę się do końca z tym

po bez problemu możesz pobrać dane sobie w pewnej strukutrze wrzucić je do zmiennej

następnie przenieść jest to smarty

  1. $smarty->assign('data', $data);
  2. $smarty->display('index.tpl');
viamarimar
smarty jest obiektowe
jest jakis system /sablon plikow pod struktralne php?

co do tego chodz jestem przeciwnikiem switcha
  1. switch ($_GET['komunikat']) {
  2. case "5":
  3. include "pracownik.php"
  4. break;
  5. default:
  6. echo "Strona główna";
  7. }


rozumiem ze daje to w index ?

ale teraz czy cos typu

  1. if (isset($_GET['komunikat']) && mysql_escape_string($_GET['komunikat'] == '5') && (int)($_GET['komunikat'])) {
  2.  
  3. echo 'ssss'
  4. }


ktore bedzie w innym pliku mi sie wykona? bo o to tu chodzi
ghastblood
tak w pliku index.php dajesz switch i on sobie sprawdzi case '5' i go wyświetli obojętne czy to będzie iclude czy echo odwoła sie do kodu pomiędzy case a break.

Jak nie chcesz bawić się w smarty choć nie widzę żadnej przeszkody możesz zrobić sobie tak

pracwonik.php

  1.  
  2. //zapytania do bazy danych
  3. //zapisujesz wyniki do tablicy/zmiennej
  4. //ladujesz plik z html zapisany jako .php
  5. require_once "tpl/pracownik.php";


tpl/pracownik.php

  1. kod html
  2.  
  3. wczytanie danych z tablicy/zmiennej
  4.  
  5. <?php echo $zmienna;?>
  6.  
  7. z tablicy np foreach
  8. <?php foreach($array as $r):?>
  9. <?php echo $r['dane'];?>
  10. <?php endforeach;?>
  11.  
Daimos
Cytat(viamarimar @ 2.12.2014, 20:46:48 ) *
co do tego chodz jestem przeciwnikiem switcha


W programowaniu nie ma PO, PISu, czy PSL, albo jest coś potrzebne, albo nie. Przeciwnikiem możesz być rzeczy, które są przestarzałe i złych nawyków. Dla switcha też jest zastosowanie.

Cytat(viamarimar @ 2.12.2014, 20:46:48 ) *
Strukturalny kod ma to do siebie ze troche sie powtarza no ale nie popadajmy w skrajnosc.


Nawet w strukturalnym programowaniu masz funkcje - stworzone po to, aby nie powtarzać kodu.

A co do Twoich problemów
plik index.php:
  1. $zmienna = 1;
  2. include 'pracownicy.php';

plik pracownicy.php:
  1. echo $zmienna;


Sprawdź to i tyle, to są podstawy podstaw, nie zwalaj wszystkiego na to, że robisz strukturalnie, bo nie masz czasu na naukę czy cokolwiek. Przekazywanie zmiennych, include,require to jest coś, od czego zaczyna się programowanie, zanim się przejdzie do pisania funkcji.
viamarimar
  1. //SWITCH
  2. switch (isset($_GET['s'])) {
  3. case "pracownicy":
  4. include "pracownicy.php";
  5. case "wyloguj":
  6. include "wyloguj.php";
  7. break;
  8. default:
  9.  
  10. echo "Strona główna";
  11. }


juz przy dwoch trzech jest tak ze jesli uzyje np linku

<a href="index.php?s=wyloguj">

to wyswietla sie jednoczesnie zawartosc z pracownicy i wyloguj nie mowiac o tym co jest jak dodaje wiecej plikow, dlaczego tak?
ghastblood
switch

poczytaj, zobacz na swój kod porównaj z przykładami nikt nie będzie cały czas odwalał roboty za ciebie.
viamarimar
//SWITCH
switch (isset($_GET['s'])) {
case "pracownicy":
include "pracownicy.php";
break;
case "wyloguj":
include "wyloguj.php";
break;
default:

echo "Strona główna";
}

jesli chodzi o tego breaka to to nie zmienia faktu ! wydawalo mi sie ze znam konstrukcje a w manulu bylem..

tymbardziej klikajac wyloguj pojawia sie to co jest w pracownikach?
kilkajac pracownicy pojawia sie to co w pracownikach?

a wpisujac .../wyloguj.php w przegladarke dziala normalnie

Ja nie jestem jakims super programista dlatego korzystam z forum, dlatego zadaje pytania, nie programuje na zarobek czy cos.. staram sie czegos dowiedziec zrobic cos kreatywnego, ale..
ghastblood
dobra powiem tobie switch nie działa z isset() musisz sprawdzić warunkiem czy zmienna jest lub zrobić

  1. switch( isset($_GET['s']) ? $_GET['s'] : defaultValue ) {...


nie jestem tego pewien w 100%
viamarimar
  1. if (isset($_GET['s']) && mysql_escape_string($_GET['s'] == 'wyloguj')){
  2. include("wyloguj.php");
  3. }


if za to dziala mowilem ze switcha nie lubie, nie denerwuj sie zaraz wywale warunek i sprawdze

co oznacza "taka skladnia" w sensie znak zapytania, to chyba jest jakis warunek?

tak chodzilo o isseta.:<
ghastblood
jest w manualu w notatkach

(condition ? action_if_true: action_if_false;)

example

(x > y? 'Passed the test' : 'Failed the test')
Daimos
switch można stosować z warunkami, tylko trzeba odwrotnie
  1. switch(true)
  2. {
  3. case ($a==1):
  4.  
  5. break;
  6. case ($a!=2):
  7.  
  8. break;
  9. }

Ale to tak na marginesie. Tutaj akurat wystarczy podstawianie tej zmiennej $_GET, a sprawdzanie, czy istnieje dać wcześniej. Czyli:
[php]
$pageId = isset($_GET['cos']) ? $_GET['cos'] : null;
switch($pageId)
{
// (...)
}
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.