Just nu i M3-nätverket
Gå till innehåll

Hämta bild till text


Micro90

Rekommendera Poster

Är också lätt förvirrad just nu.. *s*

 

Detta funkar på en sida som heter 'visabild.php'

 

<?php

$sql = "SELECT * FROM bilder";

$result = mysql_query($sql);

 

while ($rad = mysql_fetch_array($result)) {

 

echo "<img src=\"bilder/{$rad['filnamn']}\">\n";

 

}

?>

 

 

Men sidan 'visatextobild.php' funkar inte:

 

$sql = "SELECT links.titel, links.beskrivning, links.kategori, links.anvandare, bilder.filnamn FROM links LEFT JOIN bilder ON links.id = bilder.bokid";

$result = mysql_query($sql);

 

while ($rad = mysql_fetch_array($result)) {

echo "<img src=\"bilder/";

if ($resultatrad['filnamn'] == NULL) {

echo "defaultbild.jpg\">";

} else {

echo $resultatrad['filnamn']."\">"; }

echo " Titel: " .$rad['titel'] ."<br>";

echo wordwrap($rad['beskrivning'], 70, "<br />", 1) ."<br>";

echo " Kategori: " . $rad['kategori'] ."<br><br>";

}

?>

 

Och ladda upp funkar:

<? //laddaupp.php

if (move_uploaded_file($_FILES['fil']['tmp_name'],"bilder/".$_FILES['fil']['name']))

{

echo "filen {$_FILES['fil']['name']} är uppladdad";

 

$sql = "INSERT INTO bilder(filnamn, datum, bokid)

VALUES('{$_FILES['fil']['name']}', now(), '{$bokid}')";

 

mysql_query($sql);

}

?>

 

så jag vet inte...

 

[inlägget ändrat 2003-05-06 21:10:14 av Micro90]

Länk till kommentar
Dela på andra webbplatser

TicoRoman
Men sidan 'visatextobild.php' funkar inte
Testa att skriva ut $resultatrad['filnamn'] (i visatextobild.php) och kolla om det innehåller något. Om den innehåller ett (existerande) filnamn, sökvägen är rätt men det fortfarande inte visar bilden, då vet jag inte. :(

 

Jag ska ut några timmar nu, så det dröjer lite innan nästa svar.. så du inte tror att jag gett upp ;)

 

_________

TicoRoman - Anfall är bästa försvar

 

[inlägget ändrat 2003-05-06 21:22:52 av TicoRoman]

Länk till kommentar
Dela på andra webbplatser

Vore ju inte så konstigt om du gav upp! *s*

 

Men nu börjar jag mer och mer luta åt att det är ett logiskt fel här någonstans:

$sql = "SELECT links.titel, links.beskrivning, links.kategori, links.anvandare, bilder.filnamn FROM links LEFT JOIN bilder ON links.id = bilder.bokid";

$result = mysql_query($sql);

 

while ($rad = mysql_fetch_array($result)) {

echo "<img src=\"bilder/";

if ($resultatrad['filnamn'] == NULL) {

echo "defaultbild.jpg\">";

} else {

echo $resultatrad['filnamn']."\">"; }

echo " Titel: " .$rad['titel'] ."<br>";

echo wordwrap($rad['beskrivning'], 70, "<br />", 1) ."<br>";

echo " Kategori: " . $rad['kategori'] ."<br><br>";

}

?>

 

Verkar det inte som om skriptet inte förstår exakt vilken bild den ska plocka ut på rätt ställe? Och då plockar ha helt enkelt bara ut defaultbilden - för den visas nu.

[inlägget ändrat 2003-05-06 22:06:24 av Micro90]

Länk till kommentar
Dela på andra webbplatser

TicoRoman
Verkar det inte som om skriptet inte förstår exakt vilken bild den ska plocka ut på rätt ställe?
Troligen för att bilden sparas felaktigt, eller i alla fall uppgifterna i databasen. Då tänker jag på bokid i tabellen bilder, som med största sannolikhet inte kommer dit den ska.

 

Det blir enklast om du bifogar här hela uppladningsfilen, dvs även den filen där du har formuläret, så får jag titta på det och göra nödvändiga förändringar.

 

Så bifoga det, så tittar jag på det under onsdagen ;)

 

 

_________

TicoRoman - Anfall är bästa försvar

 

Länk till kommentar
Dela på andra webbplatser

Ok..

det börjar här, med denna sida:

 

<html>

<head>

<title>Register - bilder</title>

</head>

<body>

Här kan du ladda upp bilder <?=$_SESSION['sess_user'] ?>.<br>

<br><br><br><br><br>

<form action="laddaupp.php" method="post" enctype="multipart/form-data">

<input type="file" name="fil">

<input type="submit" name="skicka" value="skicka">

</form>

 

</body>

</html>

 

Sedan kommer man då till laddaupp.php

<?php //laddaupp.php

 

if(isset($_POST['skicka']) && is_uploaded_file($_FILES['fil']['tmp_name'])) {

 

$storlek_bild = GetImageSize($_FILES['fil']['tmp_name']);

$bredd_bild = $storlek_bild[0];

$hojd_bild = $storlek_bild[1];

 

if ($bredd_bild > "100") {

$message[] = "Bilden var för bred";

}

if ($hojd_bild > "150") {

$message[] = "Bilden var för hög";

}

if ($_FILES['fil']['size'] > 204800) { // gräns på 200 kB

$message[] = "Bilden var för stor. Får vara max 200 kB.";

}

 

if (!isset($message)) {

 

copy($_FILES['fil']['tmp_name'],"bilder/".$_FILES['fil']['name']);

echo "filen {$_FILES['fil']['name']} är uppladdad";

 

$sql = "INSERT INTO bilder(filnamn, datum, bokid)

VALUES('{$_FILES['fil']['name']}', now(), '{$_SESSION['sess_user']}')";

 

mysql_query($sql);

 

} else {

 

foreach ($message as $val) {

echo $val."<br>";

}

 

}

 

}

 

?>

 

Sedan skall de visas här:

$sql = "SELECT links.titel, links.beskrivning, links.kategori, links.anvandare, bilder.filnamn FROM links LEFT JOIN bilder ON links.id = bilder.bokid";

$result = mysql_query($sql);

 

while ($rad = mysql_fetch_array($result)) {

echo "<img src=\"bilder/";

if ($resultatrad['filnamn'] == NULL) {

echo "defaultbild.jpg\">";

} else {

echo $resultatrad['filnamn']."\">"; }

echo " Titel: " .$rad['titel'] ."<br>";

echo wordwrap($rad['beskrivning'], 70, "<br />", 1) ."<br>";

echo " Kategori: " . $rad['kategori'] ."<br><br>";

}

?>

Men här visas nu 'defaultbild.jpg' till varje titel.

Så här ser det just nu ut på nätet:

http://medlem.spray.se/bokhandeln/leverantorer/visatextobild.php

 

Länk till kommentar
Dela på andra webbplatser

TicoRoman
här visas nu 'defaultbild.jpg' till varje titel.
Problemet beror ju på att du aldrig väljer för vilken bok bilden ska laddas upp!

 

Antaganden:

- En användare kan endast ladda upp bilder för 'sina' böcker.

 

Begränsning:

- En bok kan endast ha en bild. Eventuell existerande bild ersätts, vid ny uppladdning.

 

 

"Förmulärsfilen":

<html> 
<head> 
<title>Register - bilder</title> 
</head> 
<body> 
Här kan du ladda upp bilder <?=$_SESSION['sess_user'] ?>.<br> 
<br><br><br><br><br> 
<form action="laddaupp.php" method="post" enctype="multipart/form-data"> 

<?php

[color="#ff0000"]mysql_connect ("localhost", "användarnamn", "lösenord");
mysql_select_db ("tabellnamn");[/color]

$b = mysql_query("SELECT id, titel FROM links where anvandare = '".$_SESSION['sess_user']."'");

echo "<select name=\"bokid\">";
while ($brad = mysql_fetch_assoc($)
{
echo "<option value=\"".$brad['id']."\">";
echo $brad['titel'];
echo "</option>";
}
echo "</select>";

?>

<input type="file" name="fil">

<input type="submit" name="skicka" value="skicka"> 
</form> 

</body> 
</html>

 

Förändringar:

Nu får man välja bok, för att veta för vilken bok bilden ska laddas upp.

 

------

 

laddaupp.php:

Ändra

$sql = "INSERT INTO bilder(filnamn, datum, bokid) 
VALUES('{$_FILES['fil']['name']}', now(), '{$_SESSION['sess_user']}')"; 

 

till

 

$sql = "INSERT INTO bilder(filnamn, datum, bokid) 
VALUES('{$_FILES['fil']['name']}', now(), '".$_POST['bokid']."')"; 

 

Nu ska det fungera!

 

Om det fungerar, så tas poäng emot tacksamt ;)

 

_________

TicoRoman - Anfall är bästa försvar

 

[inlägget ändrat 2003-05-07 18:49:31 av TicoRoman]

Länk till kommentar
Dela på andra webbplatser

Nu närmar det sig! Fast det är inte fixat än...

 

Men nu ser jag att t ex wild-texten har idnr 25 och wilde-bilden har bokid 25. Det verkar ju lovande!

Men dom hittar inte varandra här (visatextobild.php):

 

 

<?php

$open = mysql_connect("localhost", "användarnamn", "lösenord");

mysql_select_db("databasnamn", $open);

 

 

$sql = "SELECT links.titel, links.beskrivning, links.kategori, links.anvandare, bilder.filnamn FROM links LEFT JOIN bilder ON links.id = bilder.bokid";

$result = mysql_query($sql);

 

while ($rad = mysql_fetch_array($result)) {

echo "<img src=\"bilder/";

if ($resultatrad['filnamn'] == NULL) {

echo "defaultbild.jpg\">";

} else {

echo $resultatrad['filnamn']."\">"; }

echo " Titel: " .$rad['titel'] ."<br>";

echo wordwrap($rad['beskrivning'], 70, "<br />", 1) ."<br>";

echo " Kategori: " . $rad['kategori'] ."<br><br>";

}

?>

 

Jag har sessioner som kollar att användaren är inloggad och jag har en conn-fil på varje sida.

 

Men på formulär-sidan skrev du så här:

mysql_connect ("localhost", "användarnamn", "lösenord");

mysql_select_db ("tabellnamn");

 

Men här ska det väl inte vara "tabellnamn" utan "databasnamn"? Jag har skrivit databasnamn och bilden ser ut att hamn rätt i databasen och få rätt id.

 

För att tabellnamnet kommer ju här:

$b = mysql_query("SELECT id, titel FROM links where anvandare = '".$_SESSION['sess_user']."'");

 

 

 

Länken är här:

http://medlem.spray.se/bokhandeln/leverantorer/visatextobild.php

 

(Det är också lite konstig att den första titeln kommer två gånger...)

 

[inlägget ändrat 2003-05-07 19:32:01 av Micro90]

Länk till kommentar
Dela på andra webbplatser

Det började funka när jag ändrade

 

 

if ($resultatrad['filnamn'] == NULL) {

till

if ($rad['filnamn'] == NULL) {

 

och

 

echo $resultatrad['filnamn']."\">"; }

till

echo $rad['filnamn']."\">"; }

 

Yipppiiieeee!!!!!!

 

Tack TicoRoman

 

Du får oändligt många poäng!

Det är fantasikt vad du har hjälp till!!

 

Tack! Tack Tack!!

 

 

Länk till kommentar
Dela på andra webbplatser

En sak funkar inte fortfarande:

Den första titeln kommer två gånger av nån mysko anledning...

 

Länk till kommentar
Dela på andra webbplatser

TicoRoman
(Det är också lite konstig att den första titeln kommer två gånger...)
Kanske för att det finns två bilder som hör ihop med boken? Då kanske det blir så att den kommer två gånger?

 

Du får nog bygga in felkontroller som kontrollerar om en bok redan har en bild och i sådana fall ersätta den tidigare bilden. En bok ska alltså bara ha en bild.

 

Det kanske du kan klura ut själv, annars hjälper jag till. I laddaupp.php kan du ha en felkontroll som först kollar i databasen om det finns någon bild med det bokid som håller på att laddas. Då får du radera den bilden från databasen / samt servern.

 

Men nu ser jag att t ex wild-texten har idnr 25 och wilde-bilden har bokid 25. Det verkar ju lovande!
Perfekt, så ska det vara!

 

Det började funka när jag ändrade

 

if ($resultatrad['filnamn'] == NULL) {

till

if ($rad['filnamn'] == NULL) {

Jaha, var det ett så enkelt slarvfel. Tur att en av oss har ögon. ;)

 

Men på formulär-sidan skrev du så här:

mysql_connect ("localhost", "användarnamn", "lösenord");

mysql_select_db ("tabellnamn");

 

Men här ska det väl inte vara "tabellnamn" utan "databasnamn"? Jag har skrivit databasnamn och bilden ser ut att hamn rätt i databasen och få rätt id.

Givetvist ska det vara så som du säger. Jag råkade bara skriva tabell istället för databas. *stressad just nu*

 

Den första titeln kommer två gånger av nån mysko anledning...
Kolla först det enklaste: att det inte finns två likadana "böcker" i links, eller två bilder som hör ihop med den boken.

 

 

_________

TicoRoman - Anfall är bästa försvar

 

 

Länk till kommentar
Dela på andra webbplatser

Det var just som du sa: det fanns två samma bilder med samma id i databasen! Fixat.. Det där med felkontroll lät ju inte så dumt.. ska fundera på det.

 

Skoj att det funkar nu!

 

Länk till kommentar
Dela på andra webbplatser

TicoRoman

Bra att det fungerar till slut! Lycka till med PHP i fortsättningen. Må du bli en expert snart. ;)

 

 

_________

TicoRoman - Anfall är bästa försvar

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...