# Session ID in Datenbank speichern möglich ?



## mgh (20. November 2004)

hallo,

beschäftige mich jetzt seit ein paar Wochen mit PHP und möchte einen sehr einfaches Warenkorbsystem programmieren.

Meine Frage:
Ist es überhaupt möglich, die Session ID in einer Datenbank (Warenkorb) zu speichern? Ich habe es mit einem unsichtbaren input-Feld versucht, aber es kommt nur ein Datum in der DB an. Das Feld in der DB-Tabelle Warenkorb lautet: PHPSESSID Varchar (11); ist das eventuell falsch?


----------



## Oliver Gringel (20. November 2004)

Die Session ID kriegst du mit session_id(). http://www.php.net/session_id


----------



## Sicaine (20. November 2004)

Es stellt sich doch viel viel eher die Frage warum du das zum Teufel willst? Oo


----------



## Blaubmania (20. November 2004)

Die aktuelle Session ID kriegst du mit session_id() raus diese kannst du dann per Update Befehl in einer Datenbank speichern. z.B.


```
$sql="UPDATE tabelle 
	SET Spaltenname='".session_id()."' 
	WHERE KundenID=".$kundenID; 
	 mysql_query($sql);
```


----------



## mgh (21. November 2004)

*Re: Session ID... - warum ich das will !*

Ich hatte vor, eine Tabelle "Warenkorb" für Artikel, die in den Warenkorb gelegt werden, zu erstellen. 

Damit die Artikel dann identifiziert werden können (wer was in den WK gelegt hat), dachte ich mir, die Artikel mit der Session ID des jeweiligen Käufers zu versehen,  und dann in der "warenkorb.php" alle Artikel mit der gleichen Session ID (wie der Benutzer) aus der Tabelle "Warenkorb" anzeigen zu lassen.

Falls dies nicht geht, oder zu umständlich ist, würde ich mich über Tipps freuen.


----------



## Oliver Gringel (21. November 2004)

Warum speicherst du die Artikel nicht in Session-Variablen?


----------



## saila (21. November 2004)

Das geht, progge auch an so einem Teil gerade rum und es läuft. Allerdings habe ich es etwas anderst gemacht.

Der User bekommt ob angemeldet oder nicht eine Nummer nach md5(), sofern er ein Produkt in den Warenkorb legt. Diese Nummer wird beibehalten bis zur endgültigen Bestellung.

Gibt er die Bestellung auf, wird über die Session geprüft, ob er alle Daten wie Anschrift und Name angegeben hat und danach wird der Warenkorb in der DB übertragen für die Abarbeitung und eine Info an den User als auch an das Bearbeitungsteam gesendet. Danach wird die Nummer gelöscht.

Unabhängig davon ist der Logginbereich über die Session geregelt. Wenn nun der Kunde weitere Bestellungen aufgeben möchte, wird erst wieder eine Nummer erzeugt, wenn er Waren in den Warenkorb legt. Angemeldet ist er solange, bis er entweder sich abmeldet, oder das Browserfenster schliesst, oder die Zeit der Untätigkeit im Shop abgelaufen ist.


----------



## Gumbo (21. November 2004)

Wieso wird denn nur bei Anmeldung eine Sitzung gestartet? Das ganze könnte doch bereits bei Betreten der Webseite geschehen, so wäre auch die Behelfsidentifikation überflüssig.


----------



## mgh (21. November 2004)

hab das so gemacht. beim start der shop.php wird die session gestartet. session_id() ;
über ein unsichtbares input-feld übergeben, aber in der db kommt nur ein datum an? und ich weiß nicht, wo der fehler liegt.

shop.php

```
session_start(); 
....
"<input type=\"hidden\" name=\"PHPSESSID\" value=\"<?=session_id()?>\">",
```

form.php

```
session_start();
...
mysql_query("
  INSERT INTO Warenkorb
  (PHPSESSID, Artnr, Anzahl)
  VALUES
  (NOW(''), '$artnr', '$anzahl')
  ", $db);
```

db - Warenkorb: Zeile: PHPSESSID 

```
PHPSESSID Varchar (11)
```


----------



## Oliver Gringel (21. November 2004)

Ja, wenn du das aktuelle Datum in die Datenbank einträgst, dann stehts auch drin 

Ich frage mich aber immernoch, wieso du die Artikel nicht einfach in ner Session-Variable speicherst?


----------



## mgh (21. November 2004)

1. Wie gesagt, beschäftige ich mich erst seit kurzem mit php. Wenn ich das ganze über eine Session-Variable weitergebe, geschieht dies über Cookies, oder? Und die können ja abgelehnt werden.

2. Da du den Fehler, den ich gemacht habe anscheinend gesehen hast, würde ich mich freuen, wenn du mir sagen könntest, was ich falsch mache; 

wo gebe ich denn das Datum ein?!


----------



## Oliver Gringel (21. November 2004)

```
" 
  INSERT INTO Warenkorb 
  (PHPSESSID, Artnr, Anzahl) 
  VALUES 
  (NOW(''), '$artnr', '$anzahl') 
  "
```
NOW() liefert dir das aktuelle Datum.

P.S.: Ich glaube, einem Shop-System bist du noch nicht so ganz gewachsen.


----------



## mgh (21. November 2004)

danke (trotz deiner leicht herausstechenden kritik)

jetzt klappts;


----------

