Czy ten fragment kodu może zostać

0

Tutaj mam fragment kodu i moje pytanie jest takie czy taki fragment może zostać bo według mnie jest trochę nieczytelny inaczej się chyba nie dało tego napisać może wy coś doradzicie, może jednak byłby dobry ten fragment kodu, tylko prosze, żebyście mnie nie krytykowali.

      <?php
  if (isset($_POST["login"]) ) {
    $zmienna = $user->zaloguj($_POST["bool"]);
    if ($zmienna == 3) header("location: ./index.php?komunikat=Uzupełnij pole login i hasło");
    if ($zmienna == 2) header("location: ./index.php?komunikat=Nie poprawne hasło bądż nazwa użytkwownika");
  }

  else if ($user->sprawdz_usera() == false) {
    header("location: ./index.php?komunikat=musisz się zalogować");
  
  }
    
  if (!isset($_GET["miesiac"])) {
    $_GET["miesiac"] = date("m");
    $_GET["rok"] = date("Y");
  }
  if ( !isset($_GET["dzien"]) and !isset($_GET["akcja"]) ) {
    $_GET["dzien"] = date("d");
  }
  else {
    $_GET["miesiac"] = atak_sql($_GET["miesiac"]);
    $_GET["dzien"] = atak_sql($_GET["dzien"]);
    $_GET["rok"] = atak_sql($_GET["rok"]);
  }


 $mie = $obiekt_data->zwroc_miesiac_text($_GET["miesiac"]);
 
print ("

<table border=0 width=500 height=300 align=center>
<tr>
<td colspan=7><div align=center><font class=pogrubiona>$mie $_GET[rok]</font></div></td>
</tr>
<tr>
</tr>
<td><div align=center><font class=normalna2>Pon</font></div></td>
<td><div align=center><font class=normalna2>Wto</font></div></td>
<td><div align=center><font class=normalna2>śro</font></div></td>
<td><div align=center><font class=normalna2>Czwa</font></div></td>
<td><div align=center><font class=normalna2>PiÄ…</font></div></td>
<td><div align=center><font class=normalna2>Sob</font></div></td>
<td><div align=center><font class=normalna2>Nie</font></div></td>
</tr>
<tbody>



<meta http-equiv=\"Refresh\" content=\"300\" />
");

  //oblicza w kt�rym dniu zacza� si� dany miesiac 
  if ( isset($_GET["rok"]) or isset($_GET["miesiac"])) {
      $_GET["rok"] = atak_sql($_GET["rok"]);
      $_GET["miesiac"] = atak_sql($_GET["miesiac"]);
      $rok = $_GET["rok"];
      $miesiac = $_GET["miesiac"];
      $dzien_tygodnia = $obiekt_data->sprawdz_dzien_tygodnia("$_GET[rok]-$_GET[miesiac]-1");
  }
  else {
      $rok = date("Y");
      $miesiac = date("m");
      $dzien_tygodnia = $obiekt_data->sprawdz_dzien_tygodnia("Y-m-1");
  }
  
  if ($dzien_tygodnia == 0) {
  $dzien_tygodnia = 7;
  }

  $dzien = 1;
  $dzien2 = 1;
  $dzien3 = "";
  if ($_GET["akcja"] == "wstecz") $dzien3 = $obiekt_data->oblicz_ile_dni_ma_miesiac($miesiac,$rok);
  if ($_GET["akcja"] == "dalej")  $dzien3 = 1;


  //petla dia wierszy 
  for ($wiersz=0;$wiersz < 7;$wiersz++) {

  print ("<tr>");
    //petla dla kolumn
    for ($kolumna=0;$kolumna < 7;$kolumna++) {
      //warunek do tego, �eby obliczy� kiedy ko�czy si� dany miesia�
      if ($dzien2 <= $obiekt_data->oblicz_ile_dni_ma_miesiac($miesiac,$rok) ) {
	print ("<td>");
	//warunek potrzebny po to obliczy� w jakim dniu tygodnia zaczyna sie dany miesia�
	if ($dzien >= $dzien_tygodnia ){
	if ( $dzien2 == $dzien3 ) {
	print ("<div align=center><font class=wieksza>$dzien2</font></div>");
	}
	else if ( $dzien2 == $_GET["dzien"] ) {
	  print ("<div align=center><font class=wieksza>$dzien2</font></div>");
	}
	//else if ($dzien3 == $dzien) 
	else {
	print ("<div align=center><a class=kalendarz href=kalenadarz.php?rok=$rok&miesiac=$miesiac&dzien=$dzien2>$dzien2</a></div>");
	}
	$dzien2++;
       
	}
	$dzien++;
	print ("</td>");
	}
      }
  print ("</tr>");

  }
  print ("<tr>");
  $poprzedni = $obiekt_data->zwroc_poprzedni_miesiac($miesiac,$rok);
  $nastepny = $obiekt_data->zwroc_nastepny_miesiac($miesiac,$rok);
  print ("
  <td colspan=4><div align=center><a class=przycisk href=kalenadarz.php?rok=" . $poprzedni[0] . "&miesiac=" . $poprzedni[1] . "&akcja=wstecz>Wstecz</a></div></td>
  ");
  print ("
  <td colspan=3><div align=center><a class=przycisk href=kalenadarz.php?rok=" . $nastepny[0] . "&miesiac=" . $nastepny[1] . "&akcja=dalej>Dalej</a></div></td></tr></table>
  ");    
    $id_usera = $user->pokaz_id_usera();
  if ($_GET["rok"] == "" and $_GET["miesiac"] == "" and $_GET["dzien"] == "") {  
    $_GET["rok"] = date('Y');
    $_GET["miesiac"] = date('m');
    $_GET["dzien"] = date('d');
  }
    print "<table width=500 align=center border=0>";
    $poczatek_dnia = $obiekt_data->oblicz_date_konca_poczatku_dnia($_GET["rok"],$_GET["miesiac"],$_GET["dzien"]);
    $wybierz_leki = $baza->query("select id_substancji,porcja,data,rodzaj_porcji,data2,id from spozycie where id_usera = '$id_usera'  and data >= '$poczatek_dnia[0]' and data <= '$poczatek_dnia[1]'  order by data");
    $kolor = " class=normalna2";
    $kolor2 = "class=normalna3";
    $i = 1;
    $cena2 = 0;
    $tablica_substancji = array();
    $rownowaznik2 = 0;
    
    while ($wybierz_leki2 = mysqli_fetch_array($wybierz_leki) ) {
      $nazwa_substancji = $baza->query("select nazwa,cena,rodzaj_porcji,za_ile,color,rownowaznik,ile_procent,id from substancje where id = '$wybierz_leki2[0]' ");
      $nazwa_substancji = mysqli_fetch_array($nazwa_substancji);
      if ($nazwa_substancji[4] != "") {
	$kolor = " color=$nazwa_substancji[4]";
	$kolor2 = " color=$nazwa_substancji[4] size=2";
      }

      $tablica_substancji[$i-1][0] = $nazwa_substancji[0];
      $tablica_substancji[$i-1][1] = $wybierz_leki2[1];
      $tablica_substancji[$i-1][2] = $wybierz_leki2[3];
      $cena = $substancja->oblicz_cene_substancji($nazwa_substancji[3],$wybierz_leki2[1],$nazwa_substancji[1]);
      $cena2 += $cena;
      $cena = oblicz_cene($cena);
      $rodzaj = sprawdz_porcje($nazwa_substancji[2]);
      $obiekt_data->oblicz_date($wybierz_leki2[4],$wybierz_leki2[2]);
      print ("
      <tr>
      <td  colspan=2><div align=center><font $kolor>
      $i <br>
      WziÄ…Å‚eÅ› $nazwa_substancji[0] w dawce $wybierz_leki2[1] $rodzaj <br>
      WziÄ…Å‚eÅ› to w " . $obiekt_data->data . "<br>
      Wydałeś na to $cena <br>
      <a class=normalna2 onclick=zaladuj('pokaz_opis.php?id_wpisu=$wybierz_leki2[5]','$i') id=m >pokaż opis</a> 
      <a class=normalna2 onclick=dodaj_opis('$i')>Dodaj opis</a>
      <a class=normalna2 onclick=edytuj_wpis('$i')>Edytuj wpis</a><br>
      <a class=normalna2 onclick=pokaz_srednia('./srednia.php?id=$wybierz_leki2[0]&data=$wybierz_leki2[4]','$i')>pokaż średnią</a><br>
      
      <div id=edytuj1$i>
      <form method=get><table border=0 width=400>
      <tr>
      <td  colspan=2><font class=normalna3>Nazwa substancji</font></td><td  colspan=2><select id=nazwa1$i>");
      $nazwa_substancji2 = $baza->query("select nazwa,id from substancje where id_usera = '$id_usera' ");
      while ($nazwa_substancji3 = mysqli_fetch_array($nazwa_substancji2)) {
	if ($nazwa_substancji[7] == $nazwa_substancji3[1]) {
	  print ("<option value=$nazwa_substancji3[1] selected>$nazwa_substancji3[0]</option>");
	}
	else {
	  print ("<option value=$nazwa_substancji3[1]>$nazwa_substancji3[0]</option>");
	}
      }
      print ("</select></td></tr><br>
      <tr><td  colspan=2><font class=normalna3>Porcja</font></td><td  colspan=2><input type=text id=nazwa2$i value=$wybierz_leki2[1] size=5></td></tr>
      <br>");
      
      print ("<tr><td  colspan=2><font class=normalna3>Data wzięcia</font></td><td>");
      rysuj_zmiane_daty($id_usera,$i,$wybierz_leki2[2]);
      print ("</td></tr></table><a class=normalna2 onclick=edytuj_wpis2('edytuj_wpis.php?id_wpisu=$wybierz_leki2[5]','$i')>Edytuj Wpis</a>
      </form>
      
      </div>
      <div id=dodaj1$i>
      <form method=get>
      <textarea id=dodaj2$i></textarea><br>
      <a class=normalna2 onclick=dodaj_opis2('dodaj_opis.php?id_wpisu=$wybierz_leki2[5]','$i')>Dodaj Wpis</a>
      </form>
      
      </div>
      ");
      //$substancja->dodaj_wpis_substancji($wybierz_leki2[5],"ala ma kota");
      if ($nazwa_substancji[6] != "") {
	$procent = oblicz_procent($wybierz_leki2[1],$nazwa_substancji[6]);
	print "<font $kolor2> Tyle alkoholu wypiłeś $procent</font> <br>";
      }
      if ($nazwa_substancji[5] != "") {
	$rownowaznik = sprawdz_rownowaznik($wybierz_leki2[0],$wybierz_leki2[1],true);
	$rownowaznik2 += $rownowaznik;
	print "<div id=benzo_rowno$i><font $kolor2>Równoważnik dzienny diazepamu $rownowaznik </font></div><form method=get>	<input type=hidden id=benzo4 value=$rownowaznik>

	<select id=benzo3>";
	$rownowaznik3 = $baza->query("select rownowaznik,nazwa,id from substancje where rownowaznik != '' and id_usera = '$id_usera' ");
	while ($rownowaznik4 = mysqli_fetch_array($rownowaznik3) ) {
	  print ("<option value=$rownowaznik4[2]>$rownowaznik4[1]</option>");
	  
	}
	
	print "</select><a class=normalna2 onclick=dodaj_rowno2('./oblicz_rownowaznik.php','$i')>Przelicz</a>
	<div id=opis444$i></div>
	<br>";
	
      }
      //if ($rownowaznik != false) {
	print "<div id=opis$i></div>";
	print "<div id=opisz$i></div>";
      //}
      print ("</font></div></td></tr>
      ");
      $kolor = " class=normalna2";
      $i++;
    }
    
    //$tablica_substancji = $substancja->sortuj_substancje($tablica_substancji);
    $tablica_substancji = $substancja->sortuj_substancje($poczatek_dnia[0],$poczatek_dnia[1],$id_usera);
    //$tablica_substancji = array_unique($tablica_substancji);
//$a = array_unique($tablica_substancji);
//print_r($a); 
    $j = 0;
        print ("
    <tr><td  colspan=2><font class=normalna2><b><div align=center>Dzisiaj spożyłeś </div></b></td></tr><tr><td  colspan=2>
    ");
    while ($j <= count($tablica_substancji) ) {
      if ($tablica_substancji[$j][0] == "") break;
      $pierwszy_element = $tablica_substancji[$j][0];
      $drugi_element = $tablica_substancji[$j][1];
      $trzeci_element = $tablica_substancji[$j][2];
      //$rodzaj = sprawdz_porcje($trzeci_element);
       print ("<div align=center><font class=normalna3>$pierwszy_element = </font><font class=normalna4>$drugi_element $trzeci_element</font>");
      $j++;
    }
    print ("</div></td></tr>");
    $cena2 = oblicz_cene($cena2);
    print ("<tr><td  colspan=2><div align=center><font class=normalna2>W sumie tego dnia na substancje wydałeś $cena2</font></div></td></tr>");
    if ($rownowaznik2 > 0) {
      print ("<tr><td colspan=2><div align=center>
	<form method=get>
	<select id=benzo>");
	$tabela_rownowaznikow = $baza->query("select id,nazwa from substancje where rownowaznik != '' ");
	while ($tabela_rownowaznikow2 = mysqli_fetch_array($tabela_rownowaznikow) ) {
	  print ("<option value=$tabela_rownowaznikow2[0]>$tabela_rownowaznikow2[1]</option>");
	}
	print ("</select>
	<input type=hidden id=benzo2 value=$rownowaznik2>
	<a onclick=dodaj_rowno('./oblicz_rownowaznik.php') class=normalna2>Sprawdź równoważnik</a>
	</form>
	
	<div id=opis44><font class=normalna2>W sumie tego dnia wziÄ…Å‚eÅ› $rownowaznik2 diazepamu</font></div>
      </div></td></tr>");
    }
    
    print ("<tr><td  colspan=2> 
    <form method=get>
    <div align=center><font class=normalna2><b>Oblicz na ile substancje wydalem </b></font></div></td></tr>
    <tr><td colspan=2><div align=center><font class=normalna2>od");
    rysuj_zmiane_daty2($id_usera,false);
    print ("</font></div></td></tr><tr><td  colspan=2><div align=center><font class=normalna2>do ");
    rysuj_zmiane_daty2($id_usera,true);
    print ("</font></div></td></tr>
    <tr><td colspan=2><div align=center><select id=nazwa>");
    $ilosc_substancji = $baza->query("select nazwa,id from substancje where id_usera = '$id_usera' ");
    print ("<option value=0>Wszystkie</option>");
    while ($ilosc_substancji2 = mysqli_fetch_array($ilosc_substancji) ) {
      print ("<option value=$ilosc_substancji2[1]>$ilosc_substancji2[0]</option>");
      
    }
    
    print ("</select></div></td></tr>
    <tr><td colspan=2><div align=center><a onclick=sprawdz_a('./sprawdz.php') class=normalna2>Sprawdź</a></div></td></tr>
    <tr><td colspan=2><div id=opis_a></div></td></tr>
    </form>
    ");
    
    print ("
    <form method=get>
    <tr>
    <td><font class=normalna2>Nazwa substancji</font><br><input type=text id=nazwa3></td>
    <td><font class=normalna2>Wybierz substancje</font><br><select id=nazwa2>");
    $nazwa_sub = $baza->query("select nazwa,id from substancje where id_usera = '$id_usera' ");
    print ("<option value=></option>");
    while ($nazwa_sub2 = mysqli_fetch_array($nazwa_sub) ) {
      print ("<option value=\"$nazwa_sub2[0]\">$nazwa_sub2[0]</option>");
    }
    
    print ("</select>
    </td>
    </tr>
    <tr>
    <td><font class=normalna2>Dawka </font><input type=text id=dawka size=5></td>
    <td><font class=normalna2>Opis spożycia</font><br><textarea id=opis cols=30 rows=3></textarea></td>
    </tr>
    <tr>
    <td colspan=2>
    <a class=normalna2 onclick=data()>Wstaw dzisiajsza datÄ™</a>");
    rysuj_zmiane_daty3($id_usera);
    print ("</td>
    </tr>
    <tr><td>
    <a class=normalna2 onclick=dodaj('./dodaj_sub.php')>Dodaj substancje</a>
    
    </td></tr>
    <tr><td colspan=2><div id=dodanie></div></td></tr>
    </form>
    ");
    ?>
    
    
    
  
3

nie może zostać

2

Na oko gwałci wszystkie zasady pisania czystego kodu. Najlepiej to usunąć go w całości. Poczytać co to jest DRY, KISS i SOLID. Poeksperymentować na jakichś małych kawałkach kodu, a po jakimś czasie zacząć pisać to od nowa :P

2

tylko prosze, żebyście mnie nie krytykowali.

Nie ciebie, tylko kod. Nawet dobry programista tworzy czasem zły kod, i vice versa - nawet zły programista czasem napisze dobry kod. Więc jeśli krytykować to raczej kod niż osobę.

Co do kodu - to jest to klasyczny przykład tego, jak w PHP się kiedyś pisało i dlaczego ten język ma tak fatalną opinię.

  • Wszystko pomieszane ze wszystkim.

  • w sumie nie wiadomo co ten kod robi, nie ma tam ani jednej funkcji...

  • przestarzały HTML: nie ma już czegoś takiego jak < font>, używa się styli CSS.

  • nie wiem jak to ma wyglądać, ale jest duża szansa, że te tabelki są niepotrzebne. Tzn. jeśli stosujesz tabelki do layoutu(rozmieszczenia przestrzennego elementów na stronie), to robisz to źle. Layout robi się stylami teraz (szczególnie Flexbox się przydaje: https://css-tricks.com/snippets/css/a-guide-to-flexbox/ ). No chyba, że faktycznie robisz tabelkę a la excel (np. http://www.scielo.br/img/revistas/rbs/v26n2/24489t3.gif ).

  • zmienne powinno się po angielsku pisać, nie po polsku. Jest wiele powodów ku temu. Najprostszy to: jeśli będziesz pisał po polsku, to nie będziesz mógł tego wrzucić na stackoverflow.com, żeby ci ktoś pomógł).

  • komentarze po polsku (zamiast po angielsku) z polskimi literami, które zamieniły ci się w dziwne znaczki? Też raczej nie halo.

  • mieszasz kod odpowiedzialny za kontakt z bazą danych z kodem prezentacji (HTML), czyli też jeden wielki bałagan.

  • zbyt długie linie

  • w PHP możesz wyjść z PHP z powrotem do HTML. Nie trzeba ciągle używać print (pozbawiając się kolorowania składni w ten sposób przy okazji).

0
LukeJL napisał(a):
  • przestarzały HTML: nie ma już czegoś takiego jak < font>, używa się styli CSS.

przecież używam styli bo w foncie jest odwołanie do klasy styli.

LukeJL napisał(a):

Układ strony jest na divach, ale ktoś mi powiedział, że moge używac tabelek, ale do wielkichg elementów stodować divy.

A tak w ogóle to jest tylko cześc kodu i to ta część, która jest nieczytelna.

2

przecież używam styli bo w foncie jest odwołanie do klasy styli.

Rzecz w tym, że nie powinieneś w ogóle używać < font >. Nie ma takiej potrzeby. To działało by nawet jakbyś użył znacznika div, span czy innego.

Kolejna uwaga, że stosujesz strasznie dużo znaczników id. Czy masz taką potrzebę? Jeśli potrzebujesz id do tego, żeby je wystylować w pliku CSS, to jest to zły pomysł - o wiele lepiej używać klas (chodzi o to choćby, że elementów o takiej samej klasie może być dużo, a możesz mieć tylko jeden element z danym id, więc gorsza reużywalność).

No chyba, że naprawdę potrzebujesz id (np. do identyfikacji danego elementu w JavaScripcie), ale patrząc po reszcie tego kodu snuję przypuszczenie, że niekoniecznie.

Układ strony jest na divach, ale ktoś mi powiedział, że moge używac tabelek, ale do wielkichg elementów stodować divy.

Coś ci ktoś źle powiedział, albo źle zrozumiałeś.

"Możesz" stosować wiele rzeczy o tyle, że wiele rzeczy ci zadziała. Przeglądarki są cierpliwe.

Pytanie tylko czy powinieneś.

Układ strony na tabelkach ma pewne wady:
http://webfly.pl/k10,tworzenie-stron-www/p7,dlaczego-nie-warto-robic-stron-opartych-na-tabelach.html
I dlatego się go już nie stosuje (tj. nie powinno stosować), tylko robi się layout w CSS (a raczej w CSS oraz HTML, bo HTML dalej odgrywa pewną rolę w layoucie).

Obecnie możesz się zainteresować flexem (ten link co wrzuciłem w poprzednim poście), czyli rozwiązaniem czysto CSSowym, które ma pewne zalety tabelek, a jednocześnie jest pozbawione ich wad.

Natomiast nie rozumiem co to miało znaczyć "do wielkich elementów stosować divy". Czemu do wielkich? WTF ;)

Aha, co do layoutu na divach, to nie ma czegoś takiego. Tak się faktycznie mówi potocznie (czy raczej mówiło, od iluś lat już nie słyszałem takiego pojęcia), natomiast bardziej prawidłowo należałoby powiedzieć "layout tworzony za pomocą znaczników HTML oraz reguł CSS". Przecież on wcale nie musi być na divach.

BTW zamiast align=center powinieneś centrować za pomocą CSSa, np. text-align (ale zależy co chcesz osiągnąć, bo ten kod jest tak nieczytelny, że ciężko sie połapać).

0

A w niektórych serwisach jak np. filmweb są tabele i divy jednocześnie czy koniecznie musze się tych tabel pozbywać ? Drugie pytanie to jak mam przykładowo taką funkcje

<?php
function nazwa($liczba) {
if ($liczba == 14) return "<span class=dobrze>Pomyślnie dodano dane do bazy</span>";

}
$zmienna = nazwa(14);
print $zmienna;
?>

 

W niektórych sytuacjach stosuje tą strategie, ale nie wiem czy ta nie będzie lepsza.

<?php
function nazwa($liczba) {
if ($liczba == "dobrze") return 1;

}
$zmienna = nazwa(14);
if ($zmienna == 1) print ("<span class=dobrze>Pomyślnie dodano dane do bazy</span>");
?>

 

I teraz mi się wydaje, że lepszy pomysł jest drugi, bo jest oddzielona warstwa widokowa od warstwy przetwarzającej, ale może wy coś powiecie, która metoda jest lepsza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1