tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
319
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    barbar2011 barbar2011 ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    1
    Hallo zusammen
    ich bin grad am üben und komme nicht weiter.Und zwar ich habe einen Shop erstellt mit Verbindung zu MySql und alle Artikel werden aus dem $artikelArray entnommen.Jetzt möchte ich auszuprobieren alle lieferbaren Artikel direkt per Datenbankabfrage in der Methode webshop::anzeigen zu holen und sie auszugeben.
    Da komme ich einfach nicht weiter,wo und wie ich anfangen soll.
    Ich habe schon klassen artikel,webshop,kunde,texte etc.erstellt.Und ich weiss das die klassen artikel und webshop veändert werden sollen aber egal wie ich anfange bekomme ich nur Fehlermeldungen.
    Vielleicht habt einen Tipp für mich ,wäre super..
    Danke schon im Vorraus
    class_artikel
    PHP-Code:
    require_once ("class_sitzungsSeite.php");

    class 
    artikel extends sitzungsSeite
    {
      protected 
    $artikelArray = array();
      private 
    $DB = array('database'=>'xxxxxx',
                          
    'user'=>'xxxxx',
                          
    'password'=>'geheim');
      protected 
    $dbh;
      
      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_datum, a_name ,a_menge , a_preis
               FROM ws_artikel
                WHERE a_menge > 0"
    ;
         
    "SELECT a_artikelnr, a_termin, a_name AS_veranstaltung, a_preis, a_menge AS_kartenvorrat" ;
        
    $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;
    }
       }
    artikel    
       
    }
        catch(
    PDOException $e)
        {
          echo 
    $e->getMessage();
        }
    }                                                         
     }
      


      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))
      throw new 
    Exception('Keine Kundennummer');
      else
      {
        try
        {
           
    $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->bindParam(':datum'$value['w_artikelnr']);
                
                  
    $result1->execute();
                  if(
    $result1->rowCount() == 1)
                  {
                   
                    
    $sql2="DELETE FROM ws_warenkorb
                          SELECT DATE_FORMAT ('2011-07-27', '%d');->'14'
                            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;
      }

    class_webshop
    PHP-Code:
    require_once ("class_artikel.php");
      require_once (
    "class_pdf.php");
      require_once (
    "class_kunde.php");
           
      class 
    webshop extends artikel
      
    {
        private 
    $pdf;
        private 
    $kunde;
        
      public function 
    __construct()
        {
        
    parent:: __construct();
          
    $this->pdf = new pdf();
          
    $this->kunde = new kunde($this->dbh);
        }

        
        
        public function 
    auswahl($kunde)
        {
          
    $sql "SELECT a_name, w_menge
                 FROM ws_warenkorb, ws_artikel
                 WHERE w_kunde = 
    $kunde
                 AND w_artikelnr = a_artikelnr"
    ;
          
    $result $this->dbh->query($sql);
          
    $tmp $result->fetchAll(PDO::FETCH_ASSOC);
          if(
    count($tmp) > 0)
          { 
            print 
    "<table>\n";
            print 
    " <tr>\n <th>Artikel</th><th>Anzahl</th>\n
            </tr>\n"
    ;
            foreach(
    $tmp as $key)
            {
              print 
    "<tr>\n";
              print 
    " <td>".$key['a_name'].
                
    "</td><td>".$key['w_menge']."</td>\n";
              print 
    "</tr>\n";
              }
              
                print 
    "</table>\n";
          }
          else
            print 
    "Keine Artikel im Warenkorb gefunden.";
        }
           public function 
    anzeigen() 
          {
            print 
    "<table>\n";
            print
    " <tr>\n <th>Konzerttermin</th> <th>Veranstaltungen</th> \n<th>Kartenvorrat</th>\n <th>Preis</th> \n";
            
             
             
             foreach(
    $this->artikelArray as $key => $value)
              {
                print 
    " </tr>\n";
                 foreach(
    $value as $subKey => $subVal)
                 {
                  if(
    $subKey == "name")
                  print 
    " <td>".$subVal."</td>";
                   elseif(
    $subKey == "menge"
                        print 
    "<td align=\"center\">".$subVal."</td>";
                  elseif (
    $subKey == "preis")
                    print 
    "<td align = \"right\">".$subVal." Euro
                    </td>"
    ;
                    elseif(
    $subKey == "datum")
                      print 
    "<td align =\"center\">".$subVal."</td>"
                      
                        } 
                 print 
    "<td><a href=\"".$_SERVER['PHP_SELF'].
                          
    "?id=".$key."\">In den Warenkorb</a></td>\n";  
                print 
    " </tr>\n";
              }
              print 
    " </table>\n";   
             }
                
            private function 
    setArtikel($daten)
          {
            
    $this->pdf->SetLeftMargin(35);
            
    $this->pdf->Cell(30,5,"Artikelnummer",1,0,'C');
            
    $this->pdf->Cell(60,5,"Artikel",1,0,'C');
            
    $this->pdf->Cell(30,5,"Preis",1,0,'R');
            
    $this->pdf->Cell(30,5,"Menge",1,0,'R');
            foreach (
    $daten as $key =>$value)
            {
              
    $this->pdf->ln();
              
    $this->pdf->Cell(30,5,$key,1,0,'C');
              
    $this->pdf->Cell(60,5,iconv('UTF-8''ISO-8859-15',
                                
    $value['name']),1,0);
              
    $this->pdf->Cell(30,5,$value['preis']." Euro",1,0,'R');
            }
          }
          
          public function 
    pdfliste()
          {
            
    $this->pdf->setTitel("Liste bestellbarer Artikel");
            
    $this->pdf->AliasNbPages();
            
    $this->pdf->AddPage();
            
    $this->pdf->SetFont('Times','',12);
            
    $text="Sehr geehrter Kunde,\n\nvielen Dank,dass Sie sich".
                  
    "für unser Angebot interessieren. Folgende Artikel".
                  
    " können Sie in unserem Shop (http://".
                   
    $_SERVER['HTTP_HOST'].")bestellen.\n";
            
    $this->pdf->setText($text);
            
            
    $this->setArtikel($this->artikelArray);
            
    $text "\n\nVielen Dank für Ihr Interesse.";
            
    $this->pdf->setText($text);
            
    $this->pdf->Output();
            }
            public function 
    setKundenNummer($kennung$passwort)
      {
        
    $this->KndNr 0;
        if(!empty(
    $kennung) && !empty($passwort))
        {
          try
          {
            
    $sql "SELECT k_kundennummer
              FROM ws_kunde
              WHERE k_kennung = :kennung
              AND k_passwort = :passwort"
    ;
            
    $result $this->dbh->prepare($sql);
            
    $result->bindParam(':kennung'$kennung,
            
    PDO::PARAM_STR20);
            
    $result->bindParam(':passwort'$passwort,
            
    PDO::PARAM_STR32);
            
    $result->execute();
            
            
    $tmp $result->fetchAll();
            if(isset(
    $tmp[0]['k_kundennummer']) &&
              !empty(
    $tmp[0]['k_kundennummer']))
            {
              
    $this->KndNr =
              (integer)
    $tmp[0]['k_kundennummer'];
            }
            
    $_SESSION['kunde'] = $this->KndNr;
            return 
    $this->KndNr;
          }
          catch(
    PDOException $e)
          {
            echo 
    $e->getMessage();
          }
        }
      } 
        public function 
    setKundenDaten($daten)
     {
      if(!
    is_array($daten)) return false;
      try
      {
        
    $sql "INSERT INTO ws_kunde (k_name, k_vorname,
        k_plz, k_ort,
              k_strasse, k_email, k_passwort,
              k_kennung)
            VALUES (:name, :vorname,:plz, :ort, :strasse, :email, 
                    :passwort, :kennung)"
    ;
        
    $result $this->dbh->prepare($sql);
        
    $result->bindParam(':name'$daten['name'],
        
    PDO::PARAM_STR30);
        
    $result->bindParam(':vorname'$daten['vorname'],
        
    PDO::PARAM_STR30);
        
    $result->bindParam(':plz'$daten['plz'],
        
    PDO::PARAM_STR6);
        
    $result->bindParam(':ort'$daten['ort'],
        
    PDO::PARAM_STR20);
        
    $result->bindParam(':strasse'$daten['strasse'],
        
    PDO::PARAM_STR30);
        
    $result->bindParam(':email'$daten['email'],
        
    PDO::PARAM_STR30);
        
    $result->bindParam(':passwort'$daten['passwort'],
        
    PDO::PARAM_STR32);
        
    $result->bindParam(':kennung'$daten['kennung'],
        
    PDO::PARAM_STR20);
        
    $result->execute();
        if(
    $result->rowCount() == 1)
        {
          print 
    "Datensatz wurde eingetragen.";
          return 
    true;
        }
        else
          return 
    false;
       } 
        catch(
    PDOException $e)
        {
          echo 
    $e->getMessage();
        }
       } 
        public function 
    getKundenNummer()
        {
            return 
    $this->kunde->getKundenNummer();
        }

     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ein Tipp? Jepp.
    Kopier mal die Fehlermeldungen hierher. Denn Fehlermeldungen sagen normalerweise wo der Fehler liegt. Dann müssen wir nicht alles Zeile für Zeilde von Hand durchgehen.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 03.06.10, 21:14
  2. Ausgabetext vor Datenbankabfrage ausgeben
    Von cm-sebastian im Forum PHP
    Antworten: 11
    Letzter Beitrag: 17.09.06, 14:03
  3. Antworten: 5
    Letzter Beitrag: 21.04.06, 22:06
  4. datenbankabfrage-> ergebnis in neuem fenster ausgeben
    Von redback79 im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 12.06.02, 17:41
  5. Antworten: 2
    Letzter Beitrag: 23.04.02, 15:22

Stichworte