webForumDet fria alternativet

Hämta bild från mysql

PHP

34 svar · 2 723 visningar · startad av emton · sida 2 av 2

Frågan, av emton

Jag har gjort ett formulär där det ska visas en bild och lite text till den. Allt ligger i en databas. Texten är inte några problem men jag begriper inte hur kag får bilden att synas. I databasen har jag skrivit sökvägen till bilden och den kan jag få att skrivas ut 'picture' men nu är det ju inte det jag vill. echo "<table border=\"1\" cellpadding=\"10\">"; echo "<tr><th>id</th><th>Beskr

Läs frågan i sin helhet →
Medlem sedan juni 200589 inlägg
#21

Om jag tar bort följande kod $row = mysql_fetch_assoc ($sql_result) or die ("SQL Error."); så kommer kommer jag rätt och rätt saker kommer upp och när jag skriver in min ändring och klickar på klar så får jag upp ett meddelande att texten är ändrad men texten är fortfarande den samma så inget händer i databasen.

Medlem sedan juni 20031 837 inlägg
#22

testa att lägga till

if (!$sql_result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

mellan

$sql_result = mysql_query ($sql) or die ("Query error.");

    $row = mysql_fetch_assoc ($sql_result) or die ("SQL Error.");

så att det blir

$sql_result = mysql_query ($sql) or die mysql_error();

echo "<br/>SQL: $sql<br/>\n";

if (!$sql_result)
{
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

    $row = mysql_fetch_assoc ($sql_result) or die mysql_error();

så kanske vi kan se om det blir något fel.

Som jag skrev tidigare, post gärna html-koden så att vi kan se hur den genererade koden ser ut, kanske finns något fel där?
Posta gärna om din nuvarande php-kod så vi också vet hur den ser ut nu. det är lätt hänt att man glömmer någon lite bit.

Medlem sedan juni 200589 inlägg
#23

Nu äntligen händer det något!! Resultatet blev nu SQL: SELECT * FROM bilder WHERE id="0";

Medlem sedan juni 20031 837 inlägg
#24

Nu använder vi inte längre POST för att skicka värdena till skriptet så du får ändra

  $attEditera = intval ($_POST['bild']);

till antingen

  $attEditera = intval ($_GET['bild']);

eller

  $attEditera = intval ($_REQUEST['bild']);
Medlem sedan juni 200589 inlägg
#25

Får samma svar.

Medlem sedan juni 20031 837 inlägg
#26

Kan du visa din PHP-kod? Du kanske har missat att ändra på något ställe.
Visa även html-koden för sidan där alla bilder visas, kanske blir något fel i länken för att redigera bilden.

Medlem sedan juni 200589 inlägg
#27

The_Hulk skrev:

Kan du visa din PHP-kod? Du kanske har missat att ändra på något ställe.
Visa även html-koden för sidan där alla bilder visas, kanske blir något fel i länken för att redigera bilden.

Kommer här, jag har bara denna kod, den ska funka för att både visa och ändra.
Är enormt tacksam för all tid du lägger ner :)

<?php
function visaBilder () {
	echo "<p>Klicka på bilden för att ändra bildtexten.</p>";
	
	require_once ("databas.inc");
	
	$sql = "SELECT * FROM bilder;";
	
	$sql_result = mysql_query ($sql) or die ("Query error.");
	
	echo "<form action =\"andra.php\" method=\"post\">";
	echo "<table border=\"1\" cellpadding=\"10\">";
	echo "<tr><th>id</th><th>Beskrivning</th><th>Information</th><th>Bild</th></tr>";
	
	while ($row = mysql_fetch_assoc ($sql_result)) {
            echo "<tr>";
            echo "<td>" . $row['id'] . "</td>";
            echo "<td>" . $row['description'] . "</td>";
            echo "<td>" . $row['information'] . "</td>";
            echo "<td><a href='andra.php?vill_editera=1&?bild=" . $row['id'] . "'><img src='" . $row['picture'] . 	"'/></a></td>";
            echo "</tr>";
    }  

	echo "</table>";
	echo "<input type=\"hidden\" name=\"vill_editera\" value=\"1\" />";
	echo "</form>";
}
	
function editeraBild ($attEditera) {
	require_once ("databas.inc");

	$sql = "SELECT * FROM bilder WHERE id=\"" . $attEditera . "\";";

	$sql_result = mysql_query ($sql) or die (mysql_error());

echo "<br/>SQL: $sql<br/>\n";

if (!$sql_result)
{
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

    $row = mysql_fetch_assoc ($sql_result) or die (mysql_error());  

	
	echo "<form action=\"andra.php\" method=\"post\">";
	echo "<table border=\"0\" cellpadding=\"3\">";
	echo "<tr><td>Beskrivning</td> <td><input type=\"text\" name=\"description\" value=\"" . $row['description'] . "\" /></td></tr>";
	echo "</table>";
	echo "<input type=\"hidden\" name=\"bild\" value=\"" . $attEditera . "\" />";
	echo "<input type=\"hidden\" name=\"har_editerat\" value=\"1\" />";
	echo "<input type=\"submit\" value=\"KLAR\" />";
	echo "</form>";		
}
function gorEditering ($attEditera) {
	require_once ("databas.inc");

	$description			= htmlentities ($_POST['description']);
	
	$sql = "UPDATE bilder SET " .
		"description=\"" . $description . "\" WHERE id=\"" . $attEditera . "\";";
		
	$sql_result = mysql_query ($sql) or die ("Query Error.");
	echo "<p>Bildtexten har ändrats</p>";
}

require_once ("header.inc");

if ($_REQUEST['vill_editera'] == "1") {
	
	$_REQUEST['vill_editera'] = 0;

	$attEditera = intval ($_GET['bild']);
	editeraBild ($attEditera);
}
else if ($_REQUEST['har_editerat'] == "1") {
	
	$_REQUEST['har_editerat'] = 0;

	$attEditera = intval ($_GET['bild']);
	gorEditering ($attEditera);
}
else
	visaBilder ();
?>
Medlem sedan juni 20031 837 inlägg
#28

Jag menade att jag ville se den genererade html-koden.
när du tittar på sidan i webbläsaren så kan du välja att visa källa.
Ändra

if ($_REQUEST['vill_editera'] == "1") {
    
    $_REQUEST['vill_editera'] = 0;

    $attEditera = intval ($_GET['bild']);
    editeraBild ($attEditera);
}

till


if ($_REQUEST['vill_editera'] == "1") {
    
    $_REQUEST['vill_editera'] = 0;

echo "<br/>_GET['bild'] = '" . $_GET['bild'] . "'<br/>";

    $attEditera = intval ($_GET['bild']);

echo "<br/>attEditera  = '" . $attEditera  . "'<br/>";

    editeraBild ($attEditera);
}

så kan vi se om vi har bildid där.

Medlem sedan juni 200589 inlägg
#29

The_Hulk skrev:

Jag menade att jag ville se den genererade html-koden.
när du tittar på sidan i webbläsaren så kan du välja att visa källa.
Ändra

if ($_REQUEST['vill_editera'] == "1") {
    
    $_REQUEST['vill_editera'] = 0;

    $attEditera = intval ($_GET['bild']);
    editeraBild ($attEditera);
}

till


if ($_REQUEST['vill_editera'] == "1") {
    
    $_REQUEST['vill_editera'] = 0;

echo "<br/>_GET['bild'] = '" . $_GET['bild'] . "'<br/>";

    $attEditera = intval ($_GET['bild']);

echo "<br/>attEditera  = '" . $attEditera  . "'<br/>";

    editeraBild ($attEditera);
}

så kan vi se om vi har bildid där.

Här är htmlkoden för bildsidan

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css">
 
<title>Untitled Document</title>
<style type="text/css"> 
<!--
.style1 {
	color: #009900;
	font-weight: bold;
	font-size: 36px;
}
-->
</style>
</head>
 
<body>
<div id="layout">
<div id="top">
</div><!--top-->
<div id="meny">
<ul>
		<li><a href="index.php">Start</a></li>
		<li><a href="loggain.php">Logga in</a></li>
		<li><a href="register.php">Ny användare</a></li>
        <li><a href="visa.php">Visa användare</a></li>
        <li><a href="visa_pictures.php">Visa bilder</a></li>
        <li><a href="andra.php">Ändra bildtext</a></li>
	</ul>
</div><!--meny-->
<div id="main">
</div><!--main-->
</div><!--layout-->
 
</body>
</html>
<p>Klicka p bilden fr att ndra bildtexten.</p><form action ="andra.php" method="post"><table border="1" cellpadding="10"><tr><th>id</th><th>Beskrivning</th><th>Information</th><th>Bild</th></tr><tr><td>1</td><td>Funny och Caramell vintern 2003</td><td>25kb, 20031126</td><td><a href='andra.php?vill_editera=1&?bild=1'><img src='http://tor.ei.hv.se/~webbVT10051/Inlamning_1/Bilder/FunnyCaramell.jpg'/></a></td></tr><tr><td>2</td><td>Charlie som liten</td><td>blabal</td><td><a href='andra.php?vill_editera=1&?bild=2'><img src='http://tor.ei.hv.se/~webbVT10051/Inlamning_1/Bilder/charlie.JPG'/></a></td></tr><tr><td>3</td><td>Lovisa och Lovis, mor och dotter. Den vnstra bilden r tagen av Thomas Olsson.</td><td>den 24 augusti 2005, 09:17:40</td><td><a href='andra.php?vill_editera=1&?bild=3'><img src='http://tor.ei.hv.se/~webbVT10051/Inlamning_1/Bilder/Lovis_Lovisa.jpg'/></a></td></tr><tr><td>4</td><td>Lovis och Lovisa igen. Hr r Lovis ca 1mnad</td><td>maj 2005</td><td><a href='andra.php?vill_editera=1&?bild=4'><img src='http://tor.ei.hv.se/~webbVT10051/Inlamning_1/Bilder/lovisa_lovis.jpg'/></a></td></tr></table><input type="hidden" name="vill_editera" value="1" /></form>

Och här koden för ändrasidan efter att jag ändrat ditt ovanstående förslag.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css">
 
<title>Untitled Document</title>
<style type="text/css"> 
<!--
.style1 {
	color: #009900;
	font-weight: bold;
	font-size: 36px;
}
-->
</style>
</head>
 
<body>
<div id="layout">
<div id="top">
</div><!--top-->
<div id="meny">
<ul>
		<li><a href="index.php">Start</a></li>
		<li><a href="loggain.php">Logga in</a></li>
		<li><a href="register.php">Ny användare</a></li>
        <li><a href="visa.php">Visa användare</a></li>
        <li><a href="visa_pictures.php">Visa bilder</a></li>
        <li><a href="andra.php">Ändra bildtext</a></li>
	</ul>
</div><!--meny-->
<div id="main">
</div><!--main-->
</div><!--layout-->
 
</body>
</html>
<br/>_GET['bild'] = ''<br/><br/>attEditera  = '0'<br/><br/>SQL: SELECT * FROM bilder WHERE id="0";<br/>
Medlem sedan juni 20031 837 inlägg
#30

det hade smugit in ett frågetecken mellan & och bildid

Här är koden utan det felaktiga frågetecknet

   while ($row = mysql_fetch_assoc ($sql_result)) {
            echo "<tr>";
            echo "<td>" . $row['id'] . "</td>";
            echo "<td>" . $row['description'] . "</td>";
            echo "<td>" . $row['information'] . "</td>";
            echo "<td><a href='andra.php?vill_editera=1&bild=" . $row['id'] . "'><img src='" . $row['picture'] . "'/></a></td>";
            echo "</tr>";
    }
Medlem sedan juni 200589 inlägg
#31

Nu äntligen går det framåt igen. Jag kommer till rätt sida och rutan med bildtext kommer upp även med rätt bildtext i. Rätt id och allt. MEN när jag ändrat texten och trycker på klar så står det att texten är ändrad men den är inte det.

Medlem sedan juni 20031 837 inlägg
#32

Det beror på att du även ändrade

else if ($_REQUEST['har_editerat'] == "1") {
    
    $_REQUEST['har_editerat'] = 0;

    $attEditera = intval ($_GET['bild']);
    gorEditering ($attEditera);
}

från $_POST till $_GET
när du postar ditt formulär så görs det via POST.
så på detta stället ska du ha kvar

else if ($_REQUEST['har_editerat'] == "1") {
    
    $_REQUEST['har_editerat'] = 0;

    $attEditera = intval ($_POST['bild']);
    gorEditering ($attEditera);
}

Vill du göra det enklare för dig själv så ändra alla $_POST resp $_GET till $_REQUEST
Jag vet inte om det är bra eller dåligt ut säkerhetsperspektiv men det borde lösa lite problem.

Medlem sedan juni 200589 inlägg
#33

Det funkar!!!!!!
Tack snälla för all tid du har lagt ner!! Jag är jättetacksam. Hoppas att det inte ska behöva bli mer saker nu. Kommer kanske få problem med krypteringen, får se hur det går.
Tack än en gång!

Medlem sedan juni 20031 837 inlägg
#34

Varsågod, eftersom det här problemet har löst sig så får du gärna markera tråden som löst.

Medlem sedan juni 201025 inlägg
#35

Form - Skicka ett formulär utan att sidan uppdateras

Förfrågan har omplacerats till html inlägg!

301 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
149 ms — hämta tråd, inlägg och bilagor (db)
148 ms — ändringar (db)