webForumDet fria alternativet

mysql_fetch_object

PHP

9 svar · 351 visningar · startad av cindra

Medlem sedan juli 200416 inlägg
Frågan#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???

Medlem sedan dec. 200012 464 inlägg
#2

Visa den kod du har.

Det låter som om detta är mer relaterat till PHP än SQL.

Medlem sedan juni 20031 837 inlägg
#3

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.

Medlem sedan juli 200416 inlägg
#4

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);
			  
		  			}
			  
			  	?>
Medlem sedan juni 20031 837 inlägg
#5

ä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?>
Medlem sedan juni 20031 837 inlägg
#6

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

Medlem sedan dec. 200012 464 inlägg
#7

Flyttas från SQL.

Medlem sedan juli 200416 inlägg
#8

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...

Medlem sedan juni 200032 967 inlägg
#9

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 . "\\">");
Medlem sedan juli 200416 inlägg
#10

Tjoohoo... Du e bäst @anders, nu funkar det perfekt! :L

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)