| SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |

28-07-2011, 12:37
|
|
michael29
Registrierter Benutzer
|
|
Registriert seit: Jul 2011
Beiträge: 1
|
|
Per Datenbankabfrage artikel kolen und ausgeben
Halo zusammen
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
PHP-Code:
<?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(); ?>
|

28-07-2011, 12:42
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

28-07-2011, 12:43
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Wenn du den Code jetzt noch in eine einzige Zeile schreibst, können wir ihn noch besser lesen als bisher schon.
Edit: Ups, zu spät
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|