Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wywołanie zmiennej w szablonie
Forum PHP.pl > Forum > Przedszkole
psychoz
Witam, zaczne od faktu że uczę się PHP.
Mam problem ze znalezieniem konkretnych informacji na temat wywołania zmiennej z funkcji w szablonie.
Zdaje sobie sprawe że zaprezentowane niżej przykłady mogą być bardzo łopatologiczne, acz kolwiek postaram się sprawe przedstawić rzeczowo.
Strona wygląda tak:

"Kontroler" głowny_katalog/inside.php
  1. <?php
  2.  
  3. require_once('config.php');
  4. require_once('classes/auth.class.php');
  5. require_once('classes/get_data.class.php');
  6. require_once('classes/db.class.php');
  7.  
  8. $auth=new auth();
  9. $auth->check_login();
  10. $user_id = $_SESSION['id'];
  11.  
  12. if(!isset($_GET['page']))
  13.  
  14. {
  15.  
  16. $_GET['page'] = 'inside';
  17.  
  18. }
  19.  
  20. switch($_GET['page'])
  21.  
  22. {
  23. case 'account':
  24. include_once('templates/account.php');
  25. break;
  26.  
  27. default:
  28. include_once('templates/account.php');
  29.  
  30. }
  31.  
  32.  
  33. ?>


"Klasa" główny_katalog/classes/get_data.class.php

  1. class show_data{
  2.  
  3. function show_data_info($target, $user_id){
  4. $pdo = db::connect();
  5. $stmt = $pdo->query('SELECT name,surname,born,martial,street_pref,street,home,phone_pref,phone,mail,www FROM icv_vcard WHERE id =' . $user_id);
  6. $details = $stmt->fetch();
  7.  
  8. }
  9.  
  10. }


"Szablon" główny_katalog/template/account.php
  1. <?php
  2. require_once('header.php');
  3. require_once('account_menu.php');
  4. require_once('profil-box.php');
  5. $admin = new show_data();
  6. $admin->show_data_info();
  7. ?>
  8.  
  9.  
  10.  
  11. <!---cv-box-start--->
  12. <div id="profil-cv">
  13.  
  14. <p class="name"><?php echo $details['name']; ?></p>
  15.  
  16.  
  17. </div>
  18. <!---cv-box-end--->
  19.  
  20.  
  21.  
  22. <?php require_once('footer.php'); ?>


I informacja zwrotna:

  1. Warning: Missing argument 1 for show_data::show_data_info(), called in C:\xampp\htdocs\icv\templates\account.php on line 6 and defined in C:\xampp\htdocs\icv\classes\get_data.class.php on line 6
  2.  
  3. Warning: Missing argument 2 for show_data::show_data_info(), called in C:\xampp\htdocs\icv\templates\account.php on line 6 and defined in C:\xampp\htdocs\icv\classes\get_data.class.php on line 6
  4.  
  5. Notice: Undefined variable: user_id in C:\xampp\htdocs\icv\classes\get_data.class.php on line 8
  6.  
  7. Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1' in C:\xampp\htdocs\icv\classes\get_data.class.php:8 Stack trace: #0 C:\xampp\htdocs\icv\classes\get_data.class.php(8): PDO->query('SELECT name,sur...') #1 C:\xampp\htdocs\icv\templates\account.php(6): show_data->show_data_info() #2 C:\xampp\htdocs\icv\inside.php(25): include_once('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\icv\classes\get_data.class.php on line 8


I teraz co chciałbym zrobić... Oddzielić szablon, od klasy pisząc w szablonie tylko $details['name'] a nie dodając do klasy:

  1. echo $details['name'];
  2. echo $details['surname'];
  3. echo ' (';
  4. echo $details['born'];
  5. echo ')';


Co robię źle?

CuteOne
Nie podałeś argumentów w metodzie $admin->show_data_info();

  1. $details = $admin->show_data_info(twoj argment 1, twoj argument 2);
  2.  
  3. echo $detail['coś'];


oraz metoda $admin->show_data_info(); musi "coś" zwrócić abyś mógł wstawiać ten $details
  1. function show_data_info($target, $user_id){
  2. $pdo = db::connect();
  3. $stmt = $pdo->query('SELECT name,surname,born,martial,street_pref,street,home,phone_pref,phone,mail,www FROM icv_vcard WHERE id =' . $user_id);
  4. return $stmt->fetch();
  5. }


ps. zmienne deklarowane w funkcjach/metodach mają zasięg lokalny - o tym więcej na google (php zasięg zmiennych)
psychoz
Dzięki, w jakimś stopniu mnie nakierowałeś - dowiedziałem się kilku rzeczy, ale mimo wszystko skrypt nie działa.
Mógłbyś podać jakiś przykład działający? Ułatwiło by mi to bardzo prace i odblokowało w poczynaniach.

Pozdrawiam!
CuteOne
Skoro nie działa to weź się za naukę i go napraw... ja powiedziałem gdzie są widoczne błędy reszta zależy od Ciebie
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.