php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.03.2006, 12:51  
Benutzer
 
Registriert seit: 26.03.2006
Beiträge: 82
Mach!N3
Standard warenkorb & mysql

Schönen Sonntag

Ich bin derzeit dabei einen Warenkorb zu programmieren. Ob ich nun ein ANfänger oder ein Fortgeschrittener bin kann ich leider wirklich nicht beurteilen, das müsst Ihr machen.

Ich hab meinen Warenkorb soweit, dass der User bei Klick auf die Artikel den Artikel in den Warenkorb legen kann. Allerdings wird in der mysql Tabelle auch eine "neue" Zeile geschrieben wenn ich z.B. zweimal den gleichen Artikel auswähle.

Die warenkorb Tabelle besteht aus "id (auto_increment), kundennummer und artikelid". Ich würde nun die Tabelle mit der Spalte "Anzahl" erweitern, aber ich komme einfach nicht drauf wie ich mein Script umändern soll, dass der Bestand um eins erhöt wird wenn mehrmals Artikel ausgewählt werden.

Ich hab zwar in meiner artikel.php das mit der "Update" SQL Anweisung sinnvoll umsetzen können, aber nun hab ich wirklich einen Denkknoten.

Ich wäre Euch mehr als dankbar wenn Ihr mir helfen könntet.

Hier meine Scripte die hier relevant sind:

artikel.php

Code:
<?php
session_start();
include("dbconnect.php");
include("authentifizierung.php");

// Es wird ein SQL Befehl in einer Variablen gespeichert
$sql = "select id, name, preis, bestand from artikel order by preis DESC";

// In folgender Variable wird die Datenbankanfrage gespeichert inkl. der Fehlermeldung bei Nicht-Funktion
$result = mysql_query($sql) or die (mysql_error());
?>
<html>
<head><title>Artikelliste</title></head>
<body>
<h1>Artikelliste</h1>
Folgende Artikel können Sie bestellen
<table cellspacing=2 cellpadding=4 border=0>
<tr bgcolor="yellow">
<th>Artikel</th><th>Preis</th><th>Bestand</th><th> </th>
</tr>
<?php
	while($row = mysql_fetch_assoc($result))
		{
			print "<tr bgcolor='#cccccc'>";
			print "<td>".$row['name']."</td><td>".$row['preis']." Euro</td><td>".$row['bestand']."</td>";
			print "<td><a href=warenkorb.php?id=".$row['id'].">". "Warenkorb</a></td>";
			print "</tr>";
	 	}
?>
</table>
</body>
</html>
warenkorb.php

Code:
<?php
session_start();
include ("dbconnect.php");
include("authentifizierung.php");
// Bestelldaten in die Datenbank schreiben
// Da das bestellid-Feld auf auto-increment
// gesetzt wurde, muss es nicht angegeben werden.

$sql = "insert into warenkorb (artikelid, kundennummer) values ($id, ".$_SESSION['nummer'].")";

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

// Jetzt die Artikeldaten zwecks Anzeige selektieren
$sql = "select name, preis from artikel, warenkorb where warenkorb.kundennummer=".$_SESSION['nummer']." and artikel.id=warenkorb.artikelid";

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

<html>
<head><title>Bestellseite</title></head>
<body>
<h1>Warenkorb</h1>
Folgende Artikel liegen im Warenkorb
<table cellspacing=2 cellpadding=4 border=0>
<tr bgcolor="yellow">
<th>Artikel</th><th>Preis</th>
</tr>
<?php
	// Die mysql_fetch_assoc, die hier stand, wird jetzt schon vorher aufgerufen
		while($row = mysql_fetch_assoc($result))
		{
	print "<tr bgcolor='#cccccc'>";
	print "<td>".$row['name']."</td><td>".$row['preis']." Euro</td>";
	print "</tr>";
	 	}
	
?>
</table>
Zurück zur Artikelseite
</body></html>
Mach!N3 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.03.2006, 12:58  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Na du könntest einfach vor dem INSERT abfragen, ob der Artikel + Kundennummer schon in der Tabelle Warenkorb vorhanden ist. Falls ja führe ein UPDATE durch und erhöhre die Anzahl um 1. Falls nein, füge einen neuen Datensatz ein....
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 26.03.2006, 13:03  
Benutzer
 
Registriert seit: 26.03.2006
Beiträge: 82
Mach!N3
Standard

Aber wie gebe ich dann an in welcher Zeile er die Anzahl um eins erhöhen soll?

Ich habe mir gedacht (wobei mir einfach der Code dazu nicht einfallen will sry!!):

Wenn eine Zeile mit gleicher "kundennummer" und "artikelid" bereits besteht, dann erhöhe die Anzahl, in der Zeile wo die "kundennummer" und die "artikelid" gleich ist um 1.

Aber mir fällt irgendwie einfach der Code nicht dazu ein. Kannst Du mir vllt. mit einem Codeschnipsel weiterhelfen?
Mach!N3 ist offline  
Alt 26.03.2006, 13:31  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

UPDATE tabelle SET spaltex="y" WHERE spaltez="Wert"
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 26.03.2006, 13:43  
Benutzer
 
Registriert seit: 26.03.2006
Beiträge: 82
Mach!N3
Standard

Danke Dir!

Gleich mal ausprobieren!

Hoffe ich darf Dich nóchmal fragen falls ich was net versteh!
Mach!N3 ist offline  
Alt 26.03.2006, 13:48  
Benutzer
 
Registriert seit: 26.03.2006
Beiträge: 82
Mach!N3
Standard

Du meintest ich soll das ganze vor dem insert einfügen.

Aber wie soll ich in einer SQL Anweisung angeben, dass ein update gemacht werden soll wenn eben die gewünschten Bedingungen erfüllt sind oder wenn nicht dann soll ein insert gemacht werden.

So`?

$sql = "update warenkorb set anzahl+1 where kundennummer=$kundennummer and artikelid=$id else insert into warenkorb (artikelid, kundennummer) values ($id, ".$_SESSION['nummer'].")";
Mach!N3 ist offline  
Alt 26.03.2006, 13:50  
Benutzer
 
Registriert seit: 26.03.2006
Beiträge: 82
Mach!N3
Standard

Ich mein das "else" geht in einer sql Anweisung nicht. Wie hast Du das genau gemeint mit "vor dem insert"?
Mach!N3 ist offline  
Alt 26.03.2006, 14:06  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Entschuldige, dass ich bisher so kurz gefasst war - aber du hast im Fortgeschrittenen-Board gepostet da dachte ich dir fehlt nur ein kleiner Denkanstoß.

Eine Möglichkeit:

Ein Kunde will einen Artikel in den Warenkorb legen. Du prüfst nun zuerst ob der entsprechende Artikel schon für diesen Kunden im Warenkorb liegt (SELECT COUNT(*) as Anzahl FROm tabelle WHERE kunde="xy" AND ware="z").
In einer ganz normalen (PHP-)IF-Abfrage kannst du jetzt schauen ob die Anzahl größer als 0 ist. Falls nein kannst du wie gehabt den artikel in den Warenkorb legen.

Falls die Anzahl größer als 0 ist führst du einfach das update aus.

Pseudo-Code:
SELECT COUNT(*) as Anzahl FROm tabelle WHERE kunde="xy" AND ware="z"

if(anzahl>0) UPDATE tabelel SET spalte=".." WHERE ...
else
INSERT ...


Und:
verschoben nach Anfänger.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 26.03.2006, 14:43  
Benutzer
 
Registriert seit: 26.03.2006
Beiträge: 82
Mach!N3
Standard

Muss ich bei COUNT(*) das * noch durch irgendetwas ersetzen?
Mach!N3 ist offline  
Alt 26.03.2006, 14:44  
Benutzer
 
Registriert seit: 26.03.2006
Beiträge: 82
Mach!N3
Standard

Ich hab gerade auf php.net in der function_list nachgeguckt und da wird bei Count() immer zuuerst eine Variable festgelegt. Wobei ich, wenn ich eine Variable vorher festlege nicht weiß welchen wert ich dieser geben sollte?

Oh man ich verzweifle noch...
Mach!N3 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
Query was empty bei Warenkorb Shalina PHP Tipps 2006 12 10.06.2006 00:45
warenkorb Artikelanzahl verringern Mach!N3 PHP Tipps 2006 59 30.03.2006 08:09
PHP, MySQL installieren frankys9 PHP Tipps 2006 10 16.03.2006 16:05
Kein Zugriff über ODBC mit der IP-Adresse auf MySql DB Datenbanken 4 09.02.2006 11:04
[Erledigt] Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
anleitung für warenkorb bratwurstschorsch PHP Tipps 2004 1 25.10.2004 21:59
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
warenkorb php mysql, mysql warenkorb, warenkorb mysql, php mysql warenkorb, warenkorb mit mysql, php warenkorb mysql, http://www.php.de/php-tipps-2006/38526-warenkorb-mysql.html, $sql = \select name, preis from artikel, warenkorb where warenkorb., warenkorb mit php und mysql, warenkorb codeschnipsel, php warenkorb script mysql, php warenkorb mit mysql, warenkorb in mysql, warenkorb in php mysql, mysql php warenkorb, warenkorb sql php, warenkorb php sql, php mysql warenkorb programmieren, warenkorb mysql php, mysql tabelle warenkorb

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.