Avatar billede walkie84 Nybegynder
08. februar 2007 - 21:04 Der er 4 kommentarer og
1 løsning

SQL Update problem

Jeg skal opdatere nogle poster i en MySQL db, men når jeg gør det, ændrer den intet i databasen, og jeg kan simpelthent ikke finde fejlen.

Jeg bruger 2 nedenstående filer:


[edit.php]
--------------------------------------------------

...
        <?
        include("database.php");
        $edit_user = mysql_query("SELECT * FROM users WHERE username='$session->username'") or die(mysql_error());
        $e_user = mysql_fetch_array($edit_user);


        ?>
        <form action="edit2.php" method="POST">
        <table align="left" border="0" cellspacing="0" cellpadding="3">
        <tr>
        <td>Email:</td>
        <td><input type="text" name="email" maxlength="50" value="<? echo $e_user[email]; ?>">
        </td>
        </tr>
        <tr>
        <td>Age:</td>
        <td><input type="text" name="age" maxlength="50" value="<? echo $e_user[age]; ?>">
        </td>
        </tr>
        <tr>
        <td>Msn:</td>
        <td><input type="text" name="msn" maxlength="50" value="<? echo $e_user[msn]; ?>">
        </td>
        </tr>
       
        <tr><td colspan="2" align="right">
        <input type="submit" value="Edit Account"></td></tr>
        <tr><td colspan="2" align="left"></td></tr>
        </table>
        </form>
<?
...

--------------------------------------------------

[edit2.php]
--------------------------------------------------

<?php
include("database.php");

mysql_query("UPDATE users SET email = '$email', age = '$age', msn = '$msn' WHERE username = '$usrname'") or die(mysql_error());
?>
Avatar billede mcgoat Nybegynder
08. februar 2007 - 21:09 #1
har du global variables sat til?

hvis ikke skal din edit2.php nok se sådan ud:

<?php
include("database.php");
$email = $_POST['email'];
$age = $_POST['age'];
$msn = $_POST['msn'];


mysql_query("UPDATE users SET email = '$email', age = '$age', msn = '$msn' WHERE username = '$usrname'") or die(mysql_error());
?>

men hvor får du $usrname fra?

og er age en INT i din DB?
Avatar billede walkie84 Nybegynder
09. februar 2007 - 14:43 #2
age er TINYTEXT i min db, og usrname får jeg fra en include, som jeg ikke havde skrevet herinde.
Avatar billede walkie84 Nybegynder
09. februar 2007 - 14:50 #3
har ændret en smule (insat det du skrev, og slettet email update), så det nu ser således ud:

[edit2.php]
-------------------------------------------------
<?php

include("database.php");
include("sessions.php");

$age = $_POST['age'];
$msn = $_POST['msn'];

$updt = mysql_query("SELECT * FROM users WHERE username = '$session->username'") or die(mysql_error());
if (mysql_numrows($updt) < 1)){
    mysql_query("INSERT INTO user (age, msn) VALUES ('$age', '$msn')");
} else {
    mysql_query("UPDATE users SET age = '$age', msn = '$msn' WHERE username = '$session->username'") or die(mysql_error());
}
?>

---------------------------------------------

[edit.php]
---------------------------------------------

[edit.php]
--------------------------------------------------

...
        <?
        include("database.php");
        $edit_user = mysql_query("SELECT * FROM users WHERE username='$session->username'") or die(mysql_error());
        $e_user = mysql_fetch_array($edit_user);


        ?>
        <form action="edit2.php" method="POST">
        <table align="left" border="0" cellspacing="0" cellpadding="3">
        <tr>
        <td>Age:</td>
        <td><input type="text" name="age" maxlength="50" value="<? echo $e_user[age]; ?>">
        </td>
        </tr>
        <tr>
        <td>Msn:</td>
        <td><input type="text" name="msn" maxlength="50" value="<? echo $e_user[msn]; ?>">
        </td>
        </tr>
     
        <tr><td colspan="2" align="right">
        <input type="submit" value="Edit Account"></td></tr>
        <tr><td colspan="2" align="left"></td></tr>
        </table>
        </form>

------------------------------------------

Men når edit2.php bliver loadet, kommer der bare en blank side som om den stopper et sted i koden.. men hvor :P
Avatar billede walkie84 Nybegynder
09. februar 2007 - 14:55 #4
Glemte lige at indsætte username også :P

$updt = mysql_query("SELECT * FROM users_ext WHERE username = '$session->username'") or die(mysql_error());
if (mysql_numrows($updt) < 1)){
    mysql_query("INSERT INTO user_ext (username, age, msn) VALUES ('$session->username', '$age', '$msn')");
} else {
    mysql_query("UPDATE users_ext SET age = '$age', msn = '$msn' WHERE username = '$session->username'") or die(mysql_error());
}


men stadig samme fejl..
Avatar billede walkie84 Nybegynder
11. februar 2007 - 17:44 #5
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester