Avatar billede impulze Nybegynder
29. august 2005 - 16:52 Der er 22 kommentarer og
1 løsning

Update databasen fra en php fil

Håber der er nogle der lige kan hjælpe mig her. Ved ikke hvad jeg skal skrive i action under min form før det virker. Den kommer dog op med en fejl som denne:

"Dine oplysninger er blevet opdateretYou have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"

Den kommer op når man prøver på, at lave en update for den nyhed man vil rette i..

Koden:
<?
if (isset($_POST['update'])) {
include ("config.php");
$overskrift = $_POST['overskrift'];
$forfatter  = $_POST['forfatter'];
$tekst      = $_POST['tekst'];
$id        = $_POST['nyhedsid'];
$query = mysql_query("UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id='$id'") or print mysql_error();
echo "<font color=\"darkgreen\">Dine oplysninger er blevet opdateret";
}
include ("config.php");
$query = mysql_query("SELECT * FROM impulze_nyheder WHERE id=$_GET[nyhedsid]")or die(mysql_error());
$row = mysql_fetch_array($query);
?>
<form method="post" action="?id=nyhed_ret&nyhedsid">
<table width="500" cellpadding="4" cellspacing="0" style="border: 1px solid #AAAAAA">
  <tr>
    <input type="hidden" value="<?= $row['id']; ?>" name="id">
    <td width="500" colspan="2" height="19"><b>Ret nyhed</b></td>
  </tr><tr>
<td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="250" bgcolor="#F3F3F3" align="left" height="19">Overskrift:</td>
    <td width="250" bgcolor="#F3F3F3" align="left" height="19">Skrevet af:</td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="250" height="22">
    <input type="text" name="overskrift" value="<? echo $row['overskrift']; ?>" style="width: 220px" size="20"></td>
    <td width="250" height="22">
    <input type="text" name="forfatter" value="<? echo $row['forfatter']; ?>" style="width: 220px" size="20"></td>
  </tr><tr>
  <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="500" bgcolor="#F3F3F3" align="left" height="19" colspan="2">Tekst:</td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="500" colspan="2"><textarea name="tekst" rows="5" cols="76"><? echo $row['tekst']; ?></textarea></td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
<td width="250" align="left" height="26"><a href="java script: history.back(1)">Tilbage</a></td>
<td width="250" align="right" height="26"><input type="submit" name="update" value="Udfør"></td>
</tr></table>
  </form>
Avatar billede Slettet bruger
29. august 2005 - 18:19 #1
Jeg tror ikke jeg forstår hvorfor du inkluderer config-filen midt i det hele..

Du har vel også brug for den ved de førhenværende sql-kald?
Avatar billede Slettet bruger
29. august 2005 - 18:24 #2
Hov, min fejl. Du har den også øverst. Men jeg tror det kan have noget at gøre med at du har 2 query-variabler som hentes hver sit sted, og det kan den vidst ikke finde ud af. - prøv at lav php-koden således:

<?php
include ("config.php");
if (isset($_POST['update'])) {
    $overskrift = $_POST['overskrift'];
    $forfatter  = $_POST['forfatter'];
    $tekst      = $_POST['tekst'];
    $id        = $_POST['nyhedsid'];

    $query = mysql_query("UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id='$id'") or die(mysql_error());

    echo "<font color=\"darkgreen\">Dine oplysninger er blevet opdateret";
}

$result = mysql_query("SELECT * FROM impulze_nyheder WHERE id=$_GET[nyhedsid]") or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
?>

.. og så skal du huske at slutte den af med en tuborg-klamme nederst.
Avatar billede impulze Nybegynder
30. august 2005 - 23:00 #3
Kommer op med den samme fejl, så er det ikke i selve form under action den er gal, altså med "?id=nyhed_ret&nyhedsid", som jeg spurgte efter til at starte med? :) For ved ikke selv hvad der skal stå når man laver på den måde. Ja ved ikke om du forstår mig.
Avatar billede impulze Nybegynder
02. september 2005 - 18:37 #4
? ? ?
Avatar billede nielle Nybegynder
02. september 2005 - 18:45 #5
I 9 ud af 10 tilfælde så skyldes database-problemer at ens SQL-kommandoer indeholdte noget andet end det man troede. Derfor er det altid et godt trick, i den slags tilfælde, at udskrive SQL'en før at man forsøger at udføre den. Dette kunne f.eks. se sådan her ud:

<?php
include ("config.php");
if (isset($_POST['update']))
{
    $overskrift = $_POST['overskrift'];
    $forfatter = $_POST['forfatter'];
    $tekst = $_POST['tekst'];
    $id = $_POST['nyhedsid'];

    $sql = "UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id='$id'";
    echo "DEBUG: " . $sql . "<br>";
    $query = mysql_query($sql) or die(mysql_error());

    echo "<font color=\"darkgreen\">Dine oplysninger er blevet opdateret";
}

$sql = "SELECT * FROM impulze_nyheder WHERE id=$_GET[nyhedsid]";
echo "DEBUG: " . $sql . "<br>";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
    // ...
?>
Avatar billede nielle Nybegynder
02. september 2005 - 18:48 #6
Hvad andgår din fejl, så vil jeg tro at denne:

$sql = "UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id='$id'";

- skal rettes til:

$sql = "UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id=$id";
Avatar billede impulze Nybegynder
08. september 2005 - 17:35 #7
Hmm okay..
Nu ser koden sådan ud:

<?php
include ("config.php");
if (isset($_POST['update']))
{
    $overskrift = $_POST['overskrift'];
    $forfatter = $_POST['forfatter'];
    $tekst = $_POST['tekst'];
    $id = $_POST['nyhedsid'];

    $sql = "UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id=$id";
    echo "DEBUG: " . $sql . "<br>";
    $query = mysql_query($sql) or die(mysql_error());

    echo "<font color=\"darkgreen\">Dine oplysninger er blevet opdateret";
}

$sql = "SELECT * FROM impulze_nyheder WHERE id=$_GET[nyhedsid]";
echo "DEBUG: " . $sql . "<br>";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
?>
<form method="post" action="?id=nyhed_ret&nyhedsid">
<table width="500" cellpadding="4" cellspacing="0" style="border: 1px solid #AAAAAA">
  <tr>
    <input type="hidden" value="<?= $row['id']; ?>" name="id">
    <td width="500" colspan="2" height="19"><b>Ret nyhed</b></td>
  </tr><tr>
<td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="250" bgcolor="#F3F3F3" align="left" height="19">Overskrift:</td>
    <td width="250" bgcolor="#F3F3F3" align="left" height="19">Skrevet af:</td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="250" height="22">
    <input type="text" name="overskrift" value="<? echo $row['overskrift']; ?>" style="width: 220px" size="20"></td>
    <td width="250" height="22">
    <input type="text" name="forfatter" value="<? echo $row['forfatter']; ?>" style="width: 220px" size="20"></td>
  </tr><tr>
  <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="500" bgcolor="#F3F3F3" align="left" height="19" colspan="2">Tekst:</td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="500" colspan="2"><textarea name="tekst" rows="5" cols="76"><? echo $row['tekst']; ?></textarea></td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
<td width="250" align="left" height="26"><a href="java script: history.back(1)">Tilbage</a></td>
<td width="250" align="right" height="26"><input type="submit" name="update" value="Udfør"></td>
</tr></table>
  </form>
<?
}
?>

Så siger den dette:
"DEBUG: UPDATE impulze_nyheder SET overskrift='Teeeest', forfatter='ImpulzE', tekst='Ja det ser da ud til at lortet virker :D' WHERE id=
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"

Ja du kan evt selv prøve på http://impulze.dk/v4/admin
Avatar billede nielle Nybegynder
08. september 2005 - 22:31 #8
At dømme efter hvad du har stående i din form, skal du rette:

$id = $_POST['nyhedsid'];

- til:

$id = $_POST['id'];
Avatar billede impulze Nybegynder
13. september 2005 - 15:39 #9
Den siger stadig det fejl, men sjovt nok så virker det skam. Så et svar og mange tak for hjælpen :D
Avatar billede nielle Nybegynder
13. september 2005 - 18:41 #10
Skal vi ikke lige tage os af den der fejl først?

Hvad siger fejlmeddelelsen?
Avatar billede impulze Nybegynder
19. september 2005 - 15:23 #11
Jo det kan vi godt, den siger:

DEBUG: UPDATE impulze_nyheder SET overskrift='Det kører', forfatter='ImpulzE', tekst='Eller næsten da?' WHERE id=18
Dine oplysninger er blevet opdateretDEBUG: SELECT * FROM impulze_nyheder WHERE id=
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Avatar billede nielle Nybegynder
19. september 2005 - 17:27 #12
Det er denne her linje som er årsag til fejlen:

$sql = "SELECT * FROM impulze_nyheder WHERE id=$_GET[nyhedsid]";

At dømme efter hvordan resten at dit script ser ud så vil jeg tro at den skal rettes til:

$sql = "SELECT * FROM impulze_nyheder";

- eller:

$sql = "SELECT * FROM impulze_nyheder ORDER BY id DESC";
Avatar billede impulze Nybegynder
24. september 2005 - 16:06 #13
Jep har fået det til at virke, rigtig mange tak :) Kom med et svar, så kan du få dine fortjent point :)
Avatar billede nielle Nybegynder
24. september 2005 - 16:23 #14
Svar :^)
Avatar billede impulze Nybegynder
24. september 2005 - 16:39 #15
nu kommer alle nyhederne under samme side og ikke kun den ene nyhed som før?
Avatar billede nielle Nybegynder
27. september 2005 - 22:26 #16
Hvordan ser din kode da ud? Og hvad var det du ville have?
Avatar billede impulze Nybegynder
29. september 2005 - 18:25 #17
Koden ser sådan ud nu:

<?php
include ("config.php");
if (isset($_POST['update']))
{
    $overskrift = $_POST['overskrift'];
    $forfatter = $_POST['forfatter'];
    $tekst = $_POST['tekst'];
    $id = $_POST['id'];

    $sql = "UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id=$id";
    $query = mysql_query($sql) or die(mysql_error());

    echo "<font color=\"darkgreen\">Dine oplysninger er blevet opdateret";
}
$sql = "SELECT * FROM impulze_nyheder";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
?>

<form method="post" action="?id=nyhed_ret&nyhedsid">
<table width="500" cellpadding="4" cellspacing="0" style="border: 1px solid #AAAAAA">
  <tr>
    <input type="hidden" value="<?= $row['id']; ?>" name="id">
    <td width="500" colspan="2" height="19"><b>Ret nyhed</b></td>
  </tr><tr>
<td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="250" bgcolor="#F3F3F3" align="left" height="19">Overskrift:</td>
    <td width="250" bgcolor="#F3F3F3" align="left" height="19">Skrevet af:</td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="250" height="22">
    <input type="text" name="overskrift" value="<? echo $row['overskrift']; ?>" style="width: 220px" size="20"></td>
    <td width="250" height="22">
    <input type="text" name="forfatter" value="<? echo $row['forfatter']; ?>" style="width: 220px" size="20"></td>
  </tr><tr>
  <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="500" bgcolor="#F3F3F3" align="left" height="19" colspan="2">Tekst:</td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
    <td width="500" colspan="2"><textarea name="tekst" rows="5" cols="76"><? echo $row['tekst']; ?></textarea></td>
  </tr><tr>
    <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
  </tr><tr>
<td width="250" align="left" height="26"><a href="java script: history.back(1)">Tilbage</a></td>
<td width="250" align="right" height="26"><input type="submit" name="update" value="Udfør"></td>
</tr></table>
  </form>
<?
}
?>

Vil gerne have den viser den nyhed man har klikket på, som man vil rette i. Fra den side, som udskriver alle nyhedernes overskrifter som man kan klikke på for at komme vide. Hvis du for står?
Avatar billede nielle Nybegynder
29. september 2005 - 19:03 #18
Hvorfor har du så en while-løkke? Den skal vel ikke være der hvis der kun skal vises en enkelt nyhed på disen?
Avatar billede impulze Nybegynder
29. september 2005 - 20:10 #19
Ellers kommer der jo ikke noget at rette i, at det vil sige at der kommer ikke til at stå noget i felterne hvor man kan rette
Avatar billede impulze Nybegynder
02. oktober 2005 - 12:22 #20
eller hvordan skal jeg ellers lave det? for virker ikke at fjene det.
Avatar billede nielle Nybegynder
02. oktober 2005 - 13:40 #21
Prøv at rette din kode til dette:

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

if (isset($_POST['update']))
{
    $overskrift = $_POST['overskrift'];
    $forfatter = $_POST['forfatter'];
    $tekst = $_POST['tekst'];
    $id = $_POST['id'];

    $sql = "UPDATE impulze_nyheder SET overskrift='$overskrift', forfatter='$forfatter', tekst='$tekst' WHERE id=$id";
    $query = mysql_query($sql) or die(mysql_error());

    echo "<font color=\"darkgreen\">Dine oplysninger er blevet opdateret";
}
else
{
    $id = $_GET["if"];
}

$sql = "SELECT * FROM impulze_nyheder WHERE id=" . $id;
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
?>

<form method="post" action="?id=nyhed_ret&nyhedsid">
    <table width="500" cellpadding="4" cellspacing="0" style="border: 1px solid #AAAAAA">
        <tr>
            <input type="hidden" value="<?= $row['id']; ?>" name="id">
            <td width="500" colspan="2" height="19"><b>Ret nyhed</b></td>
        </tr>
        <tr>
            <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
        </tr>
        <tr>
            <td width="250" bgcolor="#F3F3F3" align="left" height="19">Overskrift:</td>
            <td width="250" bgcolor="#F3F3F3" align="left" height="19">Skrevet af:</td>
        </tr>
        <tr>
            <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
        </tr>
        <tr>
            <td width="250" height="22">
                <input type="text" name="overskrift" value="<? echo $row['overskrift']; ?>" style="width: 220px" size="20">
            </td>
            <td width="250" height="22">
                <input type="text" name="forfatter" value="<? echo $row['forfatter']; ?>" style="width: 220px" size="20">
            </td>
        </tr>
        <tr>
            <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
        </tr>
        <tr>
            <td width="500" bgcolor="#F3F3F3" align="left" height="19" colspan="2">Tekst:</td>
        </tr>
        <tr>
            <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
        </tr>
        <tr>
            <td width="500" colspan="2">
                <textarea name="tekst" rows="5" cols="76"><? echo $row['tekst']; ?></textarea>
            </td>
        </tr>
        <tr>
            <td width="500" colspan="2" bgcolor="#AAAAAA" height="1"></td>
        </tr>
        <tr>
            <td width="250" align="left" height="26">
                <a href="java script: history.back(1)">Tilbage</a>
            </td>
            <td width="250" align="right" height="26">
                <input type="submit" name="update" value="Udfør">
            </td>
        </tr>
    </table>
</form>
Avatar billede impulze Nybegynder
03. oktober 2005 - 19:09 #22
Den skriver:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Avatar billede nielle Nybegynder
04. oktober 2005 - 06:53 #23
Når du får den slags fejl, så er det altid en god ide med en lille hurtig debug-udskrift:

$sql = "SELECT * FROM impulze_nyheder WHERE id=" . $id;
echo "DEBUG: " . $sql . "<br>";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
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