PHP - Bei Aufruf in der Spalte ,,tage'' bei jedem -1 rechnen

  • Hallo,
    für ein kleines Projekt muss ich einen Cronjob erstellen, dieser jeden Tag, einen Tag in der Spalte ,,tage'' abzieht.

    Aktueller Quelltext:

    Spoiler anzeigen


    <?php
    if($days['tage'] > 0){
    $abziehen = mysql_query("UPDATE produkte SET tage = ' ". ($days['tage'] - 1)."'");
    echo"Erfolgreich einen Tag abgezogen!<br>";
    } else{
    $status = mysql_query("UPDATE produkte SET status = '0'");
    echo"Erfolgreich Produkt gestoppt!<br>";
    }
    ?>
    <?php } ?>

    Wen ich jedoch 2 Datensätze habe, werden beide auf die gleiche Tagesanzahl geupdatet.
    Bsp.: Datensatz 1: tage = 5
    Datensatz 2: tage = 2

    Beim Aufruf der Datei:
    Datensatz 1: tage = 4 Datensatz 2: tage = 4

    Woran liegt das?
    Kann man das irgendwie beheben?





    Mit freundlichen Grüßen,DCC

  • Dann frag vorher ab was für Produkte du in der Datenbank hast und mach die selbe Prozedur erneut.
    Nur dieses Mal mit

    SQL
    $abziehen = mysql_query("UPDATE produkte SET tage = ' ". ($days['tage'] - 1)."' WHERE id = ". §produktid . "'");


    ist eigentlich recht einfach wenn man drüber nachdenkt. Du setzt halt mit deiner Query alle Produkte auf den Wert des ersten Eintrags, nicht alle separat.

    Grüße,

  • Dann frag vorher ab was für Produkte du in der Datenbank hast und mach die selbe Prozedur erneut.
    Nur dieses Mal mit

    SQL
    $abziehen = mysql_query("UPDATE produkte SET tage = ' ". ($days['tage'] - 1)."' WHERE id = ". §produktid . "'");


    ist eigentlich recht einfach wenn man drüber nachdenkt. Du setzt halt mit deiner Query alle Produkte auf den Wert des ersten Eintrags, nicht alle separat.

    Grüße,

    Spoiler anzeigen

    <?php
    $query = mysql_query("SELECT * FROM produkte");
    while ($days = mysql_fetch_assoc($query)){
    ?>
    <?php
    if($days['tage'] > 0){
    $abziehen = mysql_query("UPDATE produkte SET tage = ' ". ($days['tage'] - 1)."' WHERE id = ".$days['id']."'");
    echo"Erfolgreich einen Tag abgezogen!<br>";
    } else{
    $status = mysql_query("UPDATE produkte SET status = '0'");
    echo"Erfolgreich Produkt gestoppt!<br>";
    }
    ?><?php } ?>

    Also so?

    Wen ja, es passiert nix:(

    Mit freundlichen Grüßen,
    DCC

  • Versuch es mal damit:

    PHP
    <?php$query = mysql_query("SELECT id, tage FROM produkte") or die(mysql_error());
    while($result = mysql_fetch_array($query)) {	if($result['tage'] > 0) {			 mysql_query("UPDATE produkte SET tage = tage - 1 WHERE id = '".$result['id']."'") or die(mysql_error());	} else {		mysql_query("UPDATE produkte SET status = '0' WHERE id = '".$result['id']."'") or die(mysql_error());		 }}?>


    mfG, Imagician.

  • Versuch es mal damit:

    PHP
    <!--?php$query = mysql_query("SELECT id, tage FROM produkte") or die(mysql_error());
    while($result = mysql_fetch_array($query)) {	if($result['tage'] > 0) {		mysql_query("UPDATE produkte SET tage = '".($result['tage'] - 1)."' WHERE id = '".$result['id']."'") or die(mysql_error());	} else {		mysql_query("UPDATE produkte SET status = '0' WHERE id = '".$result['id']."'") or die(mysql_error());	}}?>


    mfG, Imagician.

    Negativ. Habe die Abfrage komplett abgeändert. Habe aber noch ein kleines Problem und zwar:

    Fehler Code: Notice: Undefined index: more in C:\xampp\htdocs\hosting\erweitern.php on line 8
    Code: $more_id = htmlspecialchars($_GET['more']);

    Ohne ,,$more_id = htmlspecialchars($_GET['more']);'' würde aber blabla.php?more=1 nicht gehen

    Mit freundlichen Grüßen,
    DCC

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!