brauch hilfe für fertigstellung eines scriptes

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

  • brauch hilfe für fertigstellung eines scriptes

    hallo zusammen,

    das hier ist mein script

    PHP Code:
    <?php
    session_start
    ();
    class 
    Car {

        protected 
    $color 'red';
        protected 
    $maximumKM 450;
        protected 
    $restKM 450;
        protected 
    $currentKM 0;
        protected 
    $kmPerDrive 73;

        public function 
    toggleColor() {
            if (
    $this->isRed()) {
                
    $this->color 'blue';
                return;
            }
            
    $this->color 'red';
        }

        private function 
    isRed() {
            return 
    $this->color === 'red';
        }

        public function 
    drive() {
            if (
    $this->restKM $this->kmPerDrive) {
                
    $this->currentKM += $this->kmPerDrive;
                
    $this->restKM -= $this->kmPerDrive;
            }
        }

        public function 
    fillTank() {
            
    $this->restKM 450;
        }

        public function 
    getColor() {
            return 
    $this->color;
        }

        public function 
    getDrivenKM() {
            return 
    $this->currentKM;
        }

        public function 
    getRestKM() {
            return 
    $this->restKM;
        }

    }

    if (isset(
    $_SESSION['car'])) {
        
    $car unserialize($_SESSION['car']);
    } else {
        
    $car = new Car();
    }

    if (isset(
    $_GET['drive'])) {
        
    $car->drive();
        
    $_SESSION['car'] = serialize($car);
    }

    if (isset(
    $_GET['fill'])) {
        
    $car->fillTank();
        
    $_SESSION['car'] = serialize($car);
    }

    if (isset(
    $_GET['toggleColor'])) {
        
    $car->toggleColor();
        
    $_SESSION['car'] = serialize($car);
    }

    ?>


    <html>

        <div style="position:absolute; top:7.1px; right:680px">
          
          <a href="?toggleColor">
            <button>Wechsle die Farbe</button>
          </a>
            <br>
          <a href="?fill">
            <button>auftanken</button>
          </a>
            <br>
          <a href="?drive">
            <button>fahre weiter...</button>
          </a>
            
        </div>

     
      <h3>Übersicht</h3>

      <table border="0">
          <tr>
            <td><h4>Farbe: </h4></td>
            <td><p><?= $car->getColor() ?></p></td>
          </tr>
          <tr>
             <td><h4>Gefahrene KM: </h4></td>
             <td><p><?= $car->getDrivenKM() ?></p></td>
         </tr>
         <tr>
             <td><h4>Restfüllung: </h4></td>
             <td><p><?= $car->getRestKM() ?></p></td>
         </tr>
      </table>

    </html>
    kann mir jemand sagen wie ich jetzt ein bild einfüge und das dann verknüpfe mit dem "wechsle die farbe" button
    sinn ist: das die farbe des autos sich dann ändert; hinterlegt werden sollen 2 bilder (rotes, blaues auto)

    LG
    Last edited by phpfrage; 29-10-2013, 10:18. Reason: übersichtlicher

  • #2
    Entweder ein Link, oder Button.
    Schachteln ist Sinn frei.
    Und Buttons benötigen ein umhüllendes Formular, oder JavaScript, damit der Server überhaupt benachrichtigt wird.

    Beispiel: http://www.php-resource.de/forum/php...tml#post659295


    Wozu werden die Daten serialisiert in $_SESSION gespeichert?
    Sinnfrei!
    Macht die Sessionverwaltung automatisch.
    Wir werden alle sterben

    Comment


    • #3
      danke für dein tipp mit dem button
      aber, könntest du vllt die formel schreiben mit dem button ? wäre nett


      PS: wenn ich "session_start();" lösche dann speichert er bei mir nicht mehr die gefahrenen KM

      LG

      Comment


      • #4
        Du sollst nicht session_start() löschen!
        Sondern das serialize() und unserialize() ersatzlos streichen.

        Auch sollte das session_start() NACH der Klassendefinition erfolgen. Ist in diesem Fall egal, weil in der gleichen Datei, aber vom Prinzip her ist das schon wichtig.

        Und ein Beispiel für ein Formular habe ich dir schon gepostet.
        Wir werden alle sterben

        Comment


        • #5
          Hi phpfrage,

          ich würde das Projekt in mehrere Dateien aufteilen. Das macht die Sache ein bißchen übersichtlicher.

          Datei für die Klasse (a_1my_car_class.php):
          PHP Code:
          <?php
          /*
          * Konstanten für die Bilddateien
          */
          define('REDCAR''red_car.jpg');
          define('BLUECAR''blue_car.jpg');
           class 
          c_car{
           private 
          $current_color;
           private 
          $possible_colors;
           public function 
          __construct(){
            
          $this->current_color "";
            
          $this->possible_colors = array('rot' => REDCAR'blau' => BLUECAR);
           }
           public function 
          set_color($color){
            
          $this->current_color $color;
           }
           public function 
          toggle_color(){
            switch(
          $this->current_color){
            case 
          'rot' $this->current_color 'blau';break;
            case 
          'blau' $this->current_color 'rot';break;
           }
           }
           public function 
          get_color(){
            return 
          $this->current_color;
           }
           public function 
          get_picture_name(){
            return 
          $this->possible_colors[$this->current_color];
           }
          }  
          ?>
          Hier wird das Objekt erzeugt (a_1my_car.php):
          PHP Code:
          <?php
          include("a_1my_car_class.php");
          session_start();
          ?>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <title>Untitled</title>
          </head>
          <body>
          <?php
          if(!isset($_SESSION['my_car'])){
           
          $my_car = new c_car;
           
          $my_car->set_color('rot');
           
          /*
           * Übergabe an die Session
           */
           
          $_SESSION['my_car'] = $my_car;
          }
          if(isset(
          $_SESSION['my_car'])){
           echo 
          '<form action="a_1my_car_toggle.php" method="post">';
           echo 
          '<table border="1" cellpadding="3">';
           echo 
          '<tr>';
           echo 
          '<td>Autofarbe</td><td>'.$_SESSION['my_car']->get_color().'</td><td><input type="submit" name="toggle_color" value="Farbwechel"></td>';
           echo 
          '</tr>';
           echo 
          '</table>';
           echo 
          '</form>';
          }
          ?>
          <!-- Bildausgabe //-->
          <img src="<?php echo $_SESSION['my_car']->get_picture_name(); ?>">
          </body>
          </html>
          Hier werden die Aktionen durchgeführt (a_1my_car_toggle.php):
          PHP Code:
          <?php
          include("a_1my_car_class.php");
          session_start();
          /*
          * Aktion je nach gedrücktem Button durchführen
          */
          if(isset($_POST['toggle_color'])){
           
          $_SESSION['my_car']->toggle_color();
           
          header('location:a_1my_car.php');

          ?>
          Gruß
          Günni

          Comment


          • #6
            wäre jquery nicht die bessere Lösung

            Hallo,
            ich frage mich wieso du php benutzt. Mit jquery geht das viel leichter
            einfach eine css-klasse auf das Bild:

            PHP Code:

            $("#bild").bind('click',function(){
               $(
            this).attr("src","neuesBild.jpg");    
            }); 

            Comment


            • #7
              Originally posted by sanktusm View Post
              Hallo,
              ich frage mich wieso du php benutzt. Mit jquery geht das viel leichter
              einfach eine css-klasse auf das Bild:
              PHP Code:
               $("#bild").bind('click',function(){
                 $(
              this).attr("src","neuesBild.jpg");    
              }); 
              Hi sanktusm,

              wen meinst du, den TO oder mich?

              Dann müsste man ja auch die Sessiovariable mit JQuery ändern (können?).

              Denn wenn ich die Seite verlasse und irgendwann wieder aufrufe, ist das Ursprungsbild ja wieder da.

              Verwende ich PHP und speichere die Daten nach dem "toggeln" in der Sessionvariablen, so ist nach einem
              erneuten Aufruf der Seite immer das Bild da, das beim Verlassen der Seite gezeigt wurde. Vorausgesetzt,

              dass der Browser zwischendurch nicht beendet wurde. Dann ist die Session natürlich futsch.

              Gruß
              Günni

              Comment

              Working...
              X