Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [smarty] jeżeli rekord nie istnieje zwraca false
soon
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 18.07.2007

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


Witam,

mam plik select_page.php który odpowiada za to na której podstronie jakie pliki mają się wczytać.
  1. <?php
  2. function user_profile() 
  3. {
  4. global $smarty;
  5. global $page;
  6.  
  7. require_once('files/user_profile.php');
  8.  
  9. $smarty->assign('siteTitle', $user_name.' - profil użytkownika');
  10. $smarty->assign('section_title', ' - profil użytkownika');
  11. $smarty->assign('section_subtitle', 'profil użytkownika');
  12.  
  13. $page = 'user_profile.tpl';
  14. }
  15. ?>


teraz chodzi mi dokładnie o zmienną $user_name. Na podstawie user_id przekazanego w adresie ma wyświetlić jego nazwę i przypisać do siteTitle, co potem jest wyświetlane między <title></title>.

W pliku user_profile.php mam to napisane tak:
  1. <?php
  2. global $smarty;
  3. global $db;
  4. $user_id = $_GET['user_id'];
  5.  
  6. $result = $db->set_query('SELECT * from tpl_users WHERE id = ' . $user_id . '');
  7. $smarty->assign_by_ref('db_result_user', $result);
  8.  
  9. $user_name = $result[0]['nick'];
  10. ?>


Chciałbym jednak zabezpieczyć to przed ręczną zmianą $user_id która jest pobierana przez $_GET. Czyli jeżeli skrypt będzie chciał wczytać nieistniejący id ma zwrócić false.

Nie mam pojęcia jak się za to zabrać. Proszę o pomoc.

Jednak zrobiłem do dodatkowym zapytaniem z czego nie do końca jestem zadowolony.

user_profile.php
  1. <?php
  2. global $smarty;
  3. global $db;
  4. global $page;
  5. $user_id = $_GET['user_id'];
  6.  
  7. $result = $db->set_query('SELECT * from tpl_users WHERE id = ' . $user_id . '');
  8. $smarty->assign_by_ref('db_result_user', $result);
  9.  
  10. $sql = mysql_query('SELECT * from tpl_users WHERE id = ' . $user_id . '');
  11. $num_rows = mysql_num_rows($sql);
  12.  
  13. $smarty->assign_by_ref('num_rows', $num_rows);
  14.  
  15. if ($num_rows == 0) {
  16. $user_name = 'Błędny numer użytkownika';
  17. } else {
  18. $user_name = $result[0]['nick'];
  19. }
  20. ?>


user_profile.tpl
  1. <?php
  2. <div id="left">
  3. {section name=id}
  4. {if $num_rows == 0} 
  5. <div id="section">Nie znaleziono użytkownika o podanym ID.</div>
  6. {else}
  7. <div id="section">{$db_result_user[id].nick}{$section_title}</div>
  8.  
  9. <div>
  10. <p>Nazwa użytkownika: <b>{$db_result_user[id].nick}</b></p>
  11. <p>Imię: <b>{$db_result_user[id].user_name}</b></p>
  12. </div>
  13. {/if}
  14. {/section}
  15. </div>
  16. ?>


Jednak bardziej by mnie zadowalało coś na styl:
  1. <?php
  2. $result = $db->set_query('SELECT * from tpl_users WHERE id = ' . $user_id . '');
  3. $num_rows = mysql_num_rows($result);
  4. ?>


Ale wywala mi wtedy błędy.

Ma ktoś pomysł jak to rozwiązać? A może to moje rozwiązanie jest dobre i nie ma potrzeby nic z tym robić?
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 19.08.2025 - 10:13