• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wstawienie rekordu do tabeli

VPS Starter Arubacloud
0 głosów
238 wizyt
pytanie zadane 16 października 2017 w PHP przez dominiv2604 Początkujący (350 p.)

Witam serdecznie,

napisałem prosty skrypt php, który tworzy mi nową bazę danych, w niej tworzy tabelę, a następnie chciałbym żeby do niej od razy dodał rekord, z czyjego konta został wygenerowany ten rekord oraz godzinę w której to się stało, mój skrypt przedstawia się w ten sposób:

 

<?php

session_start();

?>


<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Logowanie</title>
<body>


<?php

require_once "connect.php";
$db_name = "";


$data = date('d.m.Y');
$czas = date("H:i:s");
$klient = $_SESSION['klient'];
$login = $_SESSION['login'];



$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
$polaczenie->query('SET NAMES utf8');
$polaczenie->query("create database `$data`");



$new_empty_table = $polaczenie->query("CREATE TABLE `$data`.`$klient` 
( `ID` INT NOT NULL , 
`produkt` TEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL ,
`ilosc` FLOAT NOT NULL , `cena_przed_rabatem` FLOAT NOT NULL , 
`cena_po_rabacie` FLOAT NOT NULL ,
`godzina` TIME NOT NULL , 
`wystawil` TEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL ,
PRIMARY KEY (`ID`)) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_polish_ci");

$db_name = "$data";

$polaczenie->query("INSERT INTO `$klient` 
(`ID`, `produkt`, `ilosc`, `cena_przed_rabatem`, `cena_po_rabacie`, `godzina`, `wystawil`)
VALUES 
('', 'Mandarynka', '2', '2', '2', '12:54:23', 'ja')");
 
 



?>

</body>
</meta>
</head>
</html>

Skrypt poprawnie tworzy bazę i tabelę lecz niestety nie generuje rekordu który oczekuje :/

1 odpowiedź

0 głosów
odpowiedź 16 października 2017 przez mtk3d Nałogowiec (46,690 p.)
wybrane 17 października 2017 przez dominiv2604
 
Najlepsza
Zastanawiam się, co autor miał na myśli, kiedy patrzę na ten kod. Dlaczego tworzysz nową bazę dla każdego klienta?

Rekord się nie wpisuje, bo twoje połączenie nie ma ustawionej nazwy bazy danych. Samo przypisanie nazwy do zmiennej nic nie da, bo musisz jeszcze raz się połączyć.

I dla czego id nie ma auto inkrementacji?
komentarz 16 października 2017 przez dominiv2604 Początkujący (350 p.)
Zapomniałem stworzyć auto inkrementacji, którą już dodałem

Nie tworzę nowej bazy danych dla każdego klienta, tylko dla każdego dnia osobno (klientów w każdym dniu będzie około 50)

Czyli rozumiem żeby stworzyć sobie jeszcze jeden plik np connect1.php, w którym ustawie nazwę bazy danych jako zmienną przechowującą moją datę? Bo taką mam na to koncepcję.
komentarz 16 października 2017 przez mtk3d Nałogowiec (46,690 p.)
Wystarczy, że powtórzysz połączenie z bazą po zmianie nazwy bazy.

Z tym że to nie zmienia faktu, że nie robi się czegoś takiego jak tworzenie nowej bazy danych na każdy dzień i to jest źle napisane.

Baza danych, to baza danych, tworzysz jedną dla danej strony i koniec, ten podział na bazy służy tylko do określania uprawnień, oddzielenia tabel w bazie i ew kodowania dla grupy tabel. Totalnie nie mam pojęcia co chcesz osiągnąć tym co napisałeś.
komentarz 16 października 2017 przez dominiv2604 Początkujący (350 p.)
Ok, udało mi się wstawić rekord za pomocą skryptu. Nie tworzę już nowych baz danych tak jak mi radzisz, tylko w głównej bazie tworze tabelę oddzielną dla każdego zamówienia, wybacz ale PHP&MYSQL zajmuję się dopiero około 4 dni, więc można powiedzieć że chodzę po omacku jeszcze :)

Dzięki raz jeszcze za pomoc!
komentarz 16 października 2017 przez mtk3d Nałogowiec (46,690 p.)
I tak źle to robisz.

Zrób sobie tabele zamówienia i klienci.

W zamówieniach trzymasz zamówienia i każdy rekord zamówienia powinien mieć własne id i id klienta i łączysz te tabele przy pomocy joina.

Poczytaj o relacjach w bazach danych.
komentarz 17 października 2017 przez dominiv2604 Początkujący (350 p.)

A więc nadal potrzebuje pomocy, tylko że bardziej od strony schematu.

Założenia są takie. Posiadam 3 tabele w bazie danych o nazwach:

- Klienci

- Produkty

- Zamówienia,

Z tego co już wiem, w tabeli zamówienia będę łączył ze sobą rekordy z tabeli klienci, oraz tabeli produkty. I wszytko jest ładnie pięknie, tylko że:

W tabeli produkty będzie około 70 pozycji, z czego każda pozycja będzie musiała w tabeli zamówienia posiadać swoją wagę/ilość(ponieważ chodzi o ciasto). Czy dobrze rozumiem zatem że w tabeli zamówienia będę musiał posiadać 70 kolumn, każda dla osobnego produktu(aby uwzględnić w nim jaka jest jego ilość/waga), do tego id klienta, waga, czas etc. czyli razem wyjdzie około 75 kolumn?

1
komentarz 17 października 2017 przez dominiv2604 Początkujący (350 p.)
Dobra już nie ważne, po prostu nie przemyślałem tej kwestii, a mój mózg nie pracuje dziś na najwyższych obrotach. Dzięki, pomoc została udzielona.

Podobne pytania

0 głosów
1 odpowiedź 158 wizyt
0 głosów
1 odpowiedź 275 wizyt
pytanie zadane 20 października 2019 w JavaScript przez Młody programista Obywatel (1,200 p.)
0 głosów
2 odpowiedzi 120 wizyt
pytanie zadane 22 października 2018 w HTML i CSS przez Młody programista Obywatel (1,200 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...