Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]If - odmiana słowa w zależności od wartości zmiennej
czernin
post 3.10.2012, 21:06:20
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 14.06.2012

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


Witam,

Mam taki skrypt:


  1. <?php
  2. $wiadomosci = 4;
  3.  
  4. echo $wiadomosci;
  5.  
  6. if($wiadomosci === 0) {
  7. echo 'wiadomości';
  8. }
  9.  
  10. if($wiadomosci === 1) {
  11. echo 'wiadomość';
  12. }
  13.  
  14. if($wiadomosci === 2) {
  15. echo 'wiadomości';
  16. }
  17.  
  18. if($wiadomosci === 3) {
  19. echo 'wiadomości';
  20. }
  21.  
  22. if($wiadomosci === 4) {
  23. echo 'wiadomości';
  24. }


Skrypt w zależności od wartości wyświetla odmienione słowo "wiadomość". I chodzi mi o to, jak skrócić taki skrypt, żeby w jednym warunku podać przedział od 2 do np. 1000 albo w nieskończoność.

  1. if($wiadomosci === 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11) {
  2. echo 'wiadomości';
  3. }


To oczywiście nie działa.

I tu pytanie, jak to zrobić?
Go to the top of the page
+Quote Post
KotWButach
post 3.10.2012, 21:10:52
Post #2





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


  1.  
  2. if($wiadomosci < 1000 && $wiadomosci > 2)
  3. {
  4. //...
  5. }
  6.  
  7. if($wiadomosci === 2 || $wiadomosci === 3)
  8. {
  9. //...
  10. }
  11.  
Go to the top of the page
+Quote Post
vonski
post 3.10.2012, 21:33:26
Post #3





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


A może po prostu:

  1. if($wiadomosci == 1) {
  2. echo 'wiadomość';
  3. } else {
  4. echo 'wiadomości';
  5. }


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
czernin
post 4.10.2012, 20:56:34
Post #4





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 14.06.2012

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


Mam jeszcze mały problem. Skrypt poniżej w zależności od wartości $wiad wyświetla np. 0 wiadomości, 1 wiadomość, 2 wiadomości itp. Ale gdy $wiad zwróci pusty wynik wyświetla się sam napis wiadomości. Jak zrobić, aby przy pustym wyniku było wyświetlane: "0 wiadomości"?

  1. <?php
  2. include 'config.php';
  3. db_connect();
  4.  
  5. $user_data = get_user_data();
  6. $user = $user_data['user_name'];
  7. $wiadomosci = mysql_query("SELECT SUM(wartosc) FROM wiadomosci WHERE `odbiorca` = '$user'");
  8.  
  9. if($_SESSION['logged']) {
  10.  
  11. while($row = mysql_fetch_array($wiadomosci))
  12. {
  13.  
  14. $wiad = &$row['SUM(wartosc)'];
  15.  
  16. if($wiad == 0) {
  17. echo '<div class="maly prawy">';
  18. } else {
  19. echo '<div id="wiadomosci">
  20. <div class="prawy">';
  21. }
  22.  
  23. echo '<a href="wiadomosci.php"> '.$wiad.' ';
  24. }
  25.  
  26. if($wiad == 1) {
  27. echo 'wiadomość';
  28. } else {
  29. echo 'wiadomości';
  30. }
  31.  
  32. if($wiad == 0) {
  33. echo '</div></a>';
  34. } else {
  35. echo '</div></div></a>';
  36.  
  37. }
  38. }
  39.  
  40. ?>
Go to the top of the page
+Quote Post
b4rt3kk
post 4.10.2012, 21:04:25
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Najprościej to zmienić zapytanie:

  1. $wiadomosci = mysql_query("SELECT COUNT(wartosc) FROM wiadomosci WHERE `odbiorca` = '$user'");


Chyba, że kolumna wartosc przechowuje jakieś liczby konkretne, które mają być zsumowane.

Inaczej:

  1. if (isset($row['SUM(wartosc)']) OR $row['SUM(wartosc)'] != '') $wiad = $row['SUM(wartosc)']; else $wiad = 0;


Chociaż pierwszy sposób uważam za lepszy, chyba że w wartosc są liczby różne od 1 i to SUM rzeczywiście ma jakieś konkretne działanie. Bo tak w ogóle to nie wypisuje Ci liczby 0 wiadomości z konkretnej przyczyny, zapytanie nie zwraca żadnych wyników. Co oznacza, że nie ma odbiorcy o nazwie $user. COUNT pozwala wyeliminować ten problem.

Ten post edytował b4rt3kk 4.10.2012, 21:13:06


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
czernin
post 4.10.2012, 21:07:22
Post #6





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 14.06.2012

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


No własnie liczby z kolumny wartosc są sumowane. Jest jakieś inne wyjście?
Go to the top of the page
+Quote Post
b4rt3kk
post 4.10.2012, 21:16:35
Post #7





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Tak jak napisałem wyżej. Popełniasz błąd uznając za pewnik, że zapytanie musi zwrócić wyniki i przechodzisz od razu do pętli. Stąd czasem pewno to przypisanie zwracało błąd, że taka zmienna nie istnieje:

  1. $wiad = &$row['SUM(wartosc)'];


Powinno nastąpić sprawdzenie, czy zapytanie zwróciło wyniki:

  1. $wiadomosci = mysql_query("SELECT SUM(wartosc) FROM wiadomosci WHERE `odbiorca` = '$user'");
  2. if (mysql_num_rows($wiadomosci)>0) {
  3. // tutaj zaczynasz działać
  4. } else echo 'brak wiadomosci';



--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
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 - 15:20