C cindra Medlem sedan juli 2004 16 inlägg Frågan 3 nov. 2004 07:52 #1 Tja!
Jag ska uppdatera en rad i databasen o har gjort ett formulär där den befintliga informationen ska visas. Problemet är att bara en rad från databasen hämtas o visas i mitt formulär.
Jag har förstått att det har något att göra med mysql_fetch_object. Jag har provat att sätta in mysql_fetch_array o några andra kommando men inget funkar.
Hur gör jag???
L LarsG Medlem sedan dec. 2000 12 464 inlägg Visa den kod du har.
Det låter som om detta är mer relaterat till PHP än SQL.
T The_Hulk Medlem sedan juni 2003 1 837 inlägg har du gjort så att den nuvarande informationen visas i formuläret?
för att uppdatera kan man använda t.ex mysql_query() där du skickar med din SQL-sats.
vet du hur SQL-satsen ska se ut?
UPDATE tabell SET kolumn=nytt_värde WHERE kolumn=gammalt_värde
var ett litet exempel för att försöka beskriva hur man gör.
C cindra Medlem sedan juli 2004 16 inlägg Såhär ser min kod ut nu...
<?php
if(!empty($_POST['id']) and empty($_POST['perform']))
{
$id = $_POST['id'];
$hamta = "SELECT * FROM dagbok WHERE id = '$id'";
$resultat = mysql_query($hamta) or die("Det gick inte att hämta information från databasen!");
$rad = mysql_fetch_object($resultat);
print("<form method=POST action=upd.php>");
print("<input type=hidden name=id value=" . $rad->id . ">");
print("<input type=hidden name=perform value=upd>");
print("<tr heigt=23>");
print("<td width=60 align=right>");
print("<span class=rubrik>Bild</span>");
print("</td>");
print("<td>");
print("<input type=text class=input size=50 name=bild value=" . $rad->bild . ">");
print("</td>");
print("</tr>");
print("<tr heigt=23>");
print("<td width=60 align=right>");
print("<span class=rubrik>Datum</span>");
print("</td>");
print("<td>");
print("<input type=text class=input size=50 name=datum value=" . $rad->datum . ">");
print("</td>");
print("</tr>");
print("<tr heigt=23>");
print("<td width=60 align=right>");
print("<span class=rubrik>Rubrik</span>");
print("</td>");
print("<td>");
print("<input type=text class=input size=50 name=rubrik value=" . $rad->rubrik . ">");
print("</td>");
print("</tr>");
print("<tr heigt=23>");
print("<td width=60 align=right>");
print("<span class=rubrik>Text</span>");
print("</td>");
print("<td>");
print("<textarea class=input cols=50 rows=30 name=text value=" . $rad->text . ">");
print("</textarea></td>");
print("</tr>");
print("<tr heigt=23>");
print("<td width=60 align=right>");
print("</td>");
print("<td>");
print("<input type=submit class=knapp value=Uppdatera>");
print("</td>");
print("</tr>");
mysql_free_result($resultat);
}
?>
T The_Hulk Medlem sedan juni 2003 1 837 inlägg är det från filen upd.php?
istället för att ha print() på varje rad brukar det vara enklare att lägga den största delen av HTLM-koden utanför PHP-koden alltså:
<?
// php-kod
?>
html-kod
<?
// php-kod
?>
för att skriva ut värdet från en variable när man är i HTLM-området skriver man:
<?=$variabel?>
T The_Hulk Medlem sedan juni 2003 1 837 inlägg upd.php kan se ut lite så här:
if($_POST['perform']=="upd" && $_POST['id'] != "")
{
$sql = "UPDATE dagbok SET bild='".$_POST['bild']."', datum='".$_POST['datum']."' WHERE ID=".$_POST['id'];
mysql_query($sql);
}
du får bygga ut SQL-satsen så den får med alla värden du vill
C cindra Medlem sedan juli 2004 16 inlägg Asså, allting funkar perfekt förutom att bara en del av innehållet i databasen hämtas till formulärfälten. I tex rubriken hämtas bara första ordet...
@nders Medlem sedan juni 2000 32 967 inlägg Så blir det när man inte omsluter sina value :s i formulärfälten med citationstecken eller apostrofer. Så här ska det vara:
print("<input type=text class=input size=50 name=rubrik value=\\"" . $rad->rubrik . "\\">");
C cindra Medlem sedan juli 2004 16 inlägg Tjoohoo... Du e bäst @anders, nu funkar det perfekt! :L