Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Update greift nur bei erster Spalte

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Update greift nur bei erster Spalte

    Hallo,

    ich versuche in meinem update eine 2. spalte upzudaten.
    es wird jedoch immer nur der die 1. spalte upgedatet, die 2. bleibt unverändert.

    ich habe hier im forum und über google schon einige alternative varianten gefunden, ändern tut sich aber nix.

    es wird auch kein fehler ausgegeben wodurch ich nicht sehen kann woran der fehler genau liegt.

    PHP-Code:
        $sql "SELECT Einsatz FROM invest_sys WHERE Datum BETWEEN '2014-09-16' AND '2014-12-10' AND bet_id ='".$_POST['q_update']."'"
                        
    $result mysql_query($sql) OR die(mysql_error());
                        
    $bet 'Einsatz';
                            
        
    $quote $_POST['quote'];
        
    $chance $bet $quote;


        if(isset(
    $_POST['quote_entry'])) {
        
        
    $sql "UPDATE invest_sys SET Quote ='".$_POST['quote']."', Chance = '$chance' WHERE bet_id ='".$_POST['q_update']."'";
        
    $query mysql_query($sql);
        
        echo 
    "Quoten-Update eingetragen";
        
        }else{
            echo 
    "Fehler";

        } 
    mit

    PHP-Code:
    $sql "UPDATE invest_sys SET Quote ='".$_POST['quote']."', Chance = '"$chance"' WHERE bet_id ='".$_POST['q_update']."'"
    auch wenn ich statt dem , ein AND SET verwende ändert sich nix, wenn ich nur AND verwende schreibt er mir überhaupt was falsches in die 1. spalte.

    wenn mir jemand dabei helfen könnte wäre das sehr nett.

    PS: die umstellung auf mysqli/PDO erfolgt nächste woche, bitte keine hinweise mehr darauf. ich weiß es und es wird geändert wenn das formular funktioniert wie es soll und ich damit die daten in die DB eingetragen habe.

    vielen dank,
    mfg


  • #2
    PHP-Code:
        $bet 'Einsatz';
                            
        
    $quote $_POST['quote'];
        
    $chance $bet $quote
    Was steht beim Update-query auf $chance?
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      PHP-Code:
      $sql "UPDATE invest_sys SET Quote ='".$_POST['quote']."', Chance = '"$chance"' WHERE bet_id ='".$_POST['q_update']."'"
      da fehlt jeweils ein . vor und nach dem $chance

      PHP-Code:
      $sql "UPDATE invest_sys SET Quote ='".$_POST['quote']."', Chance = '".$chance."' WHERE bet_id ='".$_POST['q_update']."'"
      Du hast auch ein SQL Injection Problem und gut, das du das mit PDO/mysqli ansprichst: würde ich dringend machen.

      PHP-Code:
          $quote $_POST['quote'];
          
      $chance $bet $quote
      ??? Klär mich auf, was du da erreichen willst und was in $chance steht

      mfg wolf29

      EDIT: zu langsam...
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Code:
        WHERE bet_id ='".$_POST['q_update']."'
        Wieviele Datensätze treffen denn auf diese Bedingung zu?

        PHP-Code:
        $sql "UPDATE invest_sys SET Quote ='".$_POST['quote']."', Chance = '"$chance"' WHERE bet_id ='".$_POST['q_update']."'"
        Hier fehlen die Punkte vor und hinter $chance (= PHP Syntaxfehler)
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          error reporting hochdrehen, query ausgeben lassen, diese prüfen bzw. diese testweise direkt im PMA laufen lassen.

          PHP-Code:
          error_reporting(-1);
          ini_set('display_errors'1);

          // ... 

          $sql = ...
          echo 
          $sql
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            hallo, danke erstmal für die antwort.
            leider verstehe ich die frage nicht bzw. bin mir nicht ganz sicher was du meinst.

            beim update habe ich es mit Chance = '$chance' und Chance = '"$chance"' probiert. beides funktioniert nicht.
            oder meinst du das formular mit dem ich das ['quote_entry'] abschicke?
            ---
            wow, gleich so viele antworten während ich den text schreibe. mom, ich versuche eure antworten umzusetzen...

            Kommentar


            • #7
              PHP-Code:
              .$chance
              das wird hier gemeint...
              Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

              Kommentar


              • #8
                Übrigens, wenn du mit dem ganzen quoting/Hochkommas nicht zusammenkommst, kannst du die query auch so schreiben

                PHP-Code:
                $sql sprintf("UPDATE invest_sys SET Quote='%s', Chance='%s' WHERE bet_id='%s'",
                               
                $_POST['quote'], $chance$_POST['q_update']);
                echo 
                $sql
                Wenn du jedoch (ja, ich erwähne es trotzdem) gleich richtig auf Prepared Statments umsteigst, dann hast du das Problem mit dem quoting der Form erst gar nicht, da dann die query sowieso auch geringfügig anders aussieht, dh du musst nicht jetzt und dann wieder umstellen.

                Daher mach es gleich korrekt, dann hast du einmal jetzt die arbeit und dann ist es richtig und sicher. Du machst dir doppele Arbeit, weil du es jetzt versuchst es hinzubekommen und dann aber wieder anfassen und geringfügig ändern musst, dann gibt es keine Variablen mehr in der query, nicht in der Form.

                Mach dir das mal bewusst, doppelte Arbeit.
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  also das mit den punkten hatte ich zwar vergessen, funktionieren tut es aber trotzdem nicht.

                  mit $chance möchte ich dass er mir das was er aus SELECT abruft mit dem was ich im formular eingetragen habe (was er mir per $_POST['quote'] übergibt) multipliziert und das ganze dann in die Chance spalte in die DB klopft. die quote wird ja auch brav upgedatet, nur die chance möchte ich automatisch ausgerechnet und eingetragen bekommen damit ich das nicht für jeden eintrag händisch in die DB klopfen muss, oder sollte ich das generell anders umsetzen?

                  auf das q_update treffen mit dem Einsatz 5 datensätze zu.
                  ohne sind es logischerweise 4, bei denen funktioniert aber alles, hier der code vom formular:

                  PHP-Code:
                  <select name="q_update"> 
                                  <?php 
                                      $sql 
                  "SELECT bet_id, Datum, Heim, Gast, Einsatz FROM invest_sys WHERE Datum BETWEEN '2014-09-16' AND '2014-12-10'"
                                      
                  $result mysql_query($sql) OR die(mysql_error());
                                      
                  $bet_id $row['bet_id'];
                                      
                  $bet $row['Einsatz'];
                                          while(
                  $row mysql_fetch_assoc($result)) { 
                                      echo 
                  "<option value=" $row['bet_id'] . ">" $row['Datum'] . ' | ' $row['Heim'] . ' : ' $row['Gast'] . "</option>"
                                  } 
                                  
                  ?>
                              </select>
                  ob der einsatz hier schon not notwendig bin ich mir nicht so sicher, aber ich habs zur sicherheit mal reingepackt, funktioniert aber auch nicht.

                  @hausl, auf den error report hab ich nicht vergessen, das schau ich mir jetzt an und versuche daraus "schlau" zu werden aber vor allem habe ich keine ahnung was eine PMA sein soll ???
                  sorry...
                  das mit der doppelten arbeit ist absicht, weil ich auch die alte variante lernen will, ich bin mir nämlich sicher dass ich beim recherchieren im netz immer wieder auf dinge stoße die noch aus sql zeiten sind, deswegen soll die die umstellung von sql auf sqli auch zum lernprozess dazu gehören, auch wenn es mehr arbeit ist, aber dann weiß ich wenigstens wie ich es anders machen muss falls ich mal auf alte sachen stoße. hab mir dabei schon was gedacht.

                  Kommentar


                  • #10
                    habe ich keine ahnung was eine PMA sein soll ???
                    "phpMyAdmin" kennst? Da kann man sich in PHP mit echo zuerst die query ausgeben lassen und die dort mit copy &paste laufen lassen (natürlich auch in anderen Mysql Clients, HeideSQL, Workbench etc..).

                    Dann sieht man schonmal ob die query alleine grundsätzlich "in/auf der Datenbank" sauber läuft und das bringt was man glaubt, oder es da schon kracht. Wenn das Ergebnis dort ok ist ist, dann weiß man das die Ausgabe etc.. noch PHP seitig ein Problem ist.
                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      also der error report gibt mir folgendes an:

                      UPDATE invest_sys SET Quote ='1.90', Chance = '0' WHERE bet_id ='67'

                      das einzige was ich mit der 0 anfange ist dass ich 0 plan hab wo er die her nimmt, mehr wird mir auch nicht ausgegeben ?!?

                      a ok, PMA = php my admin, alles klar... ich probiers mal...

                      Kommentar


                      • #12
                        Zitat von Ratte723 Beitrag anzeigen
                        mit $chance möchte ich dass er mir das was er aus SELECT abruft mit dem was ich im formular eingetragen habe (was er mir per $_POST['quote'] übergibt) multipliziert und das ganze dann in die Chance spalte in die DB klopft. die quote wird ja auch brav upgedatet, nur die chance möchte ich automatisch ausgerechnet und eingetragen bekommen damit ich das nicht für jeden eintrag händisch in die DB klopfen muss, oder sollte ich das generell anders umsetzen?
                        Das Problem ist, das mit dem du die Quote multiplizierst ist keine Zahl, sondern eine Zeichenkette. Jetzt weiß ich nicht was vorher in deiner Tabelle stand, dass sich da nichts verändert, aber der Wert in $chance wird wohl 0 sein. (kommt bei mir zumindest raus)

                        PHP-Code:
                            $bet 'Einsatz'// Fehler
                                                
                            
                        $quote $_POST['quote'];
                            
                        $chance $bet $quote
                        Relax, you're doing fine.
                        RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                        Kommentar


                        • #13
                          du hast recht, in der db, steht bei chance 0,
                          ich lasse mir die zahlen nur mit 2 dezimalstellen auf der seite anzeigen bin ich wohl etwas durcheinander gekommen.

                          ok, also liegt es an $bet = 'Einsatz';
                          aber wie definiere ich es dass er es als zahl erkennt?

                          Kommentar


                          • #14
                            PHP-Code:
                            $bet 'Einsatz'// Fehler 
                                                     
                                
                            $quote $_POST['quote']; 
                                
                            $chance $bet $quote
                            Zitat von Ratte723 Beitrag anzeigen
                            ok, also liegt es an $bet = 'Einsatz';
                            aber wie definiere ich es dass er es als zahl erkennt?
                            Was soll 'Einsatz' denn sein bzw. woher kommt der? Meinst du ev.
                            PHP-Code:
                            $row['Einsatz']; 
                            ?
                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              ok, jetzt funktioniert es

                              PHP-Code:
                              $sql "SELECT Einsatz FROM invest_sys WHERE Datum BETWEEN '2014-09-16' AND '2014-12-10' AND bet_id ='".$_POST['q_update']."'"
                                                  
                              $result mysql_query($sql) OR die(mysql_error());
                                                      while(
                              $row mysql_fetch_assoc($result)) {
                                                          
                              $bet $row['Einsatz'];
                                                      }
                                                      
                                  
                              $quote $_POST['quote'];
                                  
                              $chance $bet $quote;
                                  

                                  if(isset(
                              $_POST['quote_entry'])) {
                                  
                                  
                              $sql "UPDATE invest_sys SET Quote ='".$_POST['quote']."', Chance = '".$chance."' WHERE bet_id ='".$_POST['q_update']."'";
                                  
                              $query mysql_query($sql); 
                              ich dachte die arrays brauche ich nur wenn ich pro spalte mehrere einträge setzen, anzeigen etc. will.

                              auf jeden fall vielen dank euch allen.


                              PS:
                              ich hätte aber noch eine frage die jetzt nicht so dringend ist.

                              wenn ich mir die einsätze auf der seite ausgeben lasse kann ich dann den wert auf der seite auch ändern ohne dass sich der wert in der DB ändert aber ich trotzdem überall das ergebnis angezeigt bekomme mit den werten die ich (quasi) zur anzeige eintrage?

                              also dass standardmäßig die werte aus der DB genommen werden und falls man sich anzeigen lassen will "was wäre wenn einsatz z.b. 3 statt 2 wäre" dass das automatisch berechnet wird ohne die werte in der db anzugreifen?

                              also wenn ich oben ein formular hinbastel bei dem der wert einsatz umgestellt werden kann und dann mit "if" sagen wenn es leer ist zieh dir alles aus der DB "else" nimm das was im feld steht.
                              würde das so funktionieren? bzw. muss ich da etwas spezielles beachten?

                              Kommentar

                              Lädt...
                              X