Mam za zadanie dodać do bazy podane przez formularz dane.
Dostaję błąd
Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\bazastudent2\baza.php:63 Stack trace: #0 C:\xampp\htdocs\bazastudent2\index.php(26): baza->dodajDoBazy() #1 {main} thrown in C:\xampp\htdocs\bazastudent2\baza.php on line 63
Gdzieś już znalazłam, że dotyczy to błędnego łączenia OOP z programowanie funkcjonalnym, ale niestety nie umiem sobie z tym poradzić.
Proszę o pomoc
Mój kod
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
include 'formularz.php';
include 'baza.php';
$akcja = isset($_REQUEST['submit']) ? $_REQUEST['submit'] : '';
$b = new baza('localhost','root','','studenci');
$wynikwalidacji = 0;
if($akcja)
{
$wynikwalidacji = $b->walidacja();
}
if($wynikwalidacji === 1)
{
/*$wynikDodania =*/ $b->dodajDoBazy();
}
?>
</body>
</html>
<?php
class baza {
//uchwyt
private $msqli;
public function _construct($serwer,$user,$pass,$baza)
{
$this->msqli = new msqli('localhost','root','','studenci');
//test połączenia
if($this->msqli->connect_errno)
{
echo "Połączenie zerwane";
exit();
}
}
public function walidacja()
{
$ok = 0;
$args = ([
'nazwisko' => ['filter' => FILTER_VALIDATE_REGEXP,
'options' => ['regexp' => '/^[A-Z]{1}[a-ząęłńśćźżó-]{1,25}$/']],
'semestr_studiow' => ['filter' => FILTER_SANITIZE_NUMBER_INT],
'ocena1' => ['filter' => FILTER_SANITIZE_NUMBER_FLOAT],
'ocena2' => ['filter' => FILTER_SANITIZE_NUMBER_FLOAT],
'ocena3' => ['filter' => FILTER_SANITIZE_NUMBER_FLOAT],
]);
$dane = filter_input_array(INPUT_GET, $args);
$errors ="";
foreach ($dane as $key => $val)
{
if($val === false or $val === NULL)
{
$errors.=$key."";
}
if ($errors === "")
{
$ok=1;
return $ok;
}
else
{
echo "Błąd " . $errors;
}
}
}
public function dodajDoBazy()
{
$naz = isset($_GET['nazwisko']) ? $_GET['nazwisko'] : '';
$sem = isset($_GET['semestr_studiow']) ? $_GET['semestr_studiow'] : '';
$oc1 = isset($_GET['ocena1']) ? $_GET['ocena1'] : '';
$oc2 = isset($_GET['ocena2']) ? $_GET['ocena2'] : '';
$oc3 = isset($_GET['ocena3']) ? $_GET['ocena3'] : '';
$sql = "INSERT INTO indeks_studenta (nazwisko, semestr_studiów, ocena_eg_1, ocena_eg_2, ocena_eg_3) VALUES ($naz,$sem,$oc1,$oc2,$oc3)";
return $this->msqli->query($sql);
}
}
<!DOCTYPE html>
<html>
<body>
<form method="GET" action="index.php">
<div><label for="nazwisko">Nazwisko<input type="text" name="nazwisko"/></label></div>
<div><label for="semestr_studiow">Semestr studiów<input type="text" name="semestr_studiow"/></label></div>
<div><label for="ocena1">Ocena z przedmiotu 1<input type="text" name="ocena1"/></label></div>
<div><label for="ocena2">Ocena z przedmiotu 2<input type="text" name="ocena2"/></label></div>
<div><label for="ocena3">Ocena z przedmiotu 3<input type="text" name="ocena3"/></label></div>
<button name="submit" value="submit">Wyślij do bazy</button>
</form>
</body>
</html>