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
<?php
require_once('config.php');
require_once('classes/auth.class.php');
require_once('classes/get_data.class.php');
require_once('classes/db.class.php');
$auth=new auth();
$auth->check_login();
$user_id = $_SESSION['id'];
if(!isset($_GET['page']))
{
$_GET['page'] = 'inside';
}
switch($_GET['page'])
{
case 'account':
include_once('templates/account.php');
break;
default:
include_once('templates/account.php');
}
?>
"Klasa" główny_katalog/classes/get_data.class.php
class show_data{
function show_data_info($target, $user_id){
$pdo = db::connect();
$stmt = $pdo->query('SELECT name,surname,born,martial,street_pref,street,home,phone_pref,phone,mail,www FROM icv_vcard WHERE id =' . $user_id);
$details = $stmt->fetch();
}
}
"Szablon" główny_katalog/template/account.php
<?php
require_once('header.php');
require_once('account_menu.php');
require_once('profil-box.php');
$admin = new show_data();
$admin->show_data_info();
?>
<!---cv-box-start--->
<div id="profil-cv">
<p class="name">
<?php echo $details['name']; ?></p>
</div>
<!---cv-box-end--->
<?php require_once('footer.php'); ?>
I informacja zwrotna:
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
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
Notice: Undefined variable: user_id in C:\xampp\htdocs\icv\classes\get_data.class.php on line 8
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:
echo $details['surname'];
Co robię źle?