B
benni23
Guest
Ich bin am üben und habe einen kleinen shop erstellt.
Nun möchte ich das zwei klassen(artikel und webshop) nicht mehr dem $artikelarray entnommen werden, sondern direkt per Datenbankabfrage in eine Methode webshop anzeigen() geholt werden.
Jetzt weiss ich nicht wie ich anfangen soll bzw. wo und wie soll ich die KLassen artikel und webshop ändern.Kann mir jemand ein Tipp geben? Danke schon mal im vorraus
Nun möchte ich das zwei klassen(artikel und webshop) nicht mehr dem $artikelarray entnommen werden, sondern direkt per Datenbankabfrage in eine Methode webshop anzeigen() geholt werden.
Jetzt weiss ich nicht wie ich anfangen soll bzw. wo und wie soll ich die KLassen artikel und webshop ändern.Kann mir jemand ein Tipp geben? Danke schon mal im vorraus
PHP:
<?php
require_once ("class_sitzungsSeite.php");
class artikel extends sitzungsSeite
{
private $artikelArray = array();
private $DB = array('database' => 'uxxxxx',
'user' => 'axxxxx',
'password' => 'xxxxx');
protected $dbh; # Database-Handle
public function __construct()
{
parent::__construct();
if(!is_array($this->DB) && empty($this->DB['database']))
throw new Exception("Daten für Datenbankverbindung fehlen!");
else
{
$connectString = "mysql:dbname=".$this->DB['database'].
";host=localhost";
try
{
$this->dbh = new PDO($connectString, $this->DB['user'],
$this->DB['password'] );
$this->dbh->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$sql = "SELECT a_artikelnr, a_termin, a_name AS_veranstaltung, a_preis, a_menge AS_kartenvorrat
FROM ws_artikel
WHERE a_menge > 0";
$result = $this->dbh->query($sql);
$tmp = $result->fetchAll(PDO::FETCH_ASSOC);
foreach ($tmp as $key => $value)
{
foreach($value as $k1 => $v1)
{
$name = split("_", $k1);
if ($k1 != 'a_artikelnr')
$this->artikelArray[$value['a_artikelnr']][$name[1]] = $v1;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
public function anzeigen()
{
print " <table cellpadding=\"7\">\n";
print " </tr>\n ";
#holen des numerischen Indizes
$tmp = array_keys($this->artikelArray);
#Durchsuchen nach den assoziativen Schlüsseln
foreach($this->artikelArray[$tmp[0]] as $key =>
$value)
{
#Ersten Buchstabn groß sezen
print "<th>".ucwords($key)."</th>";
}
print "\n</tr>\n";
#Alle Datenfelder ausgeben
foreach($this->artikelArray as $key => $value)
{
print "<tr style=\"text-align: left;\">\n";
foreach($value as $subKey => $subVal)
{
if ($subKey == "preis") #prüfen, um Euro-Text anzuhängen
print "<td align=\right\">".$subVal." Euro
</td>\n";
else
print "<td>".$subVal."</td>\n";
}
print "<td><a href=\"".$_SERVER['PHP_SELF']."?id=".
$key.
"\">In den Warenkorb</a></td>\n";
print " </tr>\n";
}
print "</table>\n";
}
public function waehlen($artikelnummer, $kunde)
{
if(!empty ($artikelnummer) && !empty($kunde))
{
try
{
$sql = "UPDATE ws_warenkorb
SET w_menge = w_menge + 1
WHERE w_artikelnr = :nummer
AND w_kunde = :kunde";
$result = $this->dbh->prepare($sql);
$result->bindParam(':nummer', $artikelnummer, PDO::PARAM_INT);
$result->bindParam(':kunde', $kunde, PDO::PARAM_INT);
$result->execute();
if ($result->rowCount() == 1)
return true;
$sql ="INSERT INTO ws_warenkorb
(w_artikelnr, w_kunde, w_menge)
VALUES (:nummer, :kunde, 1)";
$result = $this->dbh->prepare($sql);
$result->bindParam(':nummer', $artikelnummer, PDO::PARAM_INT);
$result->bindParam(':kunde', $kunde, PDO::PARAM_INT);
$result->execute();
if($result->rowCount()== 1)
{
print "Datensatz wurde eingetragen.";
return true;
}
return false;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}}
public function bestellen($kunde)
{
if(!is_integer($kunde)) # Gültige Kundennummer?
throw new Exception('Keine Kundennummer'); # Fehler ausgeben
else
{
try
{
#in Datenbank schreiben
$sql = "SELECT w_kunde, w_artikelnr, w_menge
FROM ws_warenkorb
WHERE w_kunde = :kunde";
$result = $this->dbh->prepare($sql);
$result->bindParam(':kunde', $kunde, PDO::PARAM_INT);
$result->execute();
$tmp = $result->fetchAll(PDO::FETCH_ASSOC);
foreach($tmp as $key => $value)
{
$sql = "INSERT INTO ws_bestellung (b_kunde,
b_artikelnr,
b_menge)
VALUES (:kunde, :artikel, :menge)";
$result = $this->dbh->prepare($sql);
$result->execute(array(':kunde' => (int)$value['w_kunde'],
':artikel' => (int)$value['w_artikelnr'],
':menge' => $value['w_menge']));
if($result->rowCount() == 1)
{
$sql1 = "UPDATE ws_artikel
SET a_menge = a_menge - :anzahl
WHERE a_artikelnr = :artikel";
$result1 = $this->dbh->prepare($sql1);
$result1->bindParam(':anzahl', $value['w_menge'],
PDO::PARAM_INT);
$result1->bindParam(':artikel', $value['w_artikelnr']);
$result1->execute();
if ($result1->rowCount() == 1)
{
$sql2 = "DELETE FROM ws_warenkorb
WHERE w_kunde = :kunde
AND w_artikelnr = :artikel";
$sql2 = $this->dbh->prepare($sql2);
$sql2->execute(array(':kunde' => (int)$kunde,
':artikel' => (int)$value['w_artikelnr']));
}
$error = true;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
session_destroy();
return $error;
}
}
?>
Die Class_webshop
<?php
require_once("class_webshop.php");
require_once("texte.php");
$art = new webshop();
$art->setKundenNummer("anne1963", "abcd");
if(isset($_REQUEST['pdf']))
if(isset($_REQUEST['daten']))
$art->setKundenDaten(
array('name' => $_REQUEST ['name'],
'vorname' => $_REQUEST['vorname'],
'plz' => $_REQUEST['plz'],
'passwort' => $_REQUEST['passwort'],
'ort' => $_REQUEST['ort'],
'strasse' => $_REQUEST['strasse'],
'kennung' => $_REQUEST['kennung'],
'email' => $_REQUEST['email']
));
$art->setTitel($titeltext);
$art->kopf();
if (!empty($_REQUEST['kennung']) &&
!empty($_REQUEST['passwort']))
{
#zum Shop
$art->setKundenNummer($_SESSION['kennung'],
$_SESSION['passwort']);
}
if($art->setKundenNummer($_REQUEST['kennung'], $_REQUEST['passwort']) == 0)
{
if(!isset($_REQUEST['neu']))
$art->inhalt($text[5]);#Anmeldeformular
else
$art->inhalt($text[6]);#Datenerfassungformular
}
elseif(isset($_REQUEST['wk']))
{
$art->inhalt($text[3]);
$art->auswahl($art->setKundenNummer($_REQUEST['kennung'], $_REQUEST['passwort']));
$art->inhalt($text[2]);
}
elseif(isset($_REQUEST['order']))
{
$art->bestellen($art->setKundenNummer($_REQUEST['kennung'], $_REQUEST['passwort']));
$art->inhalt($text[4]);
}
else
{
if(!empty($_REQUEST['id']))
{
$art->setKundenNummer($_REQUEST['kennung'], $_REQUEST['passwort']);
$art->waehlen($_REQUEST['id'], $_REQUEST['kunde']);
}
$art->inhalt($text[0]);
$art->anzeigen();
$art->inhalt($text[1]);
}
$art->fuss();
?>