tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
242
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    aegaes aegaes ist offline Grünschnabel
    Registriert seit
    Mar 2005
    Beiträge
    4
    Hi ich habe hier ein Problem mit dem quelltext: und zwar führt der, wenn ich mehrere Eingaben mit + machen will immer nur den letzten SQl-befehl vom Quelltext aus ... würde mich super freuen, wenn mir wer sagt woran das liegt, bzw. mir sagt wie ichs anders machen kann
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    
       <?php
          if(! isset($_POST[abschicken])){
          include ('eintragen.htm');
          exit;
          }
          
          $server         = "localhost";
          $user         = "#####";
          $pass         = "#######";
          $database     = "#####";
          $table           = "artefakte";
          $table2         = "benutzerdaten";
          $id             = "$_POST[id]";
          $anzahl         = "$_POST[anzahl]";
          $kaderium     = "$_POST[kaderium]";
          $nano         = "$_POST[nano]";
          $stasis         = "$_POST[stasis]";
          $nahrung       = "$_POST[nahrung]";
          $prodium       = "$_POST[prodium]";
          $methodeanzahl   = "$_POST[methodeanzahl]";
          $methodekaderium = "$_POST[methodekaderium]";
          $methodenano   = "$_POST[methodenano]";
          $methodestasis   = "$_POST[methodestasis]";
          $methodenahrung  = "$_POST[methodenahrung]";
          $methodeprodium  = "$_POST[methodeprodium]";
         
          $_SESSION["user_id"] = "$id";
          $date    = date("d.m.y u\m H:i:s");
          
          $verbindung = @mysql_connect($server, $user, $pass)
          or die ("Konnte keine Verbindung zur Datenbank herstellen!");
          
          mysql_select_db($database, $verbindung)
          or die ("SQL-Fehler: " . mysql_error());
          
       // Anzahl----------------------------------------------------------------------------------   
       if ($methodeanzahl == 'gleich'){ 
         $sql = "UPDATE $table SET  AID='$id', Anzahl='$anzahl', datum='$date' WHERE AID='$id'";
        $res=mysql_query($sql);
         }
       else if ( $methodeanzahl == 'plus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);
          $anzahlaktuell    = $row['Anzahl'];
          $anzahlanzahl  = $anzahlaktuell + $anzahl;
          $sql = "UPDATE $table SET  AID='$id', Anzahl='$anzahlanzahl', datum='$date' WHERE AID='$id'";   
        $result = mysql_query($sql);   
          }
       else if ( $methodeanzahl == 'minus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);  
          $anzahlaktuell    = $row['Anzahl'];
          $anzahlanzahl  = $anzahlaktuell - $anzahl;
          $sql = "UPDATE $table SET  AID='$id', Anzahl='$anzahlanzahl', datum='$date'  WHERE AID='$id'";       
          }
          
       // Kaderium---------------------------------------------------------------------------------   
       if ($methodekaderium == 'gleich'){
          $sql = "UPDATE $table SET  AID='$id', Kaderium='$kaderium', datum='$date' WHERE AID='$id'";
        $res=mysql_query($sql);
          }
       else if ( $methodekaderium == 'plus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);  
          $kaderiumaktuell    = $row['Kaderium'];
          $kadkad    = $kaderiumaktuell + $kaderium;
          $sql = "UPDATE $table SET  AID='$id', Kaderium='$kadkad', datum='$date'  WHERE AID='$id'";       
          }
       else if ( $methodekaderium == 'minus') {
         $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);
          $kaderiumaktuell  = $row['Kaderium'];
          $kadkad    = $kadaktuell - $kaderium;
          $sql = "UPDATE $table SET  AID='$id', Kaderium='$kadkad', datum='$date'  WHERE AID='$id'";
          }
          
       // Nano --------------------------------------------------------------------------------------   
       if ($methodenano == 'gleich'){
         $sql = "UPDATE $table SET  AID='$id', Nano='$nano', datum='$date' WHERE AID='$id'";
         $res=mysql_query($sql);
          }
       else if ( $methodenano == 'plus'){
         $sql ="SELECT * FROM $table WHERE AID = $id ";
         $result = mysql_query($sql);
         $row = mysql_fetch_array($result);  
           $nanoaktuell   = $row['Nano'];
           $nanonano     = $nanoaktuell + $nano;
          $sql = "UPDATE $table SET  AID='$id', Nano='$nanonano', datum='$date'  WHERE AID='$id'";     
          }
       else if ( $methodenano == 'minus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);
          $nanoaktuell  = $row['Nano'];
          $nanonano  = $nanoaktuell - $nano;
          $sql = "UPDATE $table SET  AID='$id', Nano='$nanonano', 
               datum='$date'  WHERE AID='$id'";
          }
          
       // Stasis ----------------------------------------------------------------------------------   
       if ($methodestasis == 'gleich'){
         $sql = "UPDATE $table SET  AID='$id', Stasis='$stasis', datum='$date' WHERE AID='$id'";
         $res=mysql_query($sql);
          }
       else if ( $methodestasis == 'plus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);  
          $stasisaktuell      = $row['Stasis'];
          $stasisstasis  = $stasisaktuell + $stasis;
          $sql = "UPDATE $table SET  AID='$id', Stasis='$stasisstasis', datum='$date'  WHERE AID='$id'";       
          }
       else if ( $methodestasis == 'minus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);
          $stasisaktuell    = $row['Stasis'];
          $stasisstasis  = $stasisaktuell - $stasis;
          $sql = "UPDATE $table SET  AID='$id', Stasis='$stasisstasis', datum='$date'  WHERE AID='$id'";
          }
        
       // nahrung-----------------------------------------------------------------------------------   
       if ($methodenahrung == 'gleich'){
         $sql = "UPDATE $table SET  AID='$id', Nahrung='$nahrung', datum='$date' WHERE AID='$id'";
         $res=mysql_query($sql);
          }
       else if ( $methodenahrung == 'plus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);  
          $nahrungaktuell     = $row['Nahrung'];
          $nahrungnahrung    = $nahrungaktuell + $nahrung;
     $sql = "UPDATE $table SET AID='$id', Nahrung='$nahrungnahrung', datum='$date' WHERE AID='$id'";     
          }
       else if ( $methodenahrung == 'minus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);
          $nahrungaktuell   = $row['Nahrung'];
          $nahrungnahrung    = $nahrungaktuell - $nahrung;
          $sql = "UPDATE $table SET  AID='$id', Nahrung='$nahrungnahrung', 
               datum='$date'  WHERE AID='$id'";
          }
       
       // prodium ---------------------------------------------------------------------------------   
       if ($methodeprodium == 'gleich'){
         $sql = "UPDATE $table SET  AID='$id', Prodium='$prodium', datum='$date' WHERE AID='$id'";
         $res=mysql_query($sql);
          }
       else if ( $methodeprodium == 'plus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);  
          $prodiumaktuell     = $row['Prodium'];
          $prodiumprodium    = $prodiumaktuell + $prodium;
     $sql = "UPDATE $table SET AID='$id', Prodium='$prodiumprodium', datum='$date' WHERE AID='$id'";     
          }
       else if ( $methodeprodium == 'minus') {
          $sql ="SELECT * FROM $table WHERE AID = $id ";
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);
          $prodiumaktuell   = $row['Prodium'];
          $prodiumprodium    = $prodiumaktuell - $prodium;
          $sql = "UPDATE $table SET  AID='$id', Prodium='$prodiumprodium', datum='$date'  WHERE AID='$id'";
          }
          
          
          if($sql !="")
          mysql_query($sql) 
             or die("SQL-Fehler: " . mysql_error());
                      
                      
         // mysql_free_result($res);
         // mysql_close($verbindung);
        
       ?> 
       
       <!-- <meta http-equiv="Refresh" content="5; URL=index.php"> -->
    Geändert von aegaes (27.11.05 um 19:47 Uhr)
     

  2. #2
    aegaes aegaes ist offline Grünschnabel
    Registriert seit
    Mar 2005
    Beiträge
    4
    Hab den fehler schon selbst gefunden :P

    if($sql !="")
    mysql_query($sql)
    or die("SQL-Fehler: " . mysql_error());

    Das müsste unter jdem update befehl stehen
     

  3. #3
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal Folgendes:
    PHP-Code:
    <?php

        
    if( !isset($_POST['abschicken']) ) {
            include 
    'eintragen.htm';
            exit;
        }

        
    $database 'example';
        
    $table 'example';
        
    $daten = array(
            
    'anzahl'        => $_POST['anzahl'],
            
    'kaderium'      => $_POST['kaderium'],
            
    'nano'          => $_POST['nano'],
            
    'stasis'        => $_POST['stasis'],
            
    'nahrung'       => $_POST['nahrung'],
            
    'prodium'       => $_POST['prodium']
        );
        
    $methoden = array(
            
    'anzahl'        => $_POST['methodeanzahl'],
            
    'kaderium'      => $_POST['methodekaderium'],
            
    'nano'          => $_POST['methodenano'],
            
    'stasis'        => $_POST['methodestasis'],
            
    'nahrung'       => $_POST['methodenahrung'],
            
    'prodium'       => $_POST['methodeprodium']
        );
        
    $_SESSION['user_id'] = $_POST['id'];
        
    $date date('d.m.y \u\m H:i:s');

        
    $verbindung = @mysql_connect()
            or die(
    'Konnte keine Verbindung zur Datenbank herstellen!');

        
    mysql_select_db($database$verbindung)
            or die(
    'SQL-Fehler: '.mysql_error());


        foreach( 
    $methoden as $key => $value ) {
            
    $spalte preg_replace('/^(.)/e''strtoupper("\\1")'strtolower($key));
            switch( 
    $methoden[$key] ) {
                case 
    'plus':
                    
    $zusatz ' `'.$spalte.'` + ';
                break;
                case 
    'minus':
                    
    $zusatz ' `'.$spalte.'` - ';
                break;
                default:
                    
    $zusatz '';
            }
            
    $query sprintf('
                UPDATE
                        `'
    .$table.'`
                  SET
                        `'
    .$spalte.'` = %s "'.mysql_escape_string($daten[$key]).'",
                        `datum`       = "'
    .$date.'"
                  WHERE
                        `AID`         = '
    .intval($_POST['id']).'
                '
    $zusatz);
            echo 
    '<pre>'.$query.'</pre>';
            
    $res mysql_query($query)
                or die(
    'SQL-Fehler: '.mysql_error());
        }

        
    mysql_free_result($res);
        
    mysql_close($verbindung);

    ?>
    Übrigens solltest du Datenbank-, Tabellen-, Index-, Spalten- und Alias-Namen immer kleinschreiben.
     
    Markus Wulftange

  4. #4
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    Zitat Zitat von Gumbo
    Übrigens solltest du Datenbank-, Tabellen-, Index-, Spalten- und Alias-Namen immer kleinschreiben.
    Das ist IMHO Ansichtssache. Ich kann z.B. die "Unterstrich-Syntax" überhaupt nicht leiden und nutze zur Trennung einzelner Wörter lieber Großbuchstaben.

    Viel wichtiger ist jedoch folgendes (was Du ja in dem Code korrigiert hast):
    Fehler beim Ansprechen von Array-Elementen:
    Zitat Zitat von [url=http://www.tutorials.de/forum/showpost.php?p=1104581&postcount=2]Matthias Reitinger[/url]
    Erklärung: Wenn du keine Anführungszeichen verwendest, wird der Teil zwischen den eckigen Klammern als Name einer Konstante ausgewertet. Da eine derartige Konstante aber nur in den seltensten Fällen definiert ist, nimmt der PHP-Parser kulanterweise an, dass der Programmierer eigentlich einen String mit dem Namen der Konstante als Inhalt meinte. Existiert allerdings eine derartige Konstante, kann sie einen komplett anderen Wert enthalten und so zu unerwartetem Verhalten führen. Von daher ist man auf der sicheren Seite, wenn man gleich einen String verwendet – also mit Anführungszeichen arbeitet.
    Gruß hpvw

    PS @Autor des Threads:
    Bitte nutze die richtigen Code Tags, [ php ]code[ /php ] für PHP-Quelltexte, [ html ]code[ /html ] für HTML-Quelltexte und [ code ]code[ /code ] für sonstige Quelltexte, natürlich ohne die Leerzeichen. Das macht die Quelltexte übersichtlicher. Für kurze Code-Teile im Fließtext (z.B. Variablen- oder Funktionsnamen) kannst Du [ mono ]kurzer Code-Fetzen[ /mono ] verwenden.
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das ist IMHO Ansichtssache. Ich kann z.B. die "Unterstrich-Syntax" überhaupt nicht leiden und nutze zur Trennung einzelner Wörter lieber Großbuchstaben.
    Die stringente Kleinschreibung hat jedoch den Vorteil, dass man sich aufgrund MySQLs Beachtung von Klein- und Großschreibung keine zusätzlichen Gedanken machen muss.
     
    Markus Wulftange

  6. #6
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    Ich will auch nicht bestreiten, dass es Vorteile hat und möchte ehrlich gesagt auch keine lange Diskussion anfachen. Mir persönlich gefällt es eben mit Großbuchstaben besser und ich bin so daran gewöhnt, dass ich damit keine Probleme habe. Mich störte nur das "immer".

    Insbesondere bei Aliasnamen würde ich Deinem "immer" widersprechen, da diese auch wunderbar automatisiert ausgelesen und z.B. in einem Template als Spalten-Überschrift verwendet werden können. Wenn die Werte in einem Skript verarbeitet werden, ist es natürlich sinnvoll Bezeichner zu verwenden, die man als Array-Index oder Objekt-Variable verwenden kann.

    Gruß hpvw
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

Ähnliche Themen

  1. Von MySQL, Schleifen und POST-Daten ...
    Von whisp3r im Forum PHP
    Antworten: 3
    Letzter Beitrag: 20.05.08, 21:54
  2. while schleifen prob
    Von Atse87 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 01.08.07, 14:59
  3. Mysql-Klasse Prob
    Von Headymaster im Forum PHP
    Antworten: 15
    Letzter Beitrag: 20.10.06, 17:11
  4. Frage zu Mysql und schleifen.
    Von MaxMara im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.02.06, 11:46
  5. for schleifen prob.
    Von nox im Forum PHP
    Antworten: 4
    Letzter Beitrag: 27.07.02, 20:56