Study-Board.de
  1. Suche
  2. Startseite
  3. Deals
    1. Social Deals
    2. Amazon Deals
    3. Prime Angebote
  4. Forum
    1. Dashboard
    2. Unerledigte Themen
  5. Tippspiel
    1. Rangliste
    2. Tippgemeinschaften
    3. Tipper-Übersicht
    4. Meine Statistik
    5. Hall of Fame
    6. WM-Wertung
  6. Kalender
    1. Anstehende Termine
  7. Galerie
    1. Alben
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Forum
  • Artikel
  • Seiten
  • wcf.search.type.de.flexiblelist.wsc.entry
  • Termine
  • Galerie
  • Erweiterte Suche
  1. Study-Board.de
  2. Forum
  3. Beruf, Weiterbildung & Fernstudium
  4. Einsendeaufgaben

Ils php03a

  • pitware2005
  • 15. Juni 2013 um 11:27
  • Erledigt
  • pitware2005
    Anfänger
    Beiträge
    2
    • 15. Juni 2013 um 11:27
    • #1

    Hallo zusammen,

    ich werde noch wahnsinnig mit dieser Einsendeaufgabe. Habe alle Punkte bis auf 3. der Aufgabe gelöst.

    Kann mir bitte jemand damit helfen?

    Frage:
    Ändern Sie die Klassen "artikel" und "webshop" so ab, dass dei Liste der
    lieferbaren Artikel nicht mehr dem "$artikelArray" entnommen werden,
    sondern direkt per Datenbankabfrage in der Methode "webshop::anzeigen()"
    geholt und ausgegeben wird.

    Hier ist der Code für die "class_artikel":

    PHP
    <?php
    require_once ("class_seite.php");
    
    
    class artikel extends seite
    {
        protected $artikelArray = array();
        private $DB = array('database' => 'xxxxxxxxxxxxxxx', 'user' =>  'xxxxxxxxxxxxxxxxxx', 'password' => 'xxxxxxxxxxxxxxxx');
        protected $dbh; # Database-Handle
    
        public function __construct()
        {
            parent::__construct();
            if(!is_array($this->DB) && empty($this->DB['database']))
                throw new Exeption("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']);
                    $sql = "DELETE FROM `ws_warenkorb` WHERE DATEDIFF(NOW(), `w_timestamp`) >= 14";
                    $result = $this->dbh->query($sql);
                    $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    $sql = "SELECT a_artikelnr, a_datum AS a_konzerttermin,  a_name AS a_veranstaltung, a_menge AS a_kartenvorrat, a_preis 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 $ky => $val)
                        {
                            $name = explode("_", $ky);
                            if ($ky != 'a_artikelnr')
                            $this->artikelArray[$value['a_artikelnr']][$name[1]] = $val;
                        }
                    }
                }
                catch(PDOException $e)
                {
                    echo $e->getMessage();
                }
            }
        }
    
    
        public function anzeigen()
        {
            foreach($this->artikelArray as $key => $value)
            {
                foreach($value as $subKey => $subVal)
                {
                    if ($subKey == "name")
                    {
                        print "<a href=\"".$_SERVER['PHP_SELF']."?id=".$key."\">".$subVal."</a>\n";
                    }
                else
                    print $subVal." Euro\n";
                }
                print "<br />\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";
                                $sth2 = $this->dbh->prepare($sql2);
                                $sth2->execute(array(':kunde' => (int)$kunde, ':artikel' => (int)$value['w_artikelnr']));
                            }
                                $error = true;
                        }
                    }
                }
                catch(PDOException $e)
                {
                    echo $e->getMessage();
                }
            }
            session_destroy();
            return $error;
        }
    }
    ?>
    Alles anzeigen

    Und hier der Code von "class_webshop" siehe Anhang Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. :

    Musste es leider den 2. Code hochladen da er ihn mich nicht posten lies.

    Ich hoffe es kann mir jemand helfen da ich sonst bald aufgebe.

    Vielen Dank schonmal
    pitware2005

    2 Mal editiert, zuletzt von pitware2005 (15. Juni 2013 um 11:40)

  • dont-ask-why
    Anfänger
    Beiträge
    1
    • 8. August 2014 um 16:34
    • #2

    Hieran hängt es bei mir auch, habe schon gelesen, dass wir da nicht die Einzigen sind.
    Wäre echt schön, wenn diejenigen, die den Lehrgang schon abgeschlossen haben hier weiterhelfen könnten.

    Vorab Danke für jeden nützlichen Tipp!!

Nächste Spiele

  • Augsburg - Köln
    27. Februar 2026 27. Februar 2026 um 20:30
  • Leverkusen - Mainz
    28. Februar 2026 28. Februar 2026 um 15:30
  • Bremen - Heidenheim
    28. Februar 2026 28. Februar 2026 um 15:30
  • Gladbach - Union Berlin
    28. Februar 2026 28. Februar 2026 um 15:30
  • Hoffenheim - St. Pauli
    28. Februar 2026 28. Februar 2026 um 15:30

Punkteregeln

  • 4 Exaktes Ergebnis
  • 3 Richtige Tordifferenz
  • 2 Richtige Tendenz
  • 2 Unentschieden erkannt
  • 0 Kein Treffer

UCL

Tippspiel

  • Bundesliga 2025/2026
  • Rangliste
  • Tippgemeinschaften
  • Tipper-Übersicht
  • Hall of Fame

Benutzer online in diesem Thema

  • 1 Besucher
  1. Dealfuchs.info
  2. Impressum
    1. Datenschutzerklärung
    2. Verhaltenskodex
      1. Learn to Post
  3. Mediadaten
  4. Study-Talk.de - Rabatte nicht nur für Studenten
  5. Kontakt
Community-Software: WoltLab Suite™