Dodawanie do koszyka

0

Witam. Borykam się z PDO, w mysql nie miałem problemy z zrobiebiem tego skryptu, lecz tutaj to co innego. Chciałbym wyciągnąć elementy po kliknięciu na 'dodaj do koszyka' na innej stronie, z tabeli kategoria, po id danego produktu i zapisać je w tabeli Koszyk. Problem z tym, że skrypt nie dodaje tych produktów, nie wiem czemu. Dodawanie nowego przedmiotu działa bez zarzutu.
$db jest napisane i łączy się z bazą.


$sql = "INSERT INTO Koszyk(produkt) VALUES (:pro)";
$stmt=$db->prepare($sql);


$stmt->bindParam(':pro', $_POST['produkt'],PDO::PARAM_STR);
$stmt->execute();
echo 'Dodano';
 

a to kod na porzedzającej stronie:

	<?php 

	$db = (łączy z bazą);

	$nick = $_SESSION['logowanie'];
 
	//wyświetlamy wszystke pola z tabeli "kategoria"

	$stmt=$db->query('SELECT * FROM kategoria');

        foreach($stmt as $row)
	{	
		echo "<font color=\"#90D4B4\"><td>".$row['miejscowosc']."<br></font>";
		echo "<br><font color=\"#2D8C5F\"><td><b>".$row['produkt']."</b><br></td></font>";
		echo "<b>Cena: </b>";
		echo "<td>".$row['Cena']."</td><br>";
		echo "<td>".$row['rodzaj']."<br></td>";
		echo "<td>".$row['stan']."<br></td>";
		echo "<b>Opis: </b>";
		echo "<td>".$row['Opis']."<br></td>";
		echo "Dodany przez : ";
		echo "<font color=\"#C92E2E\"><td><b>".$row['nick']."</b><br></td></font color>";
		echo "<td>

// po kliknięciu poniższego przycsku, przenosi do skryptu powyżej 'dodający do koszyka'
        <a href=\"dodaje_produkt_do_koszyka.php?id={$row['id']}\"><b>Dodaj do koszyka</b></a> 
		</td>"; 
			echo "<br>_______________________<br>";		
    } 
?> 
0

Ktoś wie gdzie robię błąd?

1

Cytując Jerzego Stuhra: "Ja tu widzę niezły burdel" ( )

Abstrahując od tego, że projekt bazy wydaje się spaprany (masz tylko jeden koszyk w skali aplikacji?), to nie w bazie leży problem.

<a href=\"dodaje_produkt_do_koszyka.php?id={$row['id']}\"><b>Dodaj do koszyka</b></a> 

Tutaj przekazujesz id produktu GETem i pod nazwą id, a chcesz odbierać POSTem i pod nazwą produkt.

0

W bazie jest tylko jeden koszyk, gdyż jest to projekt na własny użytek i jeden wystarczy.
Nawet jak pobieram wysłany parametr 'id' to nie dodaje się nowy rekord w tabeli Koszyk.

0

Dobrze, a odbierasz getem rozumiem? Jaki błąd dostajesz?

0

Tak, odbieram GETem. Sytuacja wygląda następująco, dodaje do bazy danych do tabeli Koszyk pobrane ID, ale jak można zrobić, aby pobierało wszystkie dane produktu o pobranym id?

1

Nie rozumiem pytania? Chodzi o to?

SELECT * FROM kategoria WHERE id=5
0

Mniej więcej tak,

 

$sql = "INSERT INTO Koszyk(id,produkt) VALUES (:id,:produkt) where id=:id";
$stmt=$db->prepare($sql);

$stmt->bindParam(':id',$_POST['id'],PDO::PARAM_STR);
$stmt->bindParam(':produkt', $_POST['produkt'],PDO::PARAM_STR);
$stmt->execute();
echo 'Dodano';

Tutaj jest kod który powinien zapisywać do tabeli Koszyk wartość pobraną z poprzedniej strony. Lecz nie zapisuje nic.

 

$sql = "INSERT INTO Koszyk(id) VALUES (:id)";
$stmt=$db->prepare($sql);

$stmt->bindParam(':id',$_POST['id'],PDO::PARAM_STR);
$stmt->execute();
echo 'Dodano';

A ten kod zapisuje bez problemu dane id do bazy Koszyk

Myślę że to wina tego że pobieram ze strony, która odnosi do tej na której mam kod php, tylko id danego produktu poprzez

<a href=\"dodaje_produkt_do_koszyka.php?id={$row['id']}\"><b>Dodaj do koszyka</b></a>  

A chciałbym zapisać do tabeli Koszyk nie tylko id, ale także nazwę produktu, cenę itp.

0

Jak przerobić owe skrypty abym mógł przekazać do bazy nazwę produktu, cenę i inne zmienne? nie tylko id

0

Można zamknąć, dziękuje wszystkim za pomoc.

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