Per Datenbankabfrage artikel kolen und ausgeben

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Per Datenbankabfrage artikel kolen und ausgeben

    [FONT=Book Antiqua]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?[/FONT][FONT=Book Antiqua]
    [/FONT][FONT=Book Antiqua]Danke schon mal im vorraus[/FONT]
    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'$artikelnummerPDO::PARAM_INT);
    $result->bindParam(':kunde'$kundePDO::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'$artikelnummerPDO::PARAM_INT);
    $result->bindParam(':kunde'$kundePDO::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'$kundePDO::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();
    ?>

  • #2
    Bitte beachten: Crossposting ist unerwünscht

    Per Datenbankabfrage artikel holen und asugeben - PHP Forum: phpforum.de

    *close*
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      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
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar

      Lädt...
      X