Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] nach drücken des Button wird falscher wert in der Db geändert

Einklappen

Neue Werbung 2019

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

  • [Erledigt] nach drücken des Button wird falscher wert in der Db geändert

    hi
    Wenn ich auf den Button (btnFeldaktiv) klick, wird immer nur der letze wert in der Db geändert und nicht der wo ausgewählt wurde.
    hier ma der Code
    PHP-Code:
    if(isset($_POST['btnAlleFelder'])and isset($_POST['kunden']) and isset($_POST['monat'])){
        print 
    '<table border="0" align="left">';
        print 
    '<form method="post" action="' $_SERVER['REQUEST_URI'] . '">'
        
    $kunden =& $db->query('SELECT kundenname FROM tbl_kunden WHERE id='.$_POST['kunden'].'');
        
    $kunde $kunden->fetchOne();
        print 
    '<tr>';
        print 
    '<td>';
        print 
    '<h2>';
        print 
    $kunde;
        print 
    '</h2>'
        print 
    '</td>';
        print 
    '</tr>';
        
    $resvorhanden =& $db->query('SELECT id, Fk_Kunde, Fk_Feld, Fk_Monat, aktiv FROM tbl_hatfelder'
        
    .' WHERE Fk_Kunde='.$_POST['kunden'].' and Fk_Monat='.$_POST['monat'].'');
        
    $vorhanden $resvorhanden->fetchRow(MDB2_FETCHMODE_ASSOC);    
        if(
    $vorhanden['fk_monat']!= $_POST['monat'] and $vorhanden['fk_kunde']!= $_POST['kunden']){ 
          while(
    $felder =$resultfelder->fetchRow(MDB2_FETCHMODE_ASSOC)){ 
            
    $db->exec(
              
    'INSERT INTO tbl_hatfelder(Fk_Kunde,Fk_Monat,Fk_Feld, aktiv) VALUES ('
              
    .$_POST['kunden'].','.$_POST['monat'].','.$felder['id'].','.$felder['aktiv'].')'
            
    );
            
    $idvorhanden =& $db->query('SELECT id FROM tbl_hatfelder WHERE Fk_Kunde='.$_POST['kunden'].' ');
            
    $vorhandenid $idvorhanden->fetchRow(MDB2_FETCHMODE_ASSOC);               
            if(
    $felder['aktiv'] !=0){          
              
    // gibt die aktivierten Felder aus, mit deaktivierungbutton 
              
    print '<tr>';          
              print 
    '<td><input type="text" name="txtid" value="' 
                
    $vorhandenid['id']
                . 
    '"><input type="text" name="txtfelder" value="'
                
    htmlspecialchars($felder['feldname'])
                . 
    '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                
    $felder['id']
                . 
    '"><input type="hidden" name="txtaktiv" value="' 
                
    $felder['aktiv']
                . 
    '"></td>';
              print 
    '<td><input type="image" src="img/accept.gif" alt="Aktiv" title="Aktiv" name="btnFeldaktiv" value="Inaktiv'
                
    .'">';
              print 
    '</td>';   
              print 
    '</tr>'
                      
            }else{
              
    // gibt die nicht aktivierten Felder aus mit aktivierungsbutton           
              
    print '<tr>';         
              print 
    '<td><input type="text" name="txtid" value="' 
                
    $vorhandenid['id']
                . 
    '"><input type="text" name="txtfelder" value="'
                
    htmlspecialchars($felder['feldname'])
                . 
    '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                
    $felder['id']
                . 
    '"><input type="hidden" name="txtaktiv" value="' 
                
    $felder['aktiv']
                . 
    '"></td>';
              print 
    '<input type="image" src="img/cancel.gif" alt="Inaktiv" title="Inaktiv" name="btnFeldaktivieren" value="aktiv'
                
    .'"></td>';   
              print 
    '</tr>';          
            }                                  
         }
                    
        }else{
          
    $idvorhanden =& $db->query('SELECT id FROM tbl_hatfelder WHERE Fk_Kunde='.$_POST['kunden'].' ORDER BY id'); 
          while(
    $felder =$resultfelder->fetchRow(MDB2_FETCHMODE_ASSOC)){        
            
    $vorhandenid $idvorhanden->fetchRow(MDB2_FETCHMODE_ASSOC);                            
            if(
    $felder['aktiv'] !=0){ 
              
    // gibt die aktivierten Felder aus, mit deaktivierungbutton 
              
    print '<tr>';          
              print 
    '<td><input type="text" name="txtid" value="' 
                
    $vorhandenid['id']
                . 
    '"><input type="text" name="txtfelder" value="'
                
    htmlspecialchars($felder['feldname'])
                . 
    '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                
    $felder['id']
                . 
    '"><input type="hidden" name="txtaktiv" value="' 
                
    $felder['aktiv']
                . 
    '"></td>';
              print 
    '<td><input type="image" src="img/accept.gif" alt="Aktiv" title="Aktiv" name="btnFeldaktiv" value="Inaktiv'
                
    .'">';
              print 
    '</td>';   
              print 
    '</tr>';
            }else{
              
    // gibt die nicht aktivierten Felder aus mit aktivierungsbutton           
              
    print '<tr>';         
              print 
    '<td><input type="text" name="txtid" value="' 
                
    $vorhandenid['id']
                . 
    '"><input type="text" name="txtfelder" value="'
                
    htmlspecialchars($felder['feldname'])
                . 
    '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                
    $felder['id']
                . 
    '"><input type="hidden" name="txtaktiv" value="' 
                
    $felder['aktiv']
                . 
    '"></td>';
              print 
    '<input type="image" src="img/cancel.gif" alt="Inaktiv" title="Inaktiv" name="btnFeldaktivieren" value="aktiv'
                
    .'"></td>';   
              print 
    '</tr>';          
            }             
          }            
        }
        print 
    '</form>'
        print 
    '</table>';
      }

     if(isset(
    $_POST['btnFeldaktiv'])){
        
       print 
    $_POST['txtfelder'].'-';
       print 
    $_POST['txtfelderid'].'-';
       print 
    $_POST['txtid'];
        
    // deaktiviert ein Feld  
        
    $db->exec('UPDATE tbl_hatfelder SET aktiv = 0 WHERE id = '.$_POST['txtid'].'');                          
      } 
    edit:für jeden Wert wird ein Textfeld ausgegeben und dahinter ein Button. Wenn man auf den Button klickt soll der Wert Aktiv in der Db auf 0 gesetzt werden, für das Feld hinter dem der Button gedrüclt wird . Nur es wird immer nur Der letzte Wert auf 0 gesetzt.


  • #2
    Zitat von pidaman Beitrag anzeigen
    Nur es wird immer nur Der letzte Wert auf 0 gesetzt.
    Natürlich - weil gleich benannte Felder sich in PHP überschreiben, sofern man nicht die Array-Schreibweise nutzt (was dir hier aber auch nichts helfen würde, weil du dann alle Werte bekämst).

    Dein Button hat überhaupt keinen Zusammenhang zum zu ändernden Wert.
    Dass du davor in hidden-Feldern irgendwelche Werte ausgibst, die den Datensatz eindeutig identifizieren sollen(?) ist zwar schön, wirkt sich aber nicht aus - weil dein Button jeweils das komplette Formular abschickt.

    Kommentar


    • #3
      Abhilfe - aus meiner Sicht

      gib dem Button einen Namen, der zu identifizieren ist - und zusätzlich die betreffende ID trägt

      also

      HTML-Code:
      <input type="submit" name="change_1" value="Edit">
      in php
      PHP-Code:
      echo '<input type="submit" name="change_'.$id.'" value="Edit">'
      bei der anschließenden Auswertung der POST-Daten dann
      PHP-Code:
      foreach ($_POST as $key=>$element) {
          if (
      substr($key,0,7)=='change_') {
            
      $postid=intval(substr($key,7));
            ....
      // weiterverarbeiten
            
      break;
          }
          else
             continue;

      wobei du den else-Zweig wohl auch noch einsparen könntest
      "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

      Kommentar


      • #4
        Zitat von eagle275 Beitrag anzeigen
        gib dem Button einen Namen, der zu identifizieren ist - und zusätzlich die betreffende ID trägt
        Das, und dann in einer Schleife zu suchen, welcher Button eigentlich benutzt wurde, ist auch unnötiger Aufwand - es wird immer nur ein Button zum Abschicken benutzt, also kann man den Namen gleich lassen, und die id als value übergeben. (Das funktioniert nur mit normalen Submit-Buttons, nicht mit type=image.)

        Dafür, die zugehörigen Datenfelder zuordnen zu können, muss man diese dann aber auch noch mit der ID o.ä. versehen.

        Alternativ macht man für jeden Datensatz ein eigenes Formular - dann müssen auch nicht die Werte aller anderen für die Katz mitgesendet werden.

        Kommentar


        • #5
          ok danke werd ich probieren

          Kommentar


          • #6
            Zitat "also kann man den Namen gleich lassen, und die id als value übergeben. "

            öhh.,.. Value=" " <- das ist aber die Beschriftung chris ... also das wird nix
            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

            Kommentar


            • #7
              ich hab jetzt jedes in nen einzelnes Forumlar. Nun funktioniert es. Danke nochmal an alle hier noch ma den code^^
              PHP-Code:
              print '<table border="0" align="left">';
                
              // felder nehmen wo aktiv = 1
                
              if(isset($_POST['btnAlleFelder'])and isset($_POST['kunden']) and isset($_POST['monat'])){    
                  
              $kunden =& $db->query('SELECT kundenname FROM tbl_kunden WHERE id='.$_POST['kunden'].'');
                  
              $kunde $kunden->fetchOne();
                  print 
              '<tr>';
                  print 
              '<td>';
                  print 
              '<h2>';
                  print 
              $kunde;
                  print 
              '</h2>'
                  print 
              '</td>';
                  print 
              '</tr>';
                  
              $resvorhanden =& $db->query('SELECT id, Fk_Kunde, Fk_Feld, Fk_Monat, aktiv FROM tbl_hatfelder'
                  
              .' WHERE Fk_Kunde='.$_POST['kunden'].' and Fk_Monat='.$_POST['monat'].'');
                  
              $vorhanden $resvorhanden->fetchRow(MDB2_FETCHMODE_ASSOC);    
                  if(
              $vorhanden['fk_monat']!= $_POST['monat'] and $vorhanden['fk_kunde']!= $_POST['kunden']){ 
                    while(
              $felder =$resultfelder->fetchRow(MDB2_FETCHMODE_ASSOC)){
              //###########################Änderung###############
                     
              print '<form method="post" action="' $_SERVER['REQUEST_URI'
              //#################################################
                     
              '">';  
                      
              $db->exec(
                        
              'INSERT INTO tbl_hatfelder(Fk_Kunde,Fk_Monat,Fk_Feld, aktiv) VALUES ('
                        
              .$_POST['kunden'].','.$_POST['monat'].','.$felder['id'].','.$felder['aktiv'].')'
                      
              );
                      
              $idvorhanden =& $db->query('SELECT id FROM tbl_hatfelder WHERE Fk_Kunde='.$_POST['kunden'].' ');
                      
              $vorhandenid $idvorhanden->fetchRow(MDB2_FETCHMODE_ASSOC);               
                      if(
              $felder['aktiv'] !=0){          
                        
              // gibt die aktivierten Felder aus, mit deaktivierungbutton 
                        
              print '<tr>';          
                        print 
              '<td><input type="text" name="txtid" value="' 
                          
              $vorhandenid['id']
                          . 
              '"><input type="text" name="txtfelder" value="'
                          
              htmlspecialchars($felder['feldname'])
                          . 
              '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                          
              $felder['id']
                          . 
              '"><input type="hidden" name="txtaktiv" value="' 
                          
              $felder['aktiv']
                          . 
              '"></td>';
                        print 
              '<td><input type="image" src="img/accept.gif" alt="Aktiv" title="Aktiv" name="btnFeldaktiv" value="Inaktiv'
                          
              .'">';
                        print 
              '</td>';   
                        print 
              '</tr>'
                                
                      }else{
                        
              // gibt die nicht aktivierten Felder aus mit aktivierungsbutton           
                        
              print '<tr>';         
                        print 
              '<td><input type="text" name="txtid" value="' 
                          
              $vorhandenid['id']
                          . 
              '"><input type="text" name="txtfelder" value="'
                          
              htmlspecialchars($felder['feldname'])
                          . 
              '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                          
              $felder['id']
                          . 
              '"><input type="hidden" name="txtaktiv" value="' 
                          
              $felder['aktiv']
                          . 
              '"></td>';
                        print 
              '<input type="image" src="img/cancel.gif" alt="Inaktiv" title="Inaktiv" name="btnFeldaktivieren" value="aktiv'
                          
              .'"></td>';   
                        print 
              '</tr>';          
                      }
              //##################Änderung#######################
                       
              print '</form>'
              //################################################                                        
                   
              }          
                  }else{
                    
              $idvorhanden =& $db->query('SELECT id FROM tbl_hatfelder WHERE Fk_Kunde='.$_POST['kunden'].' ORDER BY id'); 
                    while(
              $felder =$resultfelder->fetchRow(MDB2_FETCHMODE_ASSOC)){
              //##################Änderung#######################
                      
              print '<form method="post" action="' $_SERVER['REQUEST_URI'] . 
              //################################################
              '">';        
                      
              $vorhandenid $idvorhanden->fetchRow(MDB2_FETCHMODE_ASSOC);                            
                      if(
              $felder['aktiv'] !=0){ 
                        
              // gibt die aktivierten Felder aus, mit deaktivierungbutton 
                        
              print '<tr>';          
                        print 
              '<td><input type="text" name="txtid" value="' 
                          
              $vorhandenid['id']
                          . 
              '"><input type="text" name="txtfelder" value="'
                          
              htmlspecialchars($felder['feldname'])
                          . 
              '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                          
              $felder['id']
                          . 
              '"><input type="hidden" name="txtaktiv" value="' 
                          
              $felder['aktiv']
                          . 
              '"></td>';
                        print 
              '<td><input type="image" src="img/accept.gif" alt="Aktiv" title="Aktiv" name="btnFeldaktiv" value="Inaktiv'
                          
              .'">';
                        print 
              '</td>';   
                        print 
              '</tr>';
                      }else{
                        
              // gibt die nicht aktivierten Felder aus mit aktivierungsbutton           
                        
              print '<tr>';         
                        print 
              '<td><input type="text" name="txtid" value="' 
                          
              $vorhandenid['id']
                          . 
              '"><input type="text" name="txtfelder" value="'
                          
              htmlspecialchars($felder['feldname'])
                          . 
              '" size="20" maxlength="20"><input type="hidden" name="txtfelderid" value="' 
                          
              $felder['id']
                          . 
              '"><input type="hidden" name="txtaktiv" value="' 
                          
              $felder['aktiv']
                          . 
              '"></td>';
                        print 
              '<input type="image" src="img/cancel.gif" alt="Inaktiv" title="Inaktiv" name="btnFeldaktivieren" value="aktiv'
                          
              .'"></td>';   
                        print 
              '</tr>';          
                      }
              //###################Änderung#################
                       
              print '</form>'
              //##########################################             
                    
              }            
                  }       
                }
                print 
              '</table>'

              Änderungen in Kommentar

              Kommentar


              • #8
                Zitat von eagle275 Beitrag anzeigen
                öhh.,.. Value=" " <- das ist aber die Beschriftung chris ... also das wird nix
                Ach stimmt, da hab ich was durcheinander geworfen ...

                Kommentar

                Lädt...
                X