Antworten auf deine Fragen:
Neues Thema erstellen

Artikel direkt aus Datenbank holen und ausgeben..

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

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();
?>
 

lachender_engel

Aktives Mitglied

AW: Artikel direkt aus Datenbank holen und ausgeben..

Keine Ahnung, was Du erwartest. Kannst Du das mal so erklären damit jemand, der Deine Sache nicht kennt, das verstehen kann?
 
B

benni23

Guest

AW: Artikel direkt aus Datenbank holen und ausgeben..

Also die Artikel werden aus dem Shop mit array ($artikelArray)entnommen, wie man in dem Code sehen kann.
Ich moechte die aber jetzt direkt per Datenbankabfrage rausholen und ausgeben!und dazu brauche ich einen Tipp wie ich das anstellen soll .
 

MrManko

Nicht mehr ganz neu hier

AW: Artikel direkt aus Datenbank holen und ausgeben..

Weiß jetzt auch nicht so 100%ig, was du meinst.

Kann es sein, dass HTML und PHP trennen willst?

Ich moechte die aber jetzt direkt per Datenbankabfrage rausholen und ausgeben!

Wenn ja, dann lass dir dieses Array doch von einer Methode einfach zurückgeben und überreiche dieses Array an dein Templatesystem, wo du es dann mit einer foreach Schleife wieder ausgibst (Unterscheidet sich ja von TPL System zu TPL System). Also ungefähr so:

PHP:
public function hole_daten_aus_datenbank() {
    // Hier dein SQL Code usw.
    return $daten_array;
}

Und hier die Übergabe an ein TPL System:

PHP:
// Ziemlich viel anderer Code
$tpl->assign("meine_artikel", $artikel->hole_daten_aus_datenbank());
// Ist jetzt alles nur ein Beispiel

Hoffe ich habe dich verstanden, wenn nicht, einfach nochmal versuchen zu erklären^^

MfG
MrManko
 

ovbb

es gibt für alles eine weg

AW: Artikel direkt aus Datenbank holen und ausgeben..

Also die Artikel werden aus dem Shop mit array ($artikelArray)entnommen, wie man in dem Code sehen kann.
Ich moechte die aber jetzt direkt per Datenbankabfrage rausholen und ausgeben!und dazu brauche ich einen Tipp wie ich das anstellen soll .

Das macht das doch :)

leider habe ich mich mit objektorientierung in php noch nicht beschäftigt um dir genau zu sagen was falsch ist.

hier die DB-abfrage
PHP:
$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);

http://php.net/manual/de/pdostatement.fetchall.php kann dir da weiterhelfen.

den teil danach kann ich mir aus zeitgründen gerade nicht aus den fingern saugen.
sorry ... feierabend ruft :)
 

psdkdts

Noch nicht viel geschrieben

AW: Artikel direkt aus Datenbank holen und ausgeben..

PHP:
$sql = "SELECT a_artikelnr, a_termin, a_name AS_veranstaltung, a_preis, a_menge AS_kartenvorrat FROM ws_artikel WHERE a_menge > 0";

ich meine Du hast dich vertippt in dem du AS_veranstaltung bzw. AS_kartenvorrat zusammenschreibst^^ Du meintest wohl

PHP:
$sql = "SELECT a_artikelnr, a_termin, a_name AS veranstaltung, a_preis, a_menge AS kartenvorrat FROM ws_artikel WHERE a_menge > 0";
versuch auch mal alle fehler auszugeben .. dadurch lernt man auch einiges
 

Milly

Nicht mehr ganz neu hier

AW: Artikel direkt aus Datenbank holen und ausgeben..

Ich verstehe es jetzt immer noch nicht!?!?!?!

Geht es nun um Fehlerbehebung oder um Opitimierung???
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.066
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben