• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenbank Update

BigSanch

Neues Mitglied
Hi an alle

Ich habe eine Userdatenbank und habe das Problem, welches ich noch nie gehabt habe und ich nicht kenne, dass beim updaten der Daten nicht nur die angegebenen Daten sondern alle ersetzt werden, obwohl nicht alle angegeben wurden.

Folgender Massen ist die Datenabnk 'user' aufgebaut:
Code:
vorname
nachname
geburtstag
strasse
nummer
plz
ort
status
aktiv
email
icq
msn
Folgendermassen mein aktueller Code, wo der User seine Daten ändern kann:

PHP:
<?
if(isset($_POST[registration])){
    include ("db/userdb.php");
    $editid = $_POST["editid"];
    $sqledit = "UPDATE users SET 
        vorname='".$_POST["vn"]."', 
        nachname='".$_POST["nn"]."', 
        strasse='".$_POST["str"]."', 
        nr='".$_POST["nr"]."', 
        plz='".$_POST["plz"]."', 
        ort='".$_POST["ort"]."', 
        geburtstag='".$_POST["geb"]."'
    WHERE (id = '".$editid."')";
    mysql_query($sqledit) or die ("MySQL Error: <b>".mysql_error()."</b>");
    echo "<center>Daten erfolgreich geändert</center>";
    exit;
} else {
    include ("db/userdb.php");
    $adid = $_GET["adid"];
    if (mysql_num_rows ($editresult) > 0){  
        $edit = mysql_fetch_array ($editresult);  
        $id = $edit["id"];
        $nn = $edit["nachname"];
        $vn = $edit["vorname"]; 
        $str = $edit["strasse"];
        $nr = $edit["nr"];
        $plz = $edit["plz"];
        $ort = $edit["ort"]; 
        $geb = $edit["geburtstag"];
    }
    echo ' 
    <form action="edit.php" enctype="multipart/form-data" method="post" id="edituser">
        <input type="hidden" name="registration" value="1" />
        <input type="hidden" name="editid" value="'.$id.'" />
        <fieldset>
            <table style="text-align:right; font-size:12">
                <tr align="left">
                    <td>Vorname*</td>
                    <td><input id="inpsmall" type="text" name="vn" size="30" value="'.$vn.'" /></td>
                    <td>&nbsp;</td>
                    <td>Nachnme*</td>
                    <td><input id="inpsmall" type="text" name="nn" size="30" value="'.$nn.'" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>Strasse*</td>
                    <td><input id="inpsmall" type="text" name="strasse" size="40" value="'.$str.'" /></td>
                    <td>Nr*</td>
                    <td><input id="inpsmall" type="text" name="nr" size="5" value="'.$nr.'" /></td>
                </tr>
                <tr>
                    <td>Ort*</td>
                    <td><input id="inpsmall" type="text" name="ort" size="40" value="'.$ort.'" /></td>
                    <td>Plz*</td>
                    <td><input id="inpsmall" type="text" name="plz" size="5" value="'.$plz.'" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>Geburtstag* (d/m/y)</td>
                    <td colspan="3"><input id="inpsmall" type="text" name="geb" size="4" value="'.$geb.'" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td colspan="3"><input id="button" type="submit" name="submit" value="&auml;ndern" /></td>
                </tr>
            </table>
        </fieldset>
    </form>
    ';
}
?>
Laut der Seite werden nur die Daten

Code:
vorname
nachname
geburtstag
strasse
nummer
plz
ort
geändert, das heisst ja eigentlich, die restlichen Daten bleiben so wie sie in der Datenbank stehen. Aber bei mir werden alle ersetzt, also die die nicht im Formular inbegriffen sind, werden leer geändert.

Ich habe keinen Plan warum und woher das kommt.

Ich hoffe jemand kann mir helfen

MfG BigSanch
 
Also die Ursache der leeren Felden sehe ich grad nicht. Aber: So wie du die Daten in die Datenbank einbindest, ist sehr unsicher und ein SQL-Inject ist ohne Probleme bei dir möglich. Du musst die POST-Dateien erst noch absichern. mysql_real_escape_string , htmlspecialchars etc... z.b.

Vielleicht ist ja in den Post-Daten ein Hochkomma oder ähnliches, die deine Störung verursachen.

Also, versuch mal die Daten, die in die Datenbank sollen, zu "säubern" und umgib die Feldnamen mit ` und schau mal, ob das Problem noch weiterhin besteht.

Mfg
 
Hat sich erledigt, war mein Fehler :-) aber wenn man nur noch am scripten ist, passiert es gern mal, dass man nur noch Hieroglyphen im Kopf hat :-)

Im Original Code, gibt es mehrere Sparten, welche er &action= definiert werden. und ich habe schon eine Sparte mit if(isset($_POST[registration])){...}, und zweimal funtz es halt net :-) und der Code hat natürlich zu einer andren Sparte weitergeleitet, wo alle Daten geändert werden sollen.

Also mal wieder zu schnell gepostet :-)

MfG BigSanch
 
Zurück
Oben