Avatar billede nbj1 Praktikant
09. september 2007 - 09:04 Der er 31 kommentarer og
1 løsning

update et felt

hvorfor vil dette ikke opdate et felt hvad laver jeg forkert ?

if(isset($_POST['navn'])){

    $navn = $navn['navn'];
}
$query = mysql_query("UPDATE picture SET $navn ='$navn' WHERE $navn=$navn");

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">





<BODY><table bgcolor="#FFFFFF" width="500" align="center">

<tr>

        <td width="120"><b>Name:</b></td>

        <td><input type="text" name="navn" value="<?php echo "$navn"; ?>"></td>
    <td align="center"><input type="submit" value="update" name="navn"></td>

</tr>
.......osv
meningen er at ud for hver felt skal der være en mulighed fr at opdatere sine data.
Avatar billede nielle Nybegynder
09. september 2007 - 09:47 #1
Din kode updater felter der *allerede* hedder det då ønsker at update til. Det var nog ikke det du ville. I stedet skal du have falt på hvad de hedder før ar du forsøger at update - noget i stil med:

if(isset($_POST['navn'])){

    $navn = $navn['navn'];
}
$query = mysql_query("UPDATE picture SET $navn = '$navn' WHERE $navn = '$detGamleNavn'");
Avatar billede nielle Nybegynder
09. september 2007 - 09:49 #2
Flot...

Din kode updater felter der *allerede* hedder det du ønsker at update dem til. Det var nok ikke det du ville. I stedet skal du have felt på hvad de hedder *før* at du forsøger at update - noget i stil med:
Avatar billede nielle Nybegynder
09. september 2007 - 10:05 #3
Og så skal der da ikke $-tegn på databasens feltnavne:

$query = mysql_query("UPDATE picture SET navn = '$navn' WHERE navn = '$detGamleNavn'");
Avatar billede nbj1 Praktikant
09. september 2007 - 10:17 #4
ja kan godt see jeg fik et $ i navn lol hvad mener du med det gamle navn den henter feltet data ind som hedder $navn den skal vel bare overskrives med nyt ?? men min forviring er måske at de begge hedder navn
Avatar billede nbj1 Praktikant
09. september 2007 - 10:20 #5
det som jeg lidt fisker efter er query update skal nok være mere genrelt udformes så der kun kikkes efter if navn opdates opdate hvis email updateres .... ved ikke om det giver mening _
Avatar billede nbj1 Praktikant
09. september 2007 - 10:27 #6
if(isset($_POST['navn'])){

    $navn = $navn['navn'];
$query = mysql_query("UPDATE picture SET navn ='$navn' ")or die (mysql_error());

}
men nu slettes navnet bare....men ellers næste felt
if(isset($_POST['mail'])){

    $mail = $mail['mail'];
$query = mysql_query("UPDATE picture SET mail ='$mail' ")or die (mysql_error());

}
kan man det ?
Avatar billede nielle Nybegynder
09. september 2007 - 10:36 #7
Man bruger UPDATE til at ændre en værdi som allerede fimdes i basen. UPDATE kan primært bruges på to forskellige måder:

1)

UPDATE dinTabel SET navn = 'Hansen' WHERE navn = 'Jensen'

Denne opdatere *alle* dem som hedder Jensen til fremover at hedde Hansen. Pas på med at bruge denne - for det er sjældent det man ønskede.

Ovennævnte form er brugbar i mange tilfælde, men som regel er det kun et bestent individ man ønsker at opdatere, og så er det:

2)

UPDATE dinTabel SET navn = 'Hansen' WHERE id = 42

Denne form ændre navnet på individet med id=42 til fremover at være Hansen.

...

> det som jeg lidt fisker efter er query update skal nok være mere genrelt udformes så der kun kikkes efter if navn opdates opdate hvis email updateres .... ved ikke om det giver mening _

Ikke rigtigt - du har slet ikke noget med email i din viste kode?
Avatar billede nielle Nybegynder
09. september 2007 - 10:37 #8
Dit foreslag:

UPDATE picture SET navn ='$navn'

vil ændre navnet til værdien $navn for *alle* rækkerne i din tabel.
Avatar billede nbj1 Praktikant
09. september 2007 - 10:42 #9
nej ikke endnu men det kommer nå jeg kan få første felt opdateret så er det jo bare at bygge videre...
ok jeg henter felt navn fra database viser det i min form fint nok og jeg har fat i den rette id via session i query select
så selv samme felt skal opdateres
Avatar billede nielle Nybegynder
09. september 2007 - 10:48 #10
Du bør nok bruge dine UPDATE sammen med et $id:

if (isset($_POST['navn'])) {
    $navn = $navn['navn'];
    $query = mysql_query("UPDATE picture SET navn = '$navn' WHERE id = $id") or die (mysql_error());
}

if (isset($_POST['mail'])) {
    $mail = $mail['mail'];
    $query = mysql_query("UPDATE picture SET mail ='$mail' WHERE id = $id") or die (mysql_error());
}

...

UPDATE bruges til at ændre noget som *allerede* findes i basen.

Hvis du skal oprette noget som *ikke* findes i basen, skal du derimod bruge INSERT INTO.
Avatar billede nbj1 Praktikant
09. september 2007 - 11:03 #11
if(isset($_POST['navn'])){

 
$query = mysql_query("UPDATE picture SET navn ='$navn' WHERE user='". $_SESSION['username'] ."'")or die (mysql_error());

}
jeg har prøvet med id og med session jeg for ikke opdateret det felt ????
Avatar billede nielle Nybegynder
09. september 2007 - 11:08 #12
Jeg ved ikke hvad du har gemt i din session, så jeg kan ikke sige noget om din SQL sætning faktisk er korrekt. Prøb at udskrive den først:

$sql = "UPDATE picture SET navn = '$navn' WHERE user = '". $_SESSION['username'] . "'"
echo "DEBUG:L $sql<br>";
$query = mysql_query($sql) or die (mysql_error());

...

Dit id-felt skal være af typen auto increment - så vil det være unikt for hver ny bruger. For en gammel bruger skal du først finde id'et før at du kan begynde at bruge det til at opdatere med.
Avatar billede nbj1 Praktikant
09. september 2007 - 11:18 #13
Update you data: DEBUG:L UPDATE picture SET navn = 'b' WHERE user = 'nbf'
den viser jo fint at jeg har fat i den rette bruger nbf men den sætter bare navnet b til b den opdatere ikke ps din streng var ikke helt rigtig men pyt
Avatar billede nbj1 Praktikant
09. september 2007 - 11:26 #14
<td><input type="text" name="navn" value="<?php echo "$navn"; ?>"></td> < --- her hentes det gamle navn det over skriver jeg med nyt når jeg post ikke ?
    <td align="center"><input type="submit" value="update" name="navn"></td>
Avatar billede nielle Nybegynder
09. september 2007 - 11:29 #15
UPDATE picture SET navn = 'b' WHERE user = 'nbf'

Skal jo netop sætte navnet til 'b' for den række hvor user har værdien 'nbf'. Hvis det ikke var det du øsnkede må du nok heller beskrive problemstillingen noget mere.
Avatar billede nbj1 Praktikant
09. september 2007 - 11:40 #16
ok navnet b hentes fra feltet navn og vises i formen som b nu overskriver jeg feltet med ab så skal database feltet updateres med ab
Avatar billede nielle Nybegynder
09. september 2007 - 11:50 #17
Hvis du vil ændre navnet er du nødt til at have stytr på både det gamle og det nye navn:

<td>
<input type="hidden" name="gammeltNavn" value="<?php echo "$navn"; ?>">
<input type="text" name="nytNavn" value="<?php echo "$navn"; ?>">
</td>


Derefter er det noget i stil med:

$sql = "UPDATE picture SET navn = '" . $_POST["nytNavn"] . "' WHERE navn = '" . $_POST["gammeltNavn"] . "'";
Avatar billede nielle Nybegynder
09. september 2007 - 11:53 #18
Forresten brhøver du ukke "-tegn rundt om en variabel:

<input type="hidden" name="gammeltNavn" value="<?php echo "$navn"; ?>">
<input type="text" name="nytNavn" value="<?php echo "$navn"; ?>">

kunne lige så godt være:

<input type="hidden" name="gammeltNavn" value="<?php echo $navn; ?>">
<input type="text" name="nytNavn" value="<?php echo $navn; ?>">
Avatar billede nbj1 Praktikant
09. september 2007 - 11:58 #19
Update you data: DEBUG:L UPDATE picture SET navn = 'update' WHERE user = 'nbf'
hvis jeg bruger SET navn = '$_post[navn]' fanger den value "update" men den skal fange det jeg skriver grrrr
Avatar billede nielle Nybegynder
09. september 2007 - 12:01 #20
Har du kigget på det jeg har postet i 09/09-2007 11:50:37?
Avatar billede nbj1 Praktikant
09. september 2007 - 12:03 #21
nej er ved at prøve det. tror vi postet samme tid :)
Avatar billede nbj1 Praktikant
09. september 2007 - 12:15 #22
så fandt jeg fejlen, det var  her skulle stå ---> new_name="new_navn"> ellers tager den det gamle :)
<td align="center"><input type="submit" value="update" new_name="new_navn"></td>
så mange tak gi lige et svar for point
Avatar billede nielle Nybegynder
09. september 2007 - 12:20 #23
Svar :^)
Avatar billede nbj1 Praktikant
09. september 2007 - 12:53 #24
kan man lave det så den skriver det nye navn i samme form felt, så man ikke skal ud for at opdatere ellers ved man jo ikke helt om den er opdateret ?
Avatar billede nielle Nybegynder
09. september 2007 - 18:15 #25
Ikke forstået? Formen skal submittes før at der ændres i databasen. Næste gang formen vises er der derfor det nye navn som vises.
Avatar billede nbj1 Praktikant
09. september 2007 - 23:03 #26
ja du har ret, ville bare gerne at den med det samme viste det nye navn, men er så løbet ind i en lidt andet form problem, at den submit man foretager gælder for alle felter i formen og ikke kun det felt som jeg rettede men det skal jeg have kikket på ved lejlighed.
da tanken var at jeg havde en submit udfor hver felt i samme form.
Avatar billede nielle Nybegynder
10. september 2007 - 06:50 #27
Sådan fungere en fom nu en gang, og det kan du ikke lave om på. Hvorfor vil du i øvrigt det - felter som ikke bliver ændret af din bruger får jo ikke nogen ny værdi i basen ´selv om de bliver "UPDATEt".
Avatar billede nbj1 Praktikant
10. september 2007 - 07:29 #28
Nej det er rigtigt nok, men så ville det være smart hvis 1. man viser alle persones data. 2. de data som ikke kan ændres /eller skal kun vises, så typen for en form for låsning for editering.
Avatar billede nbj1 Praktikant
10. september 2007 - 07:30 #29
det kan man eks. i en access database
Avatar billede nielle Nybegynder
10. september 2007 - 08:39 #30
Det kan man også gøre i Access + PHP:

Ideen er at lave en form pr. person - noget i stil med dette:

$sql = "SELECT * FROM picture";
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($query))
{
    $navn = $row["navn"];
?>
<form>
<input type="hidden" name="gammeltNavn" value="<?php echo $navn; ?>">
<input type="text" name="nytNavn" value="<?php echo $navn; ?>">
<input type="submit">
</form>
<?
}
Avatar billede nielle Nybegynder
10. september 2007 - 08:39 #31
MySQL selvfølgelig :^)
Avatar billede nbj1 Praktikant
10. september 2007 - 11:28 #32
oh så i stedet for en form laver man en form for hver felt det var også en mulighed
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