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

  • Cool, trotzdem beachte das mysql_* ab der nächsten PHP Version entfernt wird.
    Steige lieber auf MySQLi um oder am besten direkt auf PDO.

    MfG.

    Juckt mich nicht, bleib ich eben auf der gleichen Version.
    Und es ist eher schwerer für ein Anfänger, wenn er direkt MySQL improved oder PDO lernen muss.

Jetzt mitmachen!

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