eine if abfrage mit mir nicht ersichtlichen bug ?

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

  • eine if abfrage mit mir nicht ersichtlichen bug ?

    Hallo ich habe einen Userbereich wo der User die Möglichkeit hat sein Prof zu editieren.

    Ich habe 4 Felder

    Nickname
    Nachname
    Vorname und Email

    Wenn einer der Felder editiert wird werden alle anderen auch editiert .
    Ergo ich habe habe mein prof ausgefüllt und will nachträglich nur meinen Nachnamen ändern und ändere diese mit dem Formular und lasse die anderen Felder unberührt. Ich führe das speichern aus.

    Nun hat er es gesavd aber er hat in den Felder wo ich nix geschrieben habe auch editiert ,... irgendwas stimmt an meinem script nicht vllt habt ihr eine idee

    Herzlichen Dank




    PHP-Code:
    <?php
         error_reporting
    (E_ALL);    
        include (
    "checkuser.php");
        include (
    "inc/config.php");
        require 
    'libs/Smarty.class.php';
        
        
       
    // Konfigurationsdatei laden       
       
         
    if(empty($_POST['n-ick'])) 
        {
        
    $sql "UPDATE  
                    benutzerdaten                
                SET                 
                       Nickname = '"
    .$_POST['n-ick']."',
                  WHERE             
                       Id = '"
    .$_SESSION['user_id']."';";
        }
        
        if(empty(
    $_POST['n-achname'])) 
        {
        
    $sql "UPDATE  
                    benutzerdaten                
                SET                 
                    Nachname = '"
    .$_POST['n-achname']."',
                  WHERE             
                       Id = '"
    .$_SESSION['user_id']."';";
        }
        
        if(empty(
    $_POST['v-orname']))
        {
        
    $sql "UPDATE  
                    benutzerdaten                
                SET                 
                Vorname = '"
    .$_POST['v-orname']."',

                  WHERE             
                       Id = '"
    .$_SESSION['user_id']."';";
        }

        if(empty(
    $_POST['e-mail'])) 
        {
        
        
    $sql "UPDATE  
                    benutzerdaten                
                SET                 
                    Email = '"
    .$_POST['e-mail']."'
                  WHERE             
                       Id = '"
    .$_SESSION['user_id']."';";
        }
        

        
    $db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
        
    $db_name =  "test";
        
            
    mysql_select_db$db_name$db_link )
               or die ( 
    "Konnte $db_name nicht öffnen: ".mysql_error() );
           
        
    $sql "UPDATE  
                    benutzerdaten                
                SET                 
                       Nickname = '"
    .$_POST['n-ick']."',
                    Nachname = '"
    .$_POST['n-achname']."',
                    Vorname = '"
    .$_POST['v-orname']."',
                    Email = '"
    .$_POST['e-mail']."'
                  WHERE             
                       Id = '"
    .$_SESSION['user_id']."';";
           
             
    mysql_query($sql) OR die(mysql_error()); 
                        
             echo 
    "Ihre Daten wurde gespeichert\n";            
    ?>

  • #2
    So hatte ich es davor das ging och net *grummel*


    PHP-Code:
    <?php
         error_reporting
    (E_ALL);    
        include (
    "checkuser.php");
        include (
    "inc/config.php");
        require 
    'libs/Smarty.class.php';
        
        
    $db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
        
    $db_name =  "test";      
       
         if(empty(
    $_POST['n-ick']))
        if(empty(
    $_POST['n-achname']))
        if(empty(
    $_POST['v-orname']))
        if(empty(
    $_POST['e-mail']))
        {}
        
        
    $sql "UPDATE  
                    benutzerdaten                
                SET                 
                       Nickname = '"
    .$_POST['n-ick']."',
                    Nachname = '"
    .$_POST['n-achname']."',
                    Vorname = '"
    .$_POST['v-orname']."',
                    Email = '"
    .$_POST['e-mail']."'
                  WHERE             
                       Id = '"
    .$_SESSION['user_id']."';";

        
            
    mysql_select_db$db_name$db_link )
               or die ( 
    "Konnte $db_name nicht öffnen: ".mysql_error() );
            
             
    mysql_query($sql) OR die(mysql_error()); 
                        
             echo 
    "Ihre Daten wurde gespeichert\n";            
    ?>

    Kommentar


    • #3
      1. So Sachen wie v-name solltest du unterlassen und besser v_name schreiben.
      2. Welchen Sinn haben deine ganzen if (empty(....)), wenn du am Schluss doch wieder eine andere Query zusammenbastelst?

      Gruß
      Uwe

      Kommentar


      • #4
        Ohne dein Formular zu kennen, kann keiner sagen weshalb immer alles gespeichert wird.

        Aber nur um mal die Sachlage genauer zu beschreiben:
        z.B. $_POST['n-ick'] wird leer abgespeichert in deiner DB, wenn du dieses Feld nicht anzeigst und demzufolge nicht existiert.

        Entweder du zeigst beim Update alle Felder an und fügst im value Tag ein evtl. bereits vorhandenen Eintrag an oder aber du prüfst zusätzlich zum empty das Vorhandensein des Feldes mit isset.

        Daneben möchte ich anmerken das deine SQL Statements sich auf Minimum Maß wie eines reduzieren lassen. Sofern du das Statement so umbaust, dass nur Felder die existieren zum Anzeigen auch gespeichert werden oder aber immer alle Felder upgedatet werden.

        Sofern nichts dagegen spricht würde ich immer vom Fall "alles was es gibt wird aktualisiert" ausgehen, dass erspart dir viel Abhandlungslogik
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #5
          Sorry Leute ich bastel alles nach Tutorials zusammen bin totaler Anfänger!

          Das mit dem doppelten query bemerke ich jetzt erst gerade!*g*peinlich

          Kann mir jemand zumindest sagen wie dich Stichworte zu meiner Lösung lauten dann kann ich etwas googlen

          php isset *ahh ok* ich versuchsmal

          Kommentar


          • #6
            wie wäre es wenn du zuerst ein
            PHP-Code:
            "SELECT * FROM benutzerdaten WHERE Id = '" $_SESSION['user_id'] . " ' "
            ausfürhren würdest??

            Fülle die Values in deinem Formular mit den Werten aus der Abfrage.

            Danch kannst du dein UPDATE ausführen.
            Die wenigsten Fehltritte begeht man mit den Füssen.

            Kommentar


            • #7
              @1.post

              müssten die ganzen dinger
              if(empty($_POST['n-ick']))
              nicht eher
              if( ! empty($_POST['n-ick']))
              lauten? -.-

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar

              Lädt...
              X