Array auslesen OOP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Array auslesen OOP

    Hallo,

    habe folgendes Problem.

    In meiner Datei cart.php soll mittels Auslesen dieses Arrays folgendes passieren. Erst soll die Anzahl der Tickets berechnet werden, die unter einer bestimmten session_id bestellt wurden. Das funktioniert auch mittels der Methode:
    PHP Code:
    //Anzahl der Tickets der gleichen Session_Id ermitteln 
       
    function getQuantity(){ 
        
       
    $result $this->getCartContent(); 
        
       
    $amount   =   mysql_num_rows$result ); 
        
       return 
    $amount
        
       } 
    Nun soll das in meiner Datei aber folgendermaßen dargestellt werden. Bin total blockiert und weiss irgendwie gar nichts mehr. Könntest mir jemand da vielleicht weiterhelfen und mir das Ganze an einem Beispiel mal zeigen???
    Habe mir das mal so kommentiert, wie ich dachte. dass es funktioniert. Weiss es aber nicht umzusetzen.
    PHP Code:
    <table border="1"> 
      <tr> 
         <td>Ticketgruppe</td> 
         <td>Ticketart</td> 
         <td>Tarif</td> 
       <td>Menge</td> 
       <td>Einzelpreis</td> 
       <td>Gesamtpreis</td> 
       <td></td> 
      </tr> 
      
    <?php 
       $amount 
    $Ticket->getQuantity(); 
       echo 
    $amount
       
    // Für jeden Datensatz muss jeweils eine Tabellenzeile ausgegeben werden 
       
    for ( $i=1$i <= $amount$i++) 
       { 
          
    $record   =   $Ticket->getCartContent(); 
           
    ?> 
      <tr> 
         <td><?$record['ticket_group'];?></td> 
         <td><?$record['ticket_category'];?></td> 
         <td><?$record['ticket_type'];?></td> 
       <td><form name="form" action="<?=$_SERVER['PHP_SELF']; ?>" method="post"> 
            <input type="hidden" name="do" value="update"> 
            <input type="hidden" name="shopid" value="<?php $record['shop_id'];?>"> 
            <input size="5" type="textarea" name="quantity" value="<?php $record['ticket_quantity'];?>"> 
            <input type="submit" value="Ändern" name="submit"> </form>      
       </td> 
       <td><? $record['ticket_quantity'];</td> 
       <td><? $record['ticket_priceprice'];?></td> 
       <td><?$record['ticket_price2'];?></td> 
        
       <td><form name="form2" action="<?=$_SERVER['PHP_SELF']; ?>" method="post"> 
            <input type="hidden" name="do" value="delete"> 
            <input type="submit" value="Löschen" name="submit2"></form></td> 
      </tr> 
      
     <?php 
       

       
    // Ende der Schleife
    Und hier mal meine Methoden, die wahrscheinlich auch nicht korrekt sind zur Umsetzung:
    PHP Code:
    //Warenkorb auslesen 
       
    function getCartContent(){ 
        
       
    $query "SELECT shop_id, 
                            ticket_group, 
                            ticket_category, 
                            ticket_type, 
                            ticket_price, 
                            ticket_price2, 
                            ticket_quantity 
        FROM shop WHERE session_id = '"
    .$_SESSION['id']."'"
        
       return 
    mysql_query($query); 
       } 
        
       
    //Warenkorb darstellen 
       
    function printCartContent(){ 
        
          
    $content $this->getCartContent(); 
           
          
    html ''
          while(
    $row mysql_fetch_array($res)){ 
              
             echo 
    $row['ticket_group']; 
             } 
          } 

  • #2
    wtf tust du da?

    1. $record beinhaltet NUR die resource-id KEINE datensätze
    2. diese id ziehst du zu allem überfluss in einer schleife mehrfach aus der datenbank
    3. wäre eine methode wie du sie mit "printCartContent" angedacht hast geeigneter ... allerdings nicht so!

    wenn man deinen ansatz retten will, solltest du zB so vorgehen:

    1. methode aufrufen, die die query absetzt und die res-id in einer klassenvariablen speichert
    2. methode aufrufen, die dank gespeicherter res-id die anzahl datensätze zurückliefert
    3. methode aufrufen, die in einer while-schleife alle datensätze in ein mehrdimensionales array schreibt und diese zurückgibt

    optimaler wäre es imho jedoch:
    1. eine datenbankklasse zu verwenden, die dir die meiste arbeit abnimmt
    bzw.
    da du mit sessions arbeitest, den warenkorb auch darüber zu verwalten
    2. wenn du schon mit klassen arbeitest, konsequent code vom layout zu trennen => templates
    3. ... usw.
    Kissolino.com

    Comment


    • #3
      Ich weiss, dass es so, wie es im Moment aussieht totaler Blödsinn ist. Aber das ist ja gerade mein Problem. Ich bin am Verzweifeln, weil ich einfach nicht weiss, wie ich das hinbekomme.
      Ticket_group etc. beinhaltet schon Daten, es sind in dieser Methode keine ids.
      Kannst Du mir bitte, wenigstens nal ansatzweise zeigen, wie das funktionieren kann?
      Wäre dir auf ewig dankbar.

      Comment


      • #4
        umbrich bitte den beitrag! danke.
        Die Zeit hat ihre Kinder längst gefressen

        Comment


        • #5
          PHP Code:
              //....
              
          var $res;
              var 
          $num;
              
          // ... 

              
          function getCartContent()
              { 
              
                     
          $query "SELECT shop_id, 
                                  ticket_group, 
                                  ticket_category, 
                                  ticket_type, 
                                  ticket_price, 
                                  ticket_price2, 
                                  ticket_quantity 
                             FROM shop WHERE session_id = '"
          .$_SESSION['id']."'"
           
                  
          $result mysql_query($query);
                  
          $this->num mysql_num_rows($result);
                  
          $this->res = array();
                  while(
          $row=mysql_fetch_assoc($result))
                  {
                      
          $this->res[] = $row;        
                  }
                  return 
          true;
             } 

          // aufrufe:
          $Ticket->getCartContent();
          echo 
          'Anzahl: '.$Ticket->num.'<br>';
          print_r($Ticket->res); 
          machen wir es etwas einfacher und fassen dein zeug zusammen.
          das ist mit sicherheit kein königsweg, sollte dich aber ein schrittchen
          weiter bringen. ausserdem will ich ja nicht deine arbeit machen
          Kissolino.com

          Comment

          Working...
          X