Avatar billede tanzaweb Nybegynder
12. november 2003 - 21:52 Der er 29 kommentarer og
1 løsning

mysql update fejl

hej jeg har følgende problem.

Jeg har lavet en update og på siden går den ind og siger den er udført, men hvis jeg kigger i databasen er det ikke sket.

Jeg bruger følgende kode:

$sql="UPDATE phpSP_users SET
    user='$user',
    password='$password',
    userlevel='$userlevel'
    WHERE primary_key='$id'";

mysql_query($sql) or die(mysql_error());

hvis jeg sætter koden direkte ind i phpmyadmin sådan her

UPDATE phpSP_users SET
    user='bruger 1',
    password='04',
    userlevel='1'
    WHERE primary_key='2';
så opdater den godt nok ????

Jeg har prøvet at udskrive $user, $password, $userlevel, $id fra formen og de bliver skrevet ud på siden så jeg er helt tom for ider lige nu.

Der må være noget jeg har overset
Avatar billede ztyxx Nybegynder
12. november 2003 - 21:55 #1
hvad er koden der skal håndtere det?
Avatar billede ztyxx Nybegynder
12. november 2003 - 21:57 #2
måske du skal globalisere dine variabler,$_POST["user"] osv
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:08 #3
Jeg brugt den i andre sammenhæng, men her er fomularen:

<form action="login_admin.php?sub=update&id=<?php echo $row_1['primary_key'];?>" method="post">
        <td width="300"><b>User Name:</b></td><td><input text="text" name="user" size="35" value="<?php echo $row_1['user']; ?>"></td>
    </tr>
    <tr>
        <td width="300"><b>Password:</b></td><td><input type="text" name="password" size="35" value="<?php echo $row_1['password']; ?>"></td>
    </tr>
    <tr>
        <td width="300"><b>Userlevel:</b><br />
        <font size="-3">The former userlevel is allready selected, if the person should have other
        permissions you should change it else let it be as is.</font>
        </td>
        <td>
        <select name="userlevel">
            <option name="userlevel" value="<?php echo $row_1['userlevel']; ?>" selected>userlevel <?php echo $row_1['userlevel']; ?> selected</option>
            <option value="1" name="userlevel">Level 1 Highest</option>
            <option value="2" name="userlevel">Level 2</option>
            <option value="3" name="userlevel">Level 3</option>
            <option value="4" name="userlevel">Level 4</option>
            <option value="5" name="userlevel">Level 5 Low only few pages</option>
        </select>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input type="submit" name="SubmitNew" value="Update Permissions"></td>
    </tr>
        </form>

Har dog opdaget at den opdatere feltet userlevel, men ikke de andre?
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:17 #4
Opdatere også user, men ikke password eller måske gør den, da jeg kan se hvis jeg skriver @password ud så sender den det der stod i feltet og ikke det jeg havde rettet det til
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:17 #5
$password
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:19 #6
I formen er text=text og type=text der ikke mere da de ikke behøves
Avatar billede ztyxx Nybegynder
12. november 2003 - 22:19 #7
jeg skal se den phpkode der håndterer updaten
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:23 #8
her mend står også øverst php/mysql

$sql="UPDATE phpSP_users SET
    user='$user',
    password='$password',
    userlevel='$userlevel'
    WHERE primary_key='$id'";

mysql_query($sql) or die(mysql_error());
Avatar billede ztyxx Nybegynder
12. november 2003 - 22:26 #9
det kan ikke stå alene, det skal sættes i en sammenhæng f.eks

<?PHP
if(isset($_POST["user"]){
   
    $sql="UPDATE phpSP_users SET
    user='$user',
    password='$password',
    userlevel='$userlevel'
    WHERE primary_key='$id'";

      mysql_query($sql) or die(mysql_error());
}
?>
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:27 #10
<?php if ($sub =='update'){

men den opdatere user og userlevel, bare ikke password nu?
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:29 #11
måske den opdater password, men det ser ud som om at den tager $password stirngen med over fra formen uden at tage den ændring jeg lavede med hvor ved jeg ikke, jeg har stirret mig blind på den nu?
Avatar billede ztyxx Nybegynder
12. november 2003 - 22:32 #12
har du prøvet at udskrive password efter update
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:35 #13
nej, mener du

$sql="UPDATE phpSP_users SET
    user='$user',
    password='$password',
    userlevel='$userlevel'
    WHERE primary_key='$id'";

      mysql_query($sql) or die(mysql_error());
echo $password
ellers har jeg været inde i databasen og kigge den er ikke blevet ændret
Avatar billede ztyxx Nybegynder
12. november 2003 - 22:36 #14
echo $rows_1["password"];
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:43 #15
den skriver det ud som stod i feltet og databasen før, men ikke det jeg vil ændre den til
Avatar billede ztyxx Nybegynder
12. november 2003 - 22:45 #16
hvad er datatypen for feltet password i databasen
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:50 #17
varchar(32)
Avatar billede erikjacobsen Ekspert
12. november 2003 - 22:52 #18
Det er svært at vide uden at se hele din kode. Måske bruger du $password
til noget andet i dit script. Det er en rigtig, rigtig god grund til at
komme med på noderne og gøre som alle de unge og smarte PHP-udviklere:
brug $_POST og $_GET, så bliver det hele let!
Avatar billede tanzaweb Nybegynder
12. november 2003 - 22:56 #19
har jeg brugt tidliger

if (!empty($_POST)) {
extract($_POST);
} else if (!empty($HTTP_POST_VARS)) {
extract($HTTP_POST_VARS);
}
og satte bare denne ind og nu opdatede den også password
Avatar billede erikjacobsen Ekspert
12. november 2003 - 22:57 #20
$sql="UPDATE phpSP_users SET
    user='{$_POST['user']}',
    password='{$_POST['password']}',
    userlevel='{$_POST['userlevel']}'
    WHERE primary_key='{$_GET['id']}'";

...prøv det lige
Avatar billede erikjacobsen Ekspert
12. november 2003 - 22:58 #21
Nu skal jeg slet ikke blande mig i hvad du går og bruger din fritid til,
så hvis det er hyggeprogrammering må du da gøre hvad du vil ;)

Hvis du er på en slags timeløn hos en arbejdsgiver synes jeg det er
utilgiveligt at du ikke vil lære dig de nye og effektive metoder.
Avatar billede tanzaweb Nybegynder
12. november 2003 - 23:10 #22
Er under uddannelse og vi skal bruge asp.net, men jeg har lavet en del i php, har bare ikke så meget tid, og prøver at følge med, har brugt post og get bare ikke på den måde, vi har lært på uni og bruge den jeg skrev før.

Lære så længe man lever!
Avatar billede tanzaweb Nybegynder
12. november 2003 - 23:11 #23
det skulle som jeg har forstået være hvis Globals var off, er det korekt eller?
Avatar billede erikjacobsen Ekspert
12. november 2003 - 23:14 #24
Du skal altid programmere som om globals er off. Det der "hack" du måske
har fået "undervisning" i omkring extract er noget hø. Det skal du glemme alt om.
Avatar billede tanzaweb Nybegynder
12. november 2003 - 23:20 #25
ok det skal jeg huske, tak for hjælpen/vejledningen, vil nogen have points
Avatar billede ztyxx Nybegynder
13. november 2003 - 09:16 #26
det må være eriks point,det var hans løsning du brugte
Avatar billede erikjacobsen Ekspert
13. november 2003 - 09:19 #27
Jeg kan ikke se hvilken løsning der blev brugt.
Avatar billede ztyxx Nybegynder
13. november 2003 - 10:08 #28
erik> næh det har du egentlig ret i, det kan jeg heller ikke lige, han fandt jo en løsning fra en kodestump han selv har brugt tidligere, så må han vel bare beholde dem selv
Avatar billede tanzaweb Nybegynder
13. november 2003 - 10:17 #29
ok det vil jeg så gøre, men tak for hjælpen begge
Avatar billede ztyxx Nybegynder
14. november 2003 - 12:28 #30
du skal lige acceptere dit eget svar også :-)
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