Realizacja koszyka

0

Witam. Jak mogę zrobić aby po kliknięciu za przycisk zawartość tabeli "Koszyk" była wysyłana do tabeli "kupione" , wysyła się tylko jedno pole, reszta nie.

<?php
session_start();
// Pobieram login zalogowanego
$zalogowany = $_SESSION['logowanie'];
// Łączymy z bazą
include("config.php");
// Pobieram id wpisywanego produktu do koszyka
$pobrane_id = $_GET['id'];
// Pobieram szczegóły produktu pobranego po id
$wynik = mysql_query("SELECT * FROM Koszyk where pobrane_id='$id'")
or die("Błąd");
if (mysql_num_rows($wynik)>0)
{
	while ($r = mysql_fetch_assoc($wynik))
	{	
		$miejscowosc = $r['miejscowosc'];
		$produkt = $r['produkt'];
		$cena = $r['Cena'];
		$rodzaj = $r['rodzaj'];
		$stan = $r['stan'];
		//$Opis = 'brak danych';
		
    } 

	
}

$dbc3 = mysqli_connect('nazwa_bazy', 'login', 'haslo', 'login_bazy') 
or die('Brak polczenia z baza danych');
$query3 = "INSERT INTO kupione (id, produkt, Cena, rodzaj, stan, Opis, miejscowosc, nick)" ."VALUES 
('','$produkt','$cena','$rodzaj','$stan','$Opis','$miejscowosc','$zalogowany')";

$result3 = mysqli_query($dbc3,$query3) or die ('Blad w zapytaniu do bazy danych wpis kontrahenta.');

header('Location: showkoszyk.php');
die(); 
0

Udało Mi się rozwiązać problem. Oto rozwiązanie:

<?php
session_start();
// Pobieram login zalogowanego
$zalogowany = $_SESSION['logowanie'];
// Łączymy z bazą
include("config.php");
// Pobieram id wpisywanego produktu do koszyka
$pobrane_id = $_GET['id'];
// Pobieram szczegóły produktu pobranego po id
$wynik = mysql_query("SELECT * FROM Koszyk where pobrane_id='$id'")
or die("Błąd");
if (mysql_num_rows($wynik)>0)
{
    while ($r = mysql_fetch_assoc($wynik))
    {    
        $miejscowosc = $r['miejscowosc'];
        $produkt = $r['produkt'];
        $cena = $r['Cena'];
        $rodzaj = $r['rodzaj'];
        $stan = $r['stan'];
        //$Opis = 'brak danych';
 
    } 
 
 
}
 
$dbc3 = mysqli_connect('nazwa_bazy', 'login', 'haslo', 'login_bazy') 
or die('Brak polczenia z baza danych');
$query3 = "INSERT INTO kupione
SELECT id, produkt, Cena, rodzaj, stan, Opis, miejscowosc, nick
FROM Koszyk WHERE nick='$nick'";

// ."VALUES ('','$produkt','$cena','$rodzaj','$stan','$Opis','$miejscowosc','$zalogowany')";
 
$result3 = mysqli_query($dbc3,$query3) or die ('Blad w zapytaniu do bazy danych wpis kontrahenta.');
 
header('Location: showkoszyk.php');
die();  

Mam jeszcze jedno pytanie. Jak pousuwać zrealizowane produkty z tabeli Koszyk po "nick(sesja)" oraz z tabeli kategoria po id. ? dwie inne zmienne jak widać.

0

Cześć, jestem nowy na forum i jak jeszcze nie załapałem dokładnie o odpowiedź to się powymądrzam ..... bo nowy jestem

if (mysql_num_rows($wynik)>0)
{
    while ($r = mysql_fetch_assoc($wynik))
    {    
///......
    } 
}
 

ten IF nie ma sensu chyba  że chcesz potem dopisać jakąś reakcje na brak produktu, while wystarczy , najwyżej się nie wykona ..... nad odpowiedzią na właściwe pytanie myślę ;)....

PS:
usuwanie z SQLa jest identyczne jak prosty select

 
DELETE FROM Koszyk WHERE nick='$nick'

PPS:
co do odpowiedzi na pytanie dot tabeli "kategoria" to mi dość trudno odpowiedzieć jeszcze nie znalazłem nić o tej tabeli w kodzie
ale poleceniem DELETE w SQL możesz usuwać wszystkie rekordy spełniające dany warunek czyli np określony nick w tabeli kupione

PS3:

INSERT INTO kupione
SELECT id, produkt, Cena, rodzaj, stan, Opis, miejscowosc, nick
FROM Koszyk WHERE nick='$nick'
 

Zapisuje Ci w tabeli kupione także 'id' produktu więc możesz je usuwać

DELETE FROM kupione WHERE id='{$_GET['id']}'
ale polecam powiązać to jednocześnie z nickiem
DELETE FROM kupione WHERE id='{$id]}' and nick='$nick'

PS4:
Rada na przyszłość: jest takie coś jak "SQL injection'
nigdy nie wpisuj do zapytań bezpośrednio tego co jest w $_GET, $_POST i ciasteczkach

0

Super. Dodawanie do tabeli kupione i za jednym zamachem usuwanie dodanego produktu z koszyka, zrobione, oto kod:

nclude("config.php");
// Pobieram id wpisywanego produktu do koszyka
$pobrane_id = $_GET['id'];
$id = trim($_GET['id']); 
// Pobieram szczegóły produktu pobranego po id
$wynik = mysql_query("SELECT * FROM Koszyk")
or die("Błąd");
if (mysql_num_rows($wynik)>0)
{
	while ($r = mysql_fetch_assoc($wynik))
	{	
		$miejscowosc = $r['miejscowosc'];
		$produkt = $r['produkt'];
		$cena = $r['Cena'];
		$rodzaj = $r['rodzaj'];
		$stan = $r['stan'];
		//$Opis = 'brak danych';
		
    } 

	
}
//kupno produktu - produkt zostaje zapisany do tabeli kupione a usuwany z tabeli koszyk
$dbc3 = mysqli_connect('nazwa_bazy', 'baza', 'hasło_do_bazy', 'baza') 
or die('Brak polczenia z baza danych');
$query3 = "INSERT INTO kupione
SELECT id, produkt, Cena, rodzaj, stan, Opis, miejscowosc, nick
FROM Koszyk WHERE nick='$nick'";
// ."VALUES ('','$produkt','$cena','$rodzaj','$stan','$Opis','$miejscowosc','$zalogowany')";
//usuwanie produktu z koszyka po kupieniu

$result3 = mysqli_query($dbc3,$query3) or die ('Zakupiłeś już ten produkt.');
if($result3)
{
	$query4=mysql_query("DELETE FROM Koszyk WHERE nick='$nick'");

} 

Zostało jeszcze dodać do tego usuwanie także z tabeli kategoria po id produktu. Teraz biorę się za czytanie o SQL injection i poprawianie kodu.

0

PDO super opcja, nie dość że nowsza, to jeszcze bezpieczniejsza. Jednak obecnie muszę pomęczyć jeszcze mysqla, za kilka miesięcy przejdę na pdo, bo wydaje się być super opcją.

0

Jeszcze jedno pytanie, macie jakąś stronkę, gdzie są opisane przydatne funkcję phpa? których warto się nauczyć?

0

eee? manual phpa? jedna z najlepszych dokumentacji jaka istnieje?
czemu za kilka miesięcy dopiero ? przejdź już.

0

Musze w mysql zrobić jedną pracę do szkoły.
PDO będe przez ten czas ogarniał na innych projektach.

0

W sumie Ja też muszę się pogodzić z PDO, na razie nie umiem skonfigurować( brak czasu i lenistwo) takich rzeczy jak operowanie na kilku zapytaniach jednocześnie czy nie pobieranie wszystkiego do tablic( przydatne jak ma się miliony rekordów)

0

A na dłuższą metę polecam Doctrine (czyli ORM dla PHP) http://www.doctrine-project.org/

Tu masz nawet przykład z produktami: https://symfony.com/doc/current/doctrine.html#fetching-objects-from-the-database

1 użytkowników online, w tym zalogowanych: 0, gości: 1