Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kod php - uproszczenie
Forum PHP.pl > Forum > PHP
kill15
Napisałem taki kod:
  1. while($nwyb1 = mysql_fetch_assoc($wszystkie))
  2. {
  3.  
  4. if($nwyb1[nazwa] == $infok)
  5. {
  6. echo " <option value=\"$nwyb1[nazwa]\" selected=\"selected\" />$nwyb1[nazwa]</option>";
  7. }
  8. elseif(!isset($infok))
  9. {
  10. if(!isset($spr))
  11. {
  12. $spr = 'istnieje';
  13. echo " <option value=\"\" selected=\"selected\" /></option>";
  14. echo " <option value=\"$nwyb1[nazwa]\" />$nwyb1[nazwa]</option>";
  15. }
  16. }
  17. else
  18. {
  19. if(!isset($spr))
  20. {
  21. $spr = 'istnieje';
  22. echo " <option value=\"\" /></option>";
  23. }
  24. echo " <option value=\"$nwyb1[nazwa]\" />$nwyb1[nazwa]</option>";
  25. }
  26. }


On działa ale czy dało by się to jakoś uprościć questionmark.gif
Wg mnie ten kod nie jest zbyt dobry.
Jak można zauważyć chodzi mi tu o puste pole (option) w pętli no i oczywiście select do tego ;>
darko
Nie
  1. echo " <option value=\"$nwyb1[nazwa]\" selected=\"selected\" />$nwyb1[nazwa]</option>";

a
  1. echo "<option value=\"" . $nwyb1['nazwa'] . "\" selected=\"selected\" />" . $nwyb1['nazwa'] . "</option>";

i analogicznie dalej.
kill15
Czy to zwiększy jakoś bezpieczeństwo kodu??
Spawnm
@Darko -
nie
  1. echo "<option value=\"" . $nwyb1['nazwa'] . "\" selected=\"selected\" />" . $nwyb1['nazwa'] . "</option>";

tylko
  1. echo '<option value="' . $nwyb1['nazwa'] . '" selected="selected" />'. $nwyb1['nazwa'] . '</option>';

darko
@Spawnm: Można i tak i tak, nie ma większej różnicy, chociaż Twoja wersja ładniej wygląda i powinno się ją stosować.
@kill15: nie chodzi o bezpieczeństwo, ale o poprawne wyświetlenie danych; zakładając że nie masz nigdzie zdefiniowanej stałej nazwa, sprawdź różnicę (var_dump) pomiędzy zapisem:
$nwyb1[nazwa]
a
$nwyb1['nazwa']
Spawnm
Darko - jest różnica, dając " " informujesz php że mogą w stringu występować zmienne, czyli kod jest wolniejszy od ''.

Co do kodu który pokazał ~kill15 warto dodać że tablice w "" obejmujemy {}.
Bags_Bunny
@darko: jeśli:
  1. echo "<option value=\"" . $nwyb1['nazwa'] . "\" selected=\"selected\" />" . $nwyb1['nazwa'] . "</option>";

to czemu nie po prostu:
  1. echo "<option value=\"{$nwyb1['nazwa']}\" selected=\"selected\" />{$nwyb1['nazwa']}</option>";

Jaki jest tutaj sens konkatenacji, skoro zmienne są parsowane wewnątrz cudzysłowów?

Kod Spawnma jest najczystszy, najprostszy i nie wprowadza zbędnego zamieszania. To jest różnica. Uczmy początkujących dobrych nawyków.
darko
Ja nie neguję tego, co napisał @Spawnm, wręcz się z tym zgadzam. Kod w poście sformatowałem tak, a nie inaczej (czyt. lepiej) z czystego lenistwa, przerabiając fragment podany przez autora tematu. Nie prowadźmy sporu o pietruszkę.
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.