php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.09.2010, 11:07  
Neuer Benutzer
 
Registriert seit: 27.08.2010
Beiträge: 28
PHP-Kenntnisse:
Anfänger
pidaman befindet sich auf einem aufstrebenden Ast
Standard [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.

Geändert von pidaman (03.09.2010 um 11:53 Uhr).
pidaman ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.09.2010, 11:58  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
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.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 03.09.2010, 12:07  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

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
eagle275 ist offline  
Alt 03.09.2010, 12:17  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
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.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 03.09.2010, 12:27  
Neuer Benutzer
 
Registriert seit: 27.08.2010
Beiträge: 28
PHP-Kenntnisse:
Anfänger
pidaman befindet sich auf einem aufstrebenden Ast
Standard

ok danke werd ich probieren
pidaman ist offline  
Alt 03.09.2010, 12:37  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

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
eagle275 ist offline  
Alt 03.09.2010, 13:07  
Neuer Benutzer
 
Registriert seit: 27.08.2010
Beiträge: 28
PHP-Kenntnisse:
Anfänger
pidaman befindet sich auf einem aufstrebenden Ast
Standard

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
pidaman ist offline  
Alt 03.09.2010, 13:41  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
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 ...
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mit Javascript nur bestimmten Teil drucken ts3107 JavaScript, Ajax und mehr 4 11.04.2010 10:48
wert mit button an $_session übergeben pfu PHP Tipps 2010 11 04.03.2010 13:50
[Erledigt] Mit Button auf eine Seite verlinken und GET Wert weitergeben. frustrated HTML, Usability und Barrierefreiheit 4 02.03.2010 17:32
Wert in Spalte dekrementieren durch Button Click markus_munich PHP Tipps 2009 23 30.07.2009 09:11
Zeit abwarten dann Button drücken Veolore PHP Tipps 2009 10 19.02.2009 17:49
Reset Button bei Formularen TeazY PHP Tipps 2008 2 24.12.2007 14:59
wert mit submit button übergeben Matthiasnet PHP Tipps 2007 2 07.04.2007 19:41
Variable wird geändert bei Übergabe an Javascript PHP Tipps 2007 4 17.12.2005 16:53
array verarbeitung (schlag auf den hinterkopf) PHP Tipps 2007 9 16.11.2005 11:37
Button per Schaltfläche drücken HTML, Usability und Barrierefreiheit 10 28.07.2005 22:38
Falscher Wert in der DB PHP Tipps 2005-2 2 18.07.2005 14:41
kleinsten und größten wert ermitteln niffi PHP Tipps 2005 14 26.04.2005 12:42
Ich habe eine Auswahlliste und einen Button. Wie auswerten? PHP Tipps 2004 1 20.10.2004 16:39
[Erledigt] Problem: per klick auf Button Wert erhöhen/verringern HTML, Usability und Barrierefreiheit 7 07.10.2004 08:31
Wie kann man was drucken lassen indem man auf Button klickt? 18inch PHP Tipps 2004 3 13.07.2004 19:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
falscher wert, fk_kunde, php bei button druck wert ändern, td input type image, post wert bei grafik button, falscher wert ?, php falscher submit button bei enter, werte per button in db verändern, input hidden post falscher wert, nach drücken von button php, button drücken php, nsbcode falscher wert, html falscher post wert, recordsaffected falscher wert, fk_monat fk_kunde, php falscher wert, nach dem man auf dem button drückt, flascher wert in in hidden wird weitergegeben, type='image' name übergeben, §post werte mit button

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum