webForumDet fria alternativet

Hämta bild från mysql

PHP

34 svar · 2 723 visningar · startad av emton

Medlem sedan juni 200589 inlägg
Frågan#1

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>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>" . $row['picture'] . "</td>";
			echo "</tr>";
	}
	echo "</table>";

Är det någon vänlig själ som vill hjälpa en som försöker lära sig. :)

Medlem sedan jan. 2005953 inlägg
#2

Om det är sökvägen som du har sparat i databasen, så måste du ju använda HTML-taggen <img> för att visa den.

echo "<td><img src=\"" . $row['picture'] . "\" /></td>";
Medlem sedan juni 200589 inlägg
#3

Du är ju en ängel!!!!! Jag tor jag hade petat in img på hur många ställen som helst men inte just så. Tack nu funkar det!
Dock uppstod direkt nästa problem, bilderna blir ju så stora. Hur skriver man för att få en viss storlek?

Medlem sedan jan. 2005953 inlägg
#4

Det bästa är ju om du ändrar storleken på bilden, men du kan styra det med HTML och även CSS om du vill det. Tänk dock på att besökaren måste ju fortfarande ladda den stora bilden då, även om den förminskas i webbläsaren.

Med HTML:

<img src="bild.jpg" width="200" height="100" />

Med CSS:

<img src="bild.jpg" style="width: 200px; height: 100px" />
Medlem sedan juni 200589 inlägg
#5

metalboy skrev:

Om det är sökvägen som du har sparat i databasen, så måste du ju använda HTML-taggen <img> för att visa den.

echo "<td><img src=\"" . $row['picture'] . "\" /></td>";

Tack för all din hjälp metalboy! Nu har jag kommit en bra bit på väg.
Men jag ändrade lite på mig och ville ha bilderna klickbara för att komma vidare till en sida där besökaren kan ändra på infotexten. Bilden blev klickbar men kommunikationen med databasen brast och jag vet inte riktigt vad jag gör för fel. Någon som vill hjälpa mig?

<?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><input type=\"image\" name=\"bild\" src=\"" . $row['picture'] . "\" /></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 picture=\"" . $attEditera . "\";";

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

	$row = mysql_fetch_assoc ($sql_result) or die ("SQL 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 picture=\"" . $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 ($_POST['bild']);
	editeraBild ($attEditera);
}
else if ($_REQUEST['har_editerat'] == "1") {
	
	$_REQUEST['har_editerat'] = 0;

	$attEditera = intval ($_POST['bild']);
	gorEditering ($attEditera);
}
else
	visaBilder ();
?>

Jag kommer till "ny sida" men det står bara SQL Error.
Kan man på något sätt felsöka?

Medlem sedan mars 2009512 inlägg
#6

Sätt

die(mysql_error());

efter ($sql)

Medlem sedan juni 200589 inlägg
#7

Emil W skrev:

Sätt

die(mysql_error());

efter ($sql)

Det där förstod jag inte :q. Vad har det för funktion och mer exakt var ska det in? Jag är inte så bra på detta ännu men försöker lära mig :D.

Medlem sedan juni 20031 837 inlägg
#8

Jag tror att han menade att du skulle byta ut

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

mot

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

du får du ut ett bättre felmeddelandet istället för bara "Query error.".

Medlem sedan juni 200589 inlägg
#9

The_Hulk skrev:

Jag tror att han menade att du skulle byta ut

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

mot

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

du får du ut ett bättre felmeddelandet istället för bara "Query error.".

Fast det blev samma sak. det är ju denna rad som skriver ut felmeddelandet

$row = mysql_fetch_assoc ($sql_result) or die ("SQL Error.");
Medlem sedan juni 200589 inlägg
#10

Och om jag lägger in det där i stället blir det bara tomt.

Medlem sedan mars 2009512 inlägg
#11

The_Hulk skrev:

Jag tror att han menade att du skulle byta ut

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

mot

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

du får du ut ett bättre felmeddelandet istället för bara "Query error.".

The_Hulk hade rätt det var så jag menade.

Medlem sedan juni 200589 inlägg
#12

Ja tack, men det blir ingen skillnad. Det står precis samma sak ändå.

Medlem sedan jan. 2005953 inlägg
#13

Gissningsvis får du inte ut några rader från SQL-frågan, dvs inga rader matchar din fråga. Kolla detta enkelt genom att skriva ut resultatet av mysql_num_rows() efter ditt anrop till mysql_query().

Medlem sedan juni 200589 inlägg
#14

Nä det är helt riktigt, jag får inte ut några rader, sidan blir helt blank. Hur ska jag skriva det du sa?

Medlem sedan juni 20031 837 inlägg
#15

Din loop över alla bilder är nog inte helt rätt.
Du skapar flera input-taggar med namnet "bild" vilket inte kommer att bli rätt. Du för gör om din kod för att välja vilken bild som ska editeras. Förmodligen får du inte med dig någon bildid när du väljer att editera bilden.

    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><input type=\"image\" name=\"bild\" src=\"" . $row['picture'] . "\" /></td>";
            echo "</tr>";
    }

du skulle kunna ändra det till

    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>";
    }

/red kodrättning
/red 2, lite mer rättningar

Medlem sedan juni 200589 inlägg
#16

Aha! Det ligger nog mycket i det du säger med bildid. Tyvärr så funkade det inte med ditt förslag The Hulk. Det visas ingen bild. Jag har försökt att vända och vrida men finner inte någon lösning.

Medlem sedan juni 20031 837 inlägg
#17

Jag hade missat ett tecken (') i koden i slutet på a-taggen, testa den nu och se om det fungerar.

Medlem sedan juni 200589 inlägg
#18

Ok då gick det lite framåt! Bilderna visas som kryss men de är klickbara. Om jag klickar på krysset så försöker den öppna bilden men sökvägen blir fel, internetadress + vill_editera=1&?bild= internetadressen igen.
Nu var det ju inte tänkt att bilden skulle öppnas utan att man skulle komma till nästa del i koden, att ändra bildtexten.

Medlem sedan juni 20031 837 inlägg
#19

Har rättat lite mer i koden ovanför. Om du får mer fel klistra gärna in den genererade html-koden, då är det lättare att hitta felen :)

Medlem sedan juni 200589 inlägg
#20

Rsultatet blev att bilden syns och jag kommer till rätt sida men det är SQL Error, så lite tillbaka på ruta 0.

264 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)