Ankündigung

Einklappen
Keine Ankündigung bisher.

Paar Probleme bei Auktionsscript

Einklappen

Neue Werbung 2019

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

  • ghost120
    hat ein Thema erstellt Paar Probleme bei Auktionsscript.

    Paar Probleme bei Auktionsscript

    Hi
    Ich programmiere gerade ein Auktionsscript, ich verwende als Template Klasse "Smarty" und als DB Klasse "ezSql", da ich diese sehr gut finde und die DB Klasse auch sehr gut mit Smarty zusammen arbeitet...
    Nun zu meinen Problemen:

    1. Problem:
    ich hab eine Tabelle für meine Kategorien, diese sind so aufgebaut:
    - cat_id
    - cat_name
    - main_cat_id (wenn hier 0 steht dann ist es eine hauptkategorie und wenn eine zahl drinen steht, dann ist es eine subkategorie und die zahl is die cat_id der Hauptkategorie)

    Und das will will ich richtig auslesen, dass da z.B. steht:
    Hauptkategorie 1
    - Subkategorie
    Hauptkategorie 2
    - Subkategorie
    .
    .

    2. Problem:
    Ich weiß nicht wie ich es machen soll, dass die Auktionen automatisch ablaufen.? Hab natürlich die Startzeit als Timestamp und die Ablaufzeit in Tagen, wenn nötig könnte ich den Timestamp des Ablaufs natürlich auch berechnen... Ich hab schon in mehreren Foren gefragt, doch ich konnte nirgends eine nützliche Antwort bekommen...
    Es gäbe die Möglichkeit bei jedem Aufruf zu prüfen, ob die Ablaufzeit schon überschirtten ist, allerdings will ich, dass man eine E-Mail bekommt, wenn die Auktion abgelaufen ist, außerdem wenn ich jetzt eine Auktion einstelle und die Laufzeit auf 8 Tage stelle, dann soll sie ja in 8 Tagen um die selbe Zeit ablaufen, auch wenn sie keiner aufruft. Versteht ihr was ich meine?
    Ich hoffe mir kann jemand helfen...
    Natürlich erwarte ich keine fertigen Codes, da ja auch nicht jeder die DB Klasse kennt, mir wäre schon geholfen, wenn mir jemand einen Lösungsvorschlag erklärt...
    Danke

  • David
    antwortet
    Ich weise nochmal dezent auf http://www.php.de/php-einsteiger/110....html#post7757 hin

    Einen Kommentar schreiben:


  • keinplanvonnix
    antwortet
    dein Code

    PHP-Code:
        $dauer $ablauf time();
        
    $days floor($dauer 24 60 60 );
        
    $std floor($dauer 3600 $days 24); 
    // gesamtdauer - der minuten für die errechneten std
    // und damit sind hier die minuten, die in den 2 Tagen stecken zuviel
    // also 2 * 24 * 60 = 2880 Minuten zuviel     
    $min floor(($dauer $std 3600)/60); 
        
    $sek $dauer $std 3600 $min 60
    oder vielleicht ist es so verständlicher wenn ich es ausführlicher schreibe

    PHP-Code:
        $dauer $ablauf time();
        
    $days floor($dauer 24 60 60 );
    $restdauer darauf kommst du selbst 
        $std 
    floor($restdauer 3600);
    $restdauer = ..... 
        
    $min floor(($restdauer /60); 
    $restdauer =
        
    $sek $restdauer

    Einen Kommentar schreiben:


  • ghost120
    antwortet
    Versteh ich nicht ganz ^^, kannst du mir vll. ein Bsp. zeigen?
    Danke

    Einen Kommentar schreiben:


  • keinplanvonnix
    antwortet
    OOops sorry, weil die Klammeer falsch ist aber das haste ja gefunden

    Du ziehst bei den Minuten zwar vorher die Stunden von der Dauer ab aber nicht die Stunden, die in $days stecken. Und wenn du das geändert hast wird es bei den Sekunden das gleiche Problem geben, da fehlen dann auch wieder die Minuten, die in den Tagen stecken.

    Einen Kommentar schreiben:


  • ghost120
    antwortet
    Zitat von keinplanvonnix Beitrag anzeigen
    du ziehst also von den 71 gesamtstunden mal schnell 172800 ab? na das muss ja dann wohl negativ werden

    du darfst von den gesamtstunden natürlich nur die stunden der 2 tage abziehen (in deinem fall 2 tage * 24 std = 48 abziehen) oder allgemein gültig

    PHP-Code:
        $days floor($dauer 24 60 60 );
        
    $std floor($dauer - ($days 24) / 3600); 
    da kommt folgendes raus:
    Code:
    2 Tage 256981 Stunden -15414577 Minuten 2 Sekunden
    Bei mir:
    PHP-Code:
    <?php

    function convert_verbleibende_zeit($ablauf)
    {
        
    $dauer $ablauf time();
        
    $days floor($dauer 24 60 60 );
        
    $std floor($dauer 3600 $days 24); 
        
    $min floor(($dauer $std 3600)/60);
        
    $sek $dauer $std 3600 $min 60;  
        
        
    $ausgabe "$days Tage $std Stunden $min Minuten $sek Sekunden";
        return 
    $ausgabe;
    }    

    echo 
    convert_verbleibende_zeit(1210509957);

    ?>
    kommt das raus:
    Code:
    2 Tage 23 Stunden 2901 Minuten 52 Sekunden
    Also sind die Minuten falsch, aber warum?
    Danke

    Einen Kommentar schreiben:


  • keinplanvonnix
    antwortet
    du ziehst also von den 71 gesamtstunden mal schnell 172800 ab? na das muss ja dann wohl negativ werden

    du darfst von den gesamtstunden natürlich nur die stunden der 2 tage abziehen (in deinem fall 2 tage * 24 std = 48 abziehen) oder allgemein gültig

    PHP-Code:
        $days floor($dauer 24 60 60 );
        
    $std floor($dauer - ($days 24) / 3600); 

    Einen Kommentar schreiben:


  • David
    antwortet
    PHP-Code:
    <?php
    function get_timespan($c)
    {
      
    $seconds $c 60;
      
    $c -= $seconds;
      
    $minutes $c 3600;
      
    $c -= $minutes;
      
    $hours $c 86400;
      
    $c -= $hours;
      
      return array(
        
    'days'=>$c/86400,
        
    'hours'=>$hours/3600,
        
    'minutes'=>$minutes/60,
        
    'seconds'=>$seconds
      
    );
    }

    $e strtotime('+11 seconds');
    print_r(get_timespan($e-time()));

    $e strtotime('+17 minutes 11 seconds');
    print_r(get_timespan($e-time()));

    $e strtotime('33 hours 17 minutes 11 seconds');
    print_r(get_timespan($e-time()));

    $e strtotime('+1 week 33 hours 17 minutes 11 seconds');
    print_r(get_timespan($e-time()));
    ?>

    Einen Kommentar schreiben:


  • ghost120
    antwortet
    Hi
    Danke für deine rasche Antwort.
    Ich habs jetzt mal manuell so gemacht:
    PHP-Code:
    $std floor($dauer 3600) - 172800
    Allerdings kommt jetzt bei Stunden eine negative Zahl raus, doch es müsste doch stimmen, denn ich hab 48 Stunden in sekunden umgewandelt und abgezogen...

    //edit: wenn ich -48 eingebe, dann funktioniert es, also muss ich das doch eigtl. nur noch automatisieren, oder?

    Einen Kommentar schreiben:


  • keinplanvonnix
    antwortet
    Zitat von ghost120 Beitrag anzeigen
    PHP-Code:
    <?php
     

    function convert_verbleibende_zeit($ablauf)
    {
        
    $dauer $ablauf time();
        
    $days floor($dauer 24 60 60 );
        
    $std floor($dauer 3600);
        
    $min floor(($dauer $std 3600)/60);
        
    $sek $dauer $std 3600 $min 60;  
        
        
    $ausgabe "$days Tage $std Stunden $min Minuten $sek Sekunden";
        return 
    $ausgabe;
    }    

    echo 
    convert_verbleibende_zeit(1210509957);

    ?>
    vergleiche mal
    $min = floor(($dauer - $std * 3600)/60);
    mit
    $std = floor($dauer / 3600);

    $std ergibt auf jeden fall die gesamtstunden, falls du die tage nicht abziehst

    Einen Kommentar schreiben:


  • ghost120
    antwortet
    Hi
    So melde mich wieder mal ^^ und hoffe das mir jemand helfen kann...
    Ich hab das jetzt in ne Function geschrieben und hab "Tage" hinzugefügt, allerdings hab ich da irgendwo nen Fehler:
    PHP-Code:
    <?php
     

    function convert_verbleibende_zeit($ablauf)
    {
        
    $dauer $ablauf time();
        
    $days floor($dauer 24 60 60 );
        
    $std floor($dauer 3600);
        
    $min floor(($dauer $std 3600)/60);
        
    $sek $dauer $std 3600 $min 60;  
        
        
    $ausgabe "$days Tage $std Stunden $min Minuten $sek Sekunden";
        return 
    $ausgabe;
    }    

    echo 
    convert_verbleibende_zeit(1210509957);

    ?>
    Denn es kommt 2 Tage 71 Stunden... doch wenn es mehr als 24 Stunden sind, sollte es bei $days dazu gerechnet werden.
    Kann mir bitte jemand helfen?
    Danke

    Einen Kommentar schreiben:


  • phpler
    antwortet
    und ich muss mich entschuldigen, dass ich sowas

    http://www.php.de/php-einsteiger/110....html#post7310

    gepostet hatte - war wohl zu spät gestern und hab's auch gelöscht

    Einen Kommentar schreiben:


  • ghost120
    antwortet
    Danke nun funktioniert es
    Danke dass du soviel Geduld hattest und mir das gemacht hast...
    Schönen Tag noch.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    hmm bin wohl noch nich ganz wach, aber ein bisschen mitdenken würde dir auch nicht schaden

    PHP-Code:
    $std floor($dauer 3600);
    $min floor(($dauer $std 3600)/60);
    $sek $dauer $std 3600 $min 60

    Einen Kommentar schreiben:


  • ghost120
    antwortet
    Nun gibt er mir das aus:
    Code:
      375 h 0 m -1327484 s
    Aber das is falsch, da noch deine Zeit drin steht:
    PHP-Code:
    $start "05.05.2008 08:00:00";
    $ende "05.05.2008 14:15:16";

    // Dauer in Sekunden
    $dauer strtotime($ende) - strtotime($start);

    // Dauer zum anzeigen

    $std floor($dauer 60);
    $min floor(($dauer $std 60)/60);
    $sek $dauer $std 3600 $min 60
    Da wären aber nur ca. 6 Stunden unterschied...

    Einen Kommentar schreiben:

Lädt...
X