brauch hilfe für fertigstellung eines scriptes

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zuletzt geändert von phpfrage; 29.10.2013, 11:18. Grund: ü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

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #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

          Kommentar


          • #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");    
            }); 

            Kommentar


            • #7
              Zitat von sanktusm Beitrag anzeigen
              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

              Kommentar

              Lädt...
              X