PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wert an Session übergeben


mischma
17.12.2006, 02:08:06
Hallo Gemeinde,

über einen Link auf artikel.php gelangt man über das includierte authentifizierung.php zum warenkorb.php , wo die ausgewählten Artikel des aktuellen Kunden angezeigt werden sollen.

Leider erhalte ich nachfolgende Fehlermeldung Duplicate entry '0' for key 1 beim Aufruf von warenkorb.php.

Liegt der Fehler vielleicht bei der Übergabe des aktuellen Kunden an die Session mit $_SESSION['nummer']=$row['nummer']; ?

Ich weiß leider nicht weiter und bitte um Hilfe :-)

authentifizierung.php
<?php
// session_start muß vor einer Ausgabe aufgerufen werden!
session_start();

if (isset($kennung))
{
$sql = "SELECT *
FROM kunden
WHERE kennung = '$kennung'
AND passwort = '$passwort'";

$result = mysql_query($sql) or die(mysql_error());

// Falls keine Ergebniszeile vorliegt, sind die Daten nicht korrekt
if (!($row = mysql_fetch_row($result)))
{
// Weiterleitung zum Anmeldeformular + Fehlermeldung
header("Location: http://".$_SERVER['HTTP_HOST']."/index.php?meldung=Login inkorrekt");
}
else
{
// Falls Daten korrekt, Wert in Session speichern
$_SESSION['angemeldet']="ja";
$_SESSION['nummer']=$row['nummer'];
}
}
else if($_SESSION['angemeldet']!="ja")
{
// Weiterleitung zum Anmeldeformular
header("Location: http://".$_SERVER['HTTP_HOST']."/index.php");
}
?>

warenkorb.php
<?php
include("dbconnect.php");
include("authentifizierung.php");

// nicht gewünschte Artikel aus warenkorb löschen
if (isset($loeschen))
{
$sql = "DELETE
FROM warenkorb
WHERE kundennummer = '".$_SESSION['nummer']."'
AND artikelid = $loeschen";

mysql_query($sql) or die(mysql_error());
}

// die gewählten Artikel in den warenkorb schreiben
if (isset($id))
{
$sql = "INSERT INTO
warenkorb (artikelid, kundennummer)
VALUES ($id, '".$_SESSION['nummer']."')";

mysql_query($sql) or die(mysql_error());
}

// Artikel zum Anzeigen holen
$sql = "SELECT name, preis
FROM artikel, warenkorb
WHERE artikel.id =warenkorb.artikelid
AND warenkorb.kundennummer = '".$_SESSION['nummer']."'";

$result = mysql_query($sql) or die(mysql_error());
?>

<html>
<head><title>Warenkorb</title></head>
<body>
<h1>Warenkorb</h1>
Folgende Artikel befinden sich im Warenkorb:<p>
<table cellspacing="2" cellpadding="4" border="0">
<tr bgcolor="Yellow">
<th>Artikel</th><th>Preis</th>
</tr>

<?php
while ($row = mysql_fetch_assoc($result))
{
print "<tr bgcolor='Silver'>";
print "<td>".$row['name']."</td><td>".$row['preis']." EUR</td>";
print "<td><a href='warenkorb.php?löschen=".$row['artikelid']."'>"."Artikel löschen</a></td>";
print "</tr>";
}
?>

</table>
<p>
<a href="artikel.php">Zurück zur Artikelseite</a>
<p>
<a href="bestellung.php">Zur Bestellung</a>
</body>
</html>

Vielen Dank

Mike

feuervogel
17.12.2006, 12:00:03
ich glaube nicht, dass das eine fehlermeldung ist, sondern eventuell nur ein warning.

trotzdem sollte da bei der meldung eine zeilennummer dabei stehen. die sagt dir, um welche zeile es sich handelt, und es müssen keine vermutungen angestellt werden...

BenniG.
17.12.2006, 12:13:14
Duplicate entry '0' for key 1
Das ist eine MySQL-Fehlermeldung!
Dürfte wohl hier passieren:

// die gewählten Artikel in den warenkorb schreiben
if (isset($id))
{
$sql = "INSERT INTO
warenkorb (artikelid, kundennummer)
VALUES ($id, '".$_SESSION['nummer']."')";

mysql_query($sql) or die(mysql_error());
}

mischma
17.12.2006, 13:08:31
Das ist eine MySQL-Fehlermeldung!
Dürfte wohl hier passieren:

// die gewählten Artikel in den warenkorb schreiben
if (isset($id))
{
$sql = "INSERT INTO
warenkorb (artikelid, kundennummer)
VALUES ($id, '".$_SESSION['nummer']."')";

mysql_query($sql) or die(mysql_error());
}


Hallo Leute,

ich hab den Fehler gefunden... Asche auf mein Haupt !!!
Lag nicht am Script sondern daran, daß ich in der Tabelle nicht auto_increment für den Primärschlüssel, sondern 0 gewählt hatte.

Vielen Dank für Eure Hilfe.

Grüsse aus Köln

Mike