webForumDet fria alternativet

Ladda upp bild att visa tillsammans med annan text.

PHP

30 svar · 1 184 visningar · startad av rodge

Medlem sedan juli 200457 inlägg
Frågan#1

Hejsan igen i värmen.

För ett par veckor sedan lade jag ut en förfrågan här om ett "låt register" till min hemsida.

Länk till forum frågan

Nu tänkte jag bygga upp ett nytt php script för att visa information om skivor och singlar byggd på samma sätt som den förra, nu är det bara att jag gärna skulle vilja ha med en bild på omslaget. Ska den då ligga tillsammans med den övrige texten i databasen eller ska man ha koppling på något annat sätt?

Bilderna kommer att vara på max 200x200 pixlar (storlek varierar mellan 10 - 50kB beroende på vilket omslag det gäller)

Någon som har någon idé hur jag lättast löser detta?

Tacksam för svar

Medlem sedan juli 200457 inlägg
#2

Satt ihop detta lilla script men får felmeddelande.

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Skivor</title>
</head>

<body background="../bilder/bakgrund.jpg" text="#FFFFFF" link="#00EEFF" vlink="#0000FF" alink="#FF0000">
<form method="POST" action="add.php">

<b>Sort</b><br/>
<input type="text" size="30" name="sort"><p/>

<b>Namn</b><br/>
<input type="text" size="30" name="namn"><p/>

<b>Omslagsbild</b><br/>
<input type="file" size="30" name="omslag"><p/>

<b>Låtar</b><br/>
<textarea name="latar" size="30" rows="10"></textarea><p/>

<b>Text & musik</b><br/>
<input type="text" size="30" name="textmusik"><p/>

<b>Producerad av</b><br>
<input type="text" size="30" name="producent"<p/>
<br>
<b>Inspelad i</b><br>
<input type="text" size="30" name="rec"<p/>
<br>
<b>Bolag</b><br>
<input type="text" size="30" name="bolag"<p/>
<br>
<b>Skivnummer</b><br>
<input type="text" size="30" name="skivnr"<p/>
<br>
<b>Datum</b><br>
<input type="text" size="30" name="datum"<p/>
<br>
<b>Övrig info</b><br>
<input type="text" size="30" name="info"<p/>

<br>
<input type="submit" size="30" value="Lägg till!"><p/>

</form>

<?php

$connection = mysql_connect("localhost", "", "") or die("Kunde inte skapa koppling!");

mysql_select_db("dmsverige_se") or die("Kunde inte välja databas");

{
if (isset($_FILES['omslag']) && is_uploaded_file($_FILES['omslag']['tmp_name'])) {
// Kolla filändelse
$image_info = getimagesize($_FILES['omslag']['tmp_name']);
switch ($image_info[2]) {
case 1:
$ext = '.gif';
break;
case 2:
$ext = '.jpg';
break;
case 3:
$ext = '.png';
break;
case 5:
$ext = '.psd';
break;
case 6:
$ext = '.bmp';
break;
}

}
move_uploaded_file($_FILES['omslag']['tmp_name'], "omslag/omslag_".$id.$ext);
mysql_query("Update mindm Set omslag='omslag_".$id."$ext' Where id='".$id."'");
}

$sort = $_POST['sort'];
$namn = $_POST['namn'];
$latar = $_POST['latar'];
$textmusik = $_POST['textmusik'];
$producent = $_POST['producent'];
$rec = $_POST['rec'];
$bolag = $_POST['bolag'];
$skivnr = $_POST['skivnr'];
$datum = $_POST['datum'];
$info = $_POST['info'];

$laggTill = "INSERT INTO mindm (sort, namn, latar, textmusik, producent, rec, bolag, skivnr, datum, info) VALUES ('$sort', '$namn', '$latar', '$textmusik*, '$producent', '$rec', '$bolag', '$skivnr', '$datum', '$info')";
mysql_query($laggTill) or die("SQL: $sql <br>".mysql_error());
mysql_close($connection);

print("Information lades framgångsrikt till i databasen!");
print("<hr noshade size=1 color=#000000>");

?>

</body>

</html>

Får detta meddelande
SQL:
You have an error in your SQL syntax near 'Depeche Mode', 'Blockwing', '', '', '', '')' at line 1
Utan inlägg blir det.
SQL:
You have an error in your SQL syntax near ''*, '', '', '', '', '', '')' at line 1

Medlem sedan mars 2003429 inlägg
#3

Lägg till en kolumn i din tabell med låtnamn och info. I den nya kolumnen kan du antingen skriva adressen till bilden och namnet eller bara namnet om alla bilder kommer ligga i samma mapp.

Hämta sedan informationen om bilden tillsammans med den andra informationen och skriv ut den på sidan t.ex. såhär:

$bild = $rad["bild"];

echo("<img src='images/$bild'>"); /// om alla ligger i samma mapp annars:
echo("<img src='$bild'>");

Medlem sedan juli 200457 inlägg
#4

Så om bilden ligger i en mapp som heter omslag och heter violator.jpg

omslag/violator.jpg

Ska jag lägga det i databasen vid rätt skiva?

Medlem sedan aug. 20002 975 inlägg
#5

Sedan måste du ha med enctype="multipart/form-data" i ditt formulärhuvud.

Medlem sedan mars 2003429 inlägg
#6

rodge skrev:

Så om bilden ligger i en mapp som heter omslag och heter violator.jpg

omslag/violator.jpg

Ska jag lägga det i databasen vid rätt skiva?

Precis

Medlem sedan juli 200457 inlägg
#7

Ska sätta mig och kolla på det och se om jag fixar det...

Medlem sedan juli 200457 inlägg
#8

Har börjat få lite ordning på det, men kommer ett fel meddelande:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/dmsverige.se/dmsverige.se/httpd.www/mydm/skivinfo.php on line 17
Koden på skivinfo.php
<?php

/// Ansluter
mysql_connect(localhost,'','');
mysql_select_db(db);

/// Hämtar låtinfo från databasen med limit 1
$info = mysql_query("SELECT * FROM mindm WHERE id = ".intval($_GET['id']));
WHILE($rad=mysql_fetch_array($info)){

$namn=$rad["namn"];
$omslag=$rad["omslag"];
$latar=$rad["latar"];
$textmusik=$rad["textmusik"];
$producent=$rad["producent"];
$rec=$rad["rec"];
$bolag=$rad["bolag"];
$skivnr=$rad["skivnr"];
$datum=$rad["datum"];
$info=$rad["info"];

/// Skriver en söt liten info text om låten/mixen
echo("
<table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000>
<tr>
<td bgcolor=#000000><font face=Verdana size=1><b>$namn </b></font></td>
</tr>
<tr>
<td bgcolor=#4C4C4C><font face=Verdana size=1><img src='omslag/$omslag'></font></td>
</tr>
<tr>
<td bgcolor=#4C4C4C><font face=Verdana size=1>$latar</font></td>
</tr>
<tr>
<td bgcolor=#4C4C4C><font face=Verdana size=1>$textmusik</font></td>
</tr>
</table>

Sedan jag vill kunna styra så att man väljer ut att visa 12" vinyl maxi via en länk. Hur skriver man det i mysql?

");

}
?>

Medlem sedan mars 2003429 inlägg
#9

Lägg alltid till "or die(mysql_error())" för att undrlätta felsöken!

$info = mysql_query("SELECT * FROM mindm WHERE id = ".intval($_GET['id']) or die(mysql_error());

Medlem sedan juli 200457 inlägg
#10

Konstigt, när jag la till "or die(mysql_error()) fick jag detta svaret:

Parse error: parse error, unexpected ';' in /customers/dmsverige.se/dmsverige.se/httpd.www/mydm/skivinfo.php on line 16

Rad 16 är denna: (som jag precis ändrade)
$info = mysql_query("SELECT * FROM mindm WHERE id = ".intval($_GET['id']) or die(mysql_error());

Medlem sedan okt. 2001538 inlägg
#11

Hej :)

Fattas det inte en avslutande parantes på rad 16?

$info = mysql_query("SELECT * FROM mindm WHERE id = ".intval($_GET['id'])[b])[/b] or die(mysql_error());

Typ?
MVH Patrik

Medlem sedan juli 200457 inlägg
#12

Det stämde bra Patrik, fixade till det och fick ett annat fel meddelande istället

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/dmsverige.se/dmsverige.se/httpd.www/mydm/skivinfo.php on line 17

Rad 17 är denna:
WHILE($rad=mysql_fetch_array($info)){

Medlem sedan juni 20006 031 inlägg
#13

Testa att ändra

$info = mysql_query("SELECT * FROM mindm WHERE id = ".intval($_GET['id'])) or die(mysql_error());

till

$info = mysql_query("SELECT * FROM mindm WHERE id = '".intval($_GET['id'])."') or die(mysql_error());

och se om det hjälper.

Medlem sedan juli 200457 inlägg
#14

Då ska vi se.

Ändrade raden och fick detta till svar

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /customers/dmsverige.se/dmsverige.se/httpd.www/mydm/skivinfo.php on line 19

Rad 19:
$namn=$rad["namn"];

Hela php scriptet som det ser ut just nu.

<?php

/// Ansluter
mysql_connect(localhost,,);
mysql_select_db(dmsverige_se);

/// Hämtar låtinfo från databasen med limit 1
$info = mysql_query("SELECT * FROM mindm WHERE id = '".intval($_GET['id'])."') or die(mysql_error());
WHILE($rad=mysql_fetch_array($info)){

$namn=$rad["namn"];
$omslag=$rad["omslag"];
$latar=$rad["latar"];
$textmusik=$rad["textmusik"];
$producent=$rad["producent"];
$rec=$rad["rec"];
$bolag=$rad["bolag"];
$skivnr=$rad["skivnr"];
$datum=$rad["datum"];
$info=$rad["info"];

/// Skriver en söt liten info text om låten/mixen
echo("
<table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000>
<tr>
<td bgcolor=#000000><font face=Verdana size=1><b>$namn </b></font></td>
</tr>
<tr>
<td>
<table border=0 cellspacing=0 cellpadding=0 bordercolor=#000000>
<tr>
<td bgcolor=#4C4C4C><font face=Verdana size=1><img src='omslag/$omslag'></font></td>
<td bgcolor=#4C4C4C valign=top><font face=Verdana size=1>$latar</font></td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor=#4C4C4C><font face=Verdana size=1>Text & musik: $textmusik<br>Producerad av: $producent<br>Inspelad i: $rec<br>Skivbolag: $bolag<br>Skivnummer: $skivnr<br>Releasedatum: $datum<br>Övrigt info: $info</font></td>
</tr>

</table>

");

}
?>

Medlem sedan okt. 2001538 inlägg
#15

Vore jag du skulle jag redigera bort anv.namn och lösen ur mysql_connect raden...
ville bara säga detta lite snabbt

MVH Patrik

Medlem sedan juni 20006 031 inlägg
#16

Såg nu att du har missat en "

$info = mysql_query("SELECT * FROM mindm WHERE id = '".intval($_GET['id'])."'") or die(mysql_error());
Medlem sedan juli 200457 inlägg
#17

Patrik81 skrev:

Vore jag du skulle jag redigera bort anv.namn och lösen ur mysql_connect raden...
ville bara säga detta lite snabbt

MVH Patrik

¨

Tack Patrik, glömde helt av att ta bort det.

MVH

Medlem sedan juni 20006 031 inlägg
#18

varför använder du intval() egentligen? Varför inte bara

$info = mysql_query("SELECT * FROM mindm WHERE id = {$_GET['id']}") or die(mysql_error());
Medlem sedan okt. 2001538 inlägg
#19

Vidare funderar jag på om det inte fattas ett citationstecken nu.

$info = mysql_query("SELECT * FROM mindm WHERE id = '".intval($_GET['id'])."'") or die(mysql_error());

typ sådär kanske.

/r: Citationstecknet såg så knepigt ut fetstilt, så tog bort fetstilen från koden.

MVH Patrik

Medlem sedan juni 20006 031 inlägg
#20

Pedda skrev:

Såg nu att du har missat en "

;) :p

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