tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Bratkartoffel
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von Bratkartoffel
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
495
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    Kann man zb im Update-Befehl den Parameter SET rechnen lassen?

    Etwa so:
    PHP-Code:
            mysql_query("UPDATE
                    Tabellenname
                SET
                    Menge=-
    $Anzahl
                Where
                    X='
    $X' AND Y='$Y'"); 
    Oder muss man immer erst eine Datenbankabfrage nach der "Menge" zum rechnen machen?
    Also eine Datenbankabfrage um die Zahl zum rechnen zu holen dann in Variable die Rechnung schreiben und nochmal die Datenbank mit der neuen Variable befüllen?

    Würde mir da gern die Abfrage sparen.
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    ja, MySQL kann rechnen. Deine Anfrage ist fast richtig, nur musst du die Menge zweimal reinschreiben:
    Code sql:
    1
    2
    3
    4
    5
    6
    
                UPDATE
                    Tabellenname
                SET
                    Menge=Menge-$Anzahl
                WHERE
                    X='$X' AND Y='$Y';

    Gruß,
    BK
    Joe bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    Hey vielen Dank. Hatte mich schon mit den X Abfragen abgefunden. Hab mich ehrlich gewundert das dies nicht so einfach möglich war.

    Eigentlich ist das Thema ja abgehakt allerdings folgt daraus ne 2.e Frage. Wenn die Tabelle oder die gesuchte Zeile/Zelle noch jungfräuhlich also leer ist, fange ich das normalerweisse bei einer Abfrage mit:
    if num_rows != 0
    ab. Kann man eine Fehlermeldung seitens SQL bei unseren Bsp. abfangen?
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    mysql_affected_rows()
    Joe bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    direkt "abfangen" kannst es nicht, würde die Abfrage auf alle Fälle einmal wie oben absetzen.
    Danach kannst ja mit mysql_affected_rows() abrufen, wieviele Datensätze verändert wurden. Wenn dies 0 ist, dann kannst ja dein INSERT INTO abfeuern.

    Du könntest das Ganze glaub ich aber auch mit einer Abfrage machen, nur weiß ich jetzt auch nicht ob das so funktioniert. Schau dir hier am Besten mal das hier an.

    @yaslaw: Deine Antworten waren auch schonmal länger

    Gruß
    BK
    Geändert von Bratkartoffel (04.10.10 um 13:42 Uhr) Grund: Rechtschreibung / Grammatik
    Joe bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  6. #6
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    Aha verstehe die Funktion affected_rows fängt sozusagen Fehler ab wenn es keinen Eintrag zu UPDATEn gibt. Wunderbar das spart ne Menge Zugriffe.

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
      $Anzahl=5;
    mysql_query("UPDATE
                        Tabellenname
                        SET
                            Menge=Menge+$Anzahl
                        Where
                            ID='$ID' ");
                IF (mysql_errno()) {        
                    echo mysql_errno() . ": " . mysql_error(). "\n";
                }    
    IF (mysql_affected_rows() == 0) {
    $Anzahl=5;
    mysql_query("INSERT INTO
                        Tabellenname
                            (ID,
                            MENGE)
                        VALUES
                            ('$ID','$Anzahl')");

    Hab da mal nur fiktive namen genommen. Aber funktioniert einwandfrei.

    Yaslaw hat die Angewohnheit mir kurz und knackig zu antworten. Hilft mir aber erstaunlicherweisse immer unheimlich weiter
    Also Danke euche beiden.
     

Ähnliche Themen

  1. Wie kann ich mit Werten aus einem String Array rechnen?
    Von brikler im Forum Java Grundlagen
    Antworten: 9
    Letzter Beitrag: 30.11.09, 12:03
  2. Antworten: 2
    Letzter Beitrag: 15.09.08, 16:49
  3. Mysql Rechnen
    Von ryserstephan im Forum PHP
    Antworten: 0
    Letzter Beitrag: 10.09.07, 15:31
  4. Php Kann nicht Rechnen
    Von buy im Forum PHP
    Antworten: 4
    Letzter Beitrag: 20.01.05, 22:03
  5. js kann nicht rechnen******!?
    Von WhiteWolf im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 04.03.03, 16:48