Avatar billede Slettet bruger
23. juli 2003 - 21:52 Der er 19 kommentarer og
3 løsninger

Fejl ved update af SQL DB

Hej

Jeg har fået problem når jeg skal updater nogle felter i min DB. Mit script se sådan ud:

<?php
    $id = $_REQUEST["id"];
    $overskrift = $_REQUEST["overskrift"];
    $besk = $_REQUEST["besk"];
    $navn = $_REQUEST["navn"];
    $mail = $_REQUEST["mail"];


# Hvis alt ovenstående gik godt, lagres det indtastede data i databasen
$conn = mysql_connect("localhost", "bruger", "password") or die(mysql_error());
mysql_select_db("DB") or die(mysql_error());

mysql_query("update nyheder set overskrift='$overskrift', besk='$besk', navn='$navn', mail='$mail' WHERE id = $'id'"); or die (mysql_error());

?>

Jeg får denne fejl, når jeg kører scriptet:
Parse error: parse error, unexpected T_LOGICAL_OR in /customers/adminzone.dk/adminzone.dk/httpd.www/nyhed/edit_news.php on line 72. dvs vi side at det er denne linje:
mysql_query("update nyheder set overskrift='$overskrift', besk='$besk', navn='$navn', mail='$mail' WHERE id = $'id'"); or die (mysql_error());
Avatar billede ahv Nybegynder
23. juli 2003 - 21:57 #1
mysql_query("update nyheder set overskrift='$overskrift', besk='$besk', navn='$navn', mail='$mail' WHERE id = $'id'") or die (mysql_error());
Avatar billede Slettet bruger
23. juli 2003 - 22:02 #2
Ja, men nu får jeg bare en ny fejl:
You have an error in your SQL syntax near ''id'' at line 1

Hvad skal jeg gør ved det?
Avatar billede Slettet bruger
23. juli 2003 - 22:05 #3
mysql_query("update nyheder set overskrift='$overskrift', besk='$besk', navn='$navn', mail='$mail' WHERE id = '$id'") or die (mysql_error());

Ved at bruge denne får jeg ingen fejl, men den updater ikke dataerne :-(
Hvordan kan det være?
Avatar billede ahv Nybegynder
23. juli 2003 - 22:24 #4
Hvor kommer $id fra?
Avatar billede tipsen Nybegynder
23. juli 2003 - 22:51 #5
mysql_query("update nyheder set overskrift='$overskrift', besk='$besk', navn='$navn', mail='$mail' WHERE id = $id") or die (mysql_error());
Avatar billede Slettet bruger
23. juli 2003 - 23:07 #6
$ID kommer fra en anden side, som henter det fra sql databasen
Avatar billede schaefner Juniormester
23. juli 2003 - 23:09 #7
Er du sikker på at får overført id'et. I den form du benytter på den anden side, prøv at tilføje dette:

<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
Avatar billede Slettet bruger
23. juli 2003 - 23:11 #8
Jeg er 100% for jeg har prøvet at udskrive værdierne med echo "$id"; og så gøre det med alle samme og så bliver alle værdier udskrivet.
Avatar billede tipsen Nybegynder
23. juli 2003 - 23:24 #9
$sql = "update nyheder set overskrift='$overskrift', besk='$besk', navn='$navn', mail='$mail' WHERE id = $id";
$res = mysql_query($sql) or die (mysql_error());
echo "SQL: $sql<br>";
echo "Berørte rækker: " . mysql_affected_rows($res);

-resultat?
Avatar billede Slettet bruger
23. juli 2003 - 23:25 #10
schaefner > Du har ret den får ikke id over. Det var jeg ellers ret sikker på
Avatar billede ahv Nybegynder
23. juli 2003 - 23:29 #11
Hvor er vi sp henne nu Hansen, hvor kommer ID'et fra?
Avatar billede Slettet bruger
23. juli 2003 - 23:36 #12
www.adminzone.dk/nyhed/oversigt.php
så klikker vi på rediger nyhed, så bliver id nr. send via url'en til denne side

<?php
    $id = $_GET['id'];

?>

<html>
<head>
<style type="text/css">
td  {
    font-size: 12px;
    font-family: verdana;
}
form {
    display: inline;
}
input, textarea {
    border: 1px solid black;
    font-size: 12px;
    font-family: verdana;
}
a:link, a:active, a:visited {
    text-decoration: none;
    color: black;
}
a:hover {
    text-decoration: underline;
    color: black;
}
</style>
</head>

<body style="margin: 0px; padding: 0px">

<table cellpadding="2" cellspacing="1" border="0" style="width: 100%; height: 100%">

<tr>
<td style="background-color: #84909C; color: white; font-weight: bold"><u>Menu</u></td>
<td style="width: 100%; background-color: #84909C; color: white; font-weight: bold"></td>
</tr>

<tr>
<td style="height: 100%; background-color: #CDD3DA; font-weight: italic; vertical-align: top">

<!-- Menu start --->
<a href="index.php"><b>Log ud</b></a><br><br>-------------<br><br>
<a href="index_nyhed.php"><b>Index</b></a><br><br>
<a href="add.php"><b>Tilføj nyhed</b></a><br><br>
<a href="last_news.php"><b>Vis sidste nyhed</b></a><br><br>
<a href="oversigt.php"><b><u>Oversigt</u></b></a><br><br>
-------------<br><br>
<a href="setting.php"><b>Indstillinger</b>
<div style="width: 138px">&nbsp;</div>
</td>
<!-- Menu slut -->

<td style="width: 100%; height: 100%; background-color: #CDD3DA; vertical-align: top">

<?php

//Connecter til DB og henter nyheden/nyhederne

$conn = mysql_connect("localhost", "bruger", "passowrd") or die(mysql_error());
mysql_select_db("DB");

$query = mysql_query("SELECT id, overskrift, besk, navn, mail FROM nyheder WHERE id=$id");

while ($row = mysql_fetch_array($query)) {


?>


<!-- Tilføj nyhed start -->
<form method="post" action="edit_news.php">

<table cellpadding="2" cellspacing="5" border="0" width="600" align="left">

<tr>
<td width="90"><b>ID Nummer</b></td>
<td><input type="text" name="overskrift" readonly value="<?php echo $id ?>" style="width: 80px"></td>
</tr>


<tr>
<td width="90"><b>Overskrift:</b></td>
<td><input type="text" name="overskrift" value="<?php echo $row['overskrift'] ?>" style="width: 200px"></td>
</tr>

<tr><td><br><br></td></tr>

<tr>
<td width="90" valign="middle"><b>Tekst:</b></td>
<td><textarea rows="15" name="besk" style="width: 500px"><?php echo $row['besk'] ?></textarea></td>
</tr>


<tr><td><br><br></td></tr>

<tr>
<td width="90" valign="top"><b>Skrivet af:</b></td>
<td><input type="text" name="navn" value="<?php echo $row['navn'] ?>" style="width: 200px"></td>
</tr>

<tr>
<td width="90" valign="top"><b>Mail:</b></td>
<td><input type="text" name="mail" value="<?php echo $row['mail'] ?>" style="width: 200px"></td>
</tr>

<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">

<?php
}
?>

<tr><td><br><br><br><br></td></tr>

<tr>
<td></td>
<td align="center"><input type="submit" name="update" value="Update"></td>
</tr>


</table>


</table>

</form>

<!-- Tilføj nyhed slut -->

</td>
</tr>

<tr>
<td colspan="2" style="background-color: #84909C; color: white; text-align: right; font-weight: bold">Copyright Brian Hansen  @  E-study Network</td>
</tr>

</table>

</body>
</html>

Men så går id "tabt". dvs at det ikke kommer videre til næste side, som er det script vi har rodet med hele tiden
Avatar billede ahv Nybegynder
23. juli 2003 - 23:38 #13
Din update query skal vel så være ->

mysql_query("update nyheder set overskrift='$overskrift', besk='$besk', navn='$navn', mail='$mail' WHERE id = $_POST[id]") or die (mysql_error());
Avatar billede tipsen Nybegynder
23. juli 2003 - 23:53 #14
Det hjælper også med det rigtige navn til formular-feltet.

<tr>
<td width="90"><b>ID Nummer</b></td>
<td><input type="text" name="id" readonly value="<?php echo $id;?>" style="width: 80px"></td>
</tr>
Avatar billede Slettet bruger
23. juli 2003 - 23:56 #15
Ja. det kan du også have ret i. Men nu virker det. Er det ok hvis I hver få 10 point? Eller er det ikke fair?
Avatar billede ahv Nybegynder
23. juli 2003 - 23:57 #16
Det er helt fint.
Avatar billede Slettet bruger
23. juli 2003 - 23:58 #17
SÅ venter vi lige til der bliver smidt nogle svar. Så giver jeg point imorgen tidlig (iden midde) og så er der point til dem med svar
Avatar billede schaefner Juniormester
23. juli 2003 - 23:59 #18
svar
Avatar billede ahv Nybegynder
24. juli 2003 - 00:01 #19
Bare hele exp nu ikke kommer og laver et svar ;o)
Avatar billede tipsen Nybegynder
24. juli 2003 - 00:07 #20
"Ja. det kan du også have ret i. Men nu virker det." - vil det sige at det virkede inden du gav formfeltet det rigtige navn!!??
Avatar billede Slettet bruger
24. juli 2003 - 00:34 #21
Ja. det virkede inden... Lidt skummelt
Avatar billede tipsen Nybegynder
24. juli 2003 - 01:01 #22
Lyder mærkeligt.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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