Avatar billede perrep Nybegynder
16. juli 2008 - 13:20 Der er 12 kommentarer og
1 løsning

updatere database gennem php problemer.

hej.
jeg tror jeg har et forholdsvis let spørgsmål.
jeg har lavet et blog system, og der har jeg lavet en EDIT sektion, men jeg kan ikke få databasen til at opdatatere, her er koden:

    <?php
include("config.php");
$blogs = $_POST['blogs'];
if ($blogs) { den ind
  $oskrift = $_POST['oskrift'];
  $id = $_POST['id'];
  mysql_query("UPDATE INTO `blog` VALUES ( '$oskrift', '$blogs', '$id') WHERE id = {$_GET[nr]}", $db);
}
?>

og

<form name="indtast" onsubmit="return" action="lykkes.php" method="post">
<?
$indhold = mysql_query("SELECT * FROM blog WHERE id = {$_GET[nr]}", $db);
while ($data = mysql_fetch_row($indhold)) {
echo "
<input type='text' name='id' value='$data[0]'>
<input type='text' name='oskrift' value='$data[1]'>
<textarea id='elm1' name='blogs' rows='15' cols='80' style='width: 80%'>";
echo "$data[2]   
</textarea>
<input type='submit' value='Tilføj post'>";
}
?>

når jeg gør det her, giver den bare den et nyt id, og opdatere den ikke. jeg kunne ligeså godt skrive INSERT. hvad er det jeg gør galt? id er selvfølgelig på auto_increament.
jeg er meget grøn på området, så bær over med mig :D
Avatar billede w13 Novice
16. juli 2008 - 13:23 #1
Ret:
mysql_query("UPDATE INTO `blog` VALUES ( '$oskrift', '$blogs', '$id') WHERE id = {$_GET[nr]}", $db);
til:
mysql_query("UPDATE `blog` SET `overskrift` = '$oskrift', `blogs` = '$blogs', `id` = '$id') WHERE id = $_GET[nr]", $db);

Så skal du bare lige rette "overskrift", "blogs" og "id" til de korrekte feltnavne.
Avatar billede perrep Nybegynder
16. juli 2008 - 13:33 #2
hmm kan ikke få det til at virke:
<?php
include("config.php"); //inkludere config filen som har alle oplysninger som har alle informationer der skal til for at forbinde til serveren
$blogs = $_POST['blogs']; //siger at $blogs er det samme som blogs
if ($blogs) { //hvis bloggen så er det samme, så kan man sætte den ind
  $oskrift = $_POST['oskrift'];
  $id = $_POST['id'];
    $time = $_POST['time'];
  mysql_query("UPDATE `blog` SET `overskrift` = '$oskrift', `blogs` = '$blogs', `id` = '$id', 'time' = '$time') WHERE id = $_GET[nr]", $db);
}
?>
og
<form name="indtast" onsubmit="return" action="lykkes.php" method="post">
<?
$indhold = mysql_query("SELECT * FROM blog WHERE id = {$_GET[nr]}", $db);
while ($data = mysql_fetch_row($indhold)) {
echo "
<input type='text' name='id' value='$data[3]'>
<input type='text' name='time' value='$data[0]'>
<input type='text' name='oskrift' value='$data[1]'>
<textarea id='elm1' name='blogs' rows='15' cols='80' style='width: 80%'>";
echo "$data[2]   
</textarea>
<input type='submit' value='Tilføj post'>";
}
?>
Avatar billede w13 Novice
16. juli 2008 - 13:35 #3
Hedder felterne Overskrift, Blogs og Id?
Avatar billede perrep Nybegynder
16. juli 2008 - 13:38 #4
har rettet den der heder overskrift, til oskrift, for det hedder den i databasen. men tror heller ikke det er det der er galt, for den putter det ind i databasen. men den opdatere bare ikke det gamle, den sætter bare noget nyt ind, med et nyt id.
Avatar billede w13 Novice
16. juli 2008 - 13:39 #5
Hedder filen lykkes.php? :)

Måske skyldes det, at du prøver at ændre id. Hvad hvis du udelader `id` = '$id',
Avatar billede perrep Nybegynder
16. juli 2008 - 13:47 #6
nu lavede jeg den  om til det den hed, altså edit.php istedet for lykkes.php
så kommer den her fejl:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in c:\phpdev\www\edit.php on line 92

<form name="indtast" onsubmit="return" action="edit.php" method="post">
<?
$indhold = mysql_query("SELECT * FROM blog WHERE id = {$_GET[nr]}", $db);
while ($data = mysql_fetch_row($indhold)) {
echo "
<input type='text' name='id' value='$data[3]'>
<input type='text' name='time' value='$data[0]'>
<input type='text' name='oskrift' value='$data[1]'>
<textarea id='elm1' name='blogs' rows='15' cols='80' style='width: 80%'>";
echo "$data[2]   
</textarea>
<input type='submit' value='Tilføj post'>";
}

det er ved while at der er et problem.
Avatar billede perrep Nybegynder
16. juli 2008 - 13:53 #7
glem det sidste!
Avatar billede mike1963 Nybegynder
16. juli 2008 - 14:08 #8
Når et SQL udtryk ender op i flere end 1 række så skal man bruger cursor - det er det den prøver at fortælle ;o)
Avatar billede henninghabor Nybegynder
16. juli 2008 - 14:30 #9
mysql_query("UPDATE `blog` SET `overskrift` = '$oskrift', `blogs` = '$blogs', `id` = '$id', 'time' = '$time') WHERE id = $_GET[nr]", $db);

Fjern parentes efter '$time'

  mysql_query("UPDATE `blog` SET `overskrift` = '$oskrift', `blogs` = '$blogs', `id` = '$id', 'time' = '$time' WHERE id = $_GET[nr]", $db);
Avatar billede henninghabor Nybegynder
16. juli 2008 - 14:32 #10
Prøv også at lave $_GET[nr] om til $_POST[nr] i WHERE id = $_GET[nr]
Avatar billede perrep Nybegynder
16. juli 2008 - 15:23 #11
der er stadig ikke noget der hjælper, den laver bare en ny streng.
hvis jeg redigere indlæget med id'et 18, og så prøver at update den. så forsvinder den gamle ikke, den laver bare en ny, med id'et 19: min kode so far:

include("config.php");
$blogs = $_POST['blogs'];
if ($blogs) {
  $oskrift = $_POST['oskrift'];
  $id = $_POST['id'];
    $time = $_POST['time'];
mysql_query("UPDATE `blog` SET `oskrift` = '$oskrift', `blogs` = '$blogs', `id` = '$id', 'time' = '$time' WHERE id = $_POST[nr]", $db);

nclude("config.php");
$blogs = $_POST['blogs'];
if ($blogs) {
  $oskrift = $_POST['oskrift'];
  $id = $_POST['id'];
    $time = $_POST['time'];
mysql_query("UPDATE `blog` SET `oskrift` = '$oskrift', `blogs` = '$blogs', `id` = '$id', 'time' = '$time' WHERE id = $_POST[nr]", $db);
}

jeg har også prøvet at gøre sådan her: WHERE id = '18' men det hjalp lige lidt. den lavede stadig bare et nyt post.
Avatar billede w13 Novice
16. juli 2008 - 15:24 #12
Prøv at fjerne:

`id` = '$id',
Avatar billede perrep Nybegynder
16. juli 2008 - 15:25 #13
hjælper heller ikke. den gør det samme
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