jeje, skrev fel i forumet... men hade satt rätt i koden, men fortfarande, fel på rad 64 :( what the fuck liksom?
Kan inte connecta mysql?!
61 svar · 1 385 visningar · startad av crisse6 · sida 3 av 4
Hur ser din kod ut efter de sista ändringarna, och hur lyder ditt felmeddelande ?
Så här ser det ut nu...
<html>
<head>
<title>Ladda upp filer</title>
</head>
<body>
<?php
if (!empty($_GET['action'])) {
if (empty($_POST['besk'])) {
$besk = "Ingen beskrivning...";
} else {
$besk = $_POST['besk'];
$dbh = @mysql_connect ("localhost","root","")
or die ("Gick inte att ansluta!");
mysql_select_db ("filer");
$filnamn = $_FILES['fildata']['name'];
$filtyp = $_FILES['fildata']['type'];
$filstorlek = $_FILES['fildata']['size'];
$fildata = addslashes(fread(fopen($_FILES['fildata']['tmp_name'],"rb"), filesize($_FILES['fildata']['tmp_name'])));
$sql = "INSERT INTO t_filer (filnamn, filtyp, filstorlek, fildata, besk)";
$sql .= " VALUES ('$filnamn','$filtyp','$filstorlek','$fildata','$besk')";
mysql_query($sql);
$fil_id = mysql_insert_id();
echo "<h3>Filen fick ID $fil_id</h3><br>";
mysql_close();
}
echo "<h2>Filer i databasen</h2>\n";
$dbh = @mysql_connect("localhost","root","")
or die ("Kunde inte ansluta mot databasen!");
mysql_select_db("filer");
$sql = "Select fid, filnamn, filtyp, filstorlek, besk FROM t_filer";
$result = mysql_query($sql);
echo "<table border=0>\n";
echo "<tr bgcolor=#EFEFEF><td>Filnamn</td><td>Filtyp</td><td>Filstorlek</td><td>Beskrivning</td><tr>\n";
while ($rad=mysql_fetch_array($result)) {
echo "<tr bgcolor=FFFFFF>\n";
echo "<td><a href=download.php?fid=$rad[1]>$rad[1]</a></td>";
echo "<td>$rad[2]</td><td>$rad[3]</td><td>$rad[4]</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_close();
?>
<h2>Ladda upp valfri fil</h2>
<form action="?action=upload" method="post" enctype="multipart/form-data">
Välj fil<br>
<input type="file" name="fildata"><br>
Beskriv filen<br>
<input type="text" name="besk"><br>
<br>
<input type="submit" value="Ladda upp filjäveln!">
</form>
</body>
</html>
Matte skrev:
... och hur lyder ditt felmeddelande ?
Jag la till en avslutande "måsvinge". Det hela går mycket lättare att se om man indenterar sin kod.
Testa det här:
<html>
<head>
<title>Ladda upp filer</title>
</head>
<body bgcolor="#C2C287" text="#000000" id="all" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10" link="#660000" vlink="#660000" alink="#660000">
<?php
if (!empty($_GET['action'])) {
if (empty($_POST['besk'])) {
$besk = "Ingen beskrivning...";
} else {
$besk = $_POST['besk'];
$dbh = @mysql_connect ("localhost","root","")
or die ("Gick inte att ansluta!");
mysql_select_db ("filer");
$filnamn = $_FILES['fildata']['name'];
$filtyp = $_FILES['fildata']['type'];
$filstorlek = $_FILES['fildata']['size'];
$fildata = addslashes(fread(fopen($_FILES['fildata']['tmp_name'],"rb"), filesize($_FILES['fildata']['tmp_name'])));
$sql = "INSERT INTO t_filer (filnamn, filtyp, filstorlek, fildata, besk)";
$sql .= " VALUES ('$filnamn','$filtyp','$filstorlek','$fildata','$besk')";
mysql_query($sql);
$fil_id = mysql_insert_id();
echo "<h3>Filen fick ID $fil_id</h3><br>";
mysql_close();
}
echo "<h2>Filer i databasen</h2>\n";
$dbh = @mysql_connect("localhost","root","")
or die ("Kunde inte ansluta mot databasen!");
mysql_select_db("filer");
$sql = "Select fid, filnamn, filtyp, filstorlek, besk FROM t_filer";
$result = mysql_query($sql);
echo "<table border=0>\n";
echo "<tr bgcolor=#EFEFEF><td>Filnamn</td><td>Filtyp</td><td>Filstorlek</td><td>Beskrivning</td><tr>\n";
while ($rad=mysql_fetch_array($result)) {
echo "<tr bgcolor=FFFFFF>\n";
echo "<td><a href=download.php?fid=$rad[1]>$rad[1]</a></td>";
echo "<td>$rad[2]</td><td>$rad[3]</td><td>$rad[4]</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_close();
} // <-- Den här saknades
?>
<h2>Ladda upp valfri fil</h2>
<form action="?action=upload" method="post" enctype="multipart/form-data">
Välj fil<br>
<input type="file" name="fildata"><br>
Beskriv filen<br>
<input type="text" name="besk"><br>
<br>
<input type="submit" value="Ladda upp filjäveln!">
</form>
</body>
</html>
Varför mysql_connect och sedan mysql_close för att sedan köra mysql_connect igen ?
Det räcker med att du har mysql_connect/mysql_select_db i början av skriptet,
och sedan mysql_close när du är färdig med alla operationer mot MySQL.
Du kan t.o.m. skippa mysql_close då PHP tar hand om den saken åt dig.
Great mannen! Men varför visas inte listan med filer innan man laddat upp???
Flytta den avslutande "måsvingen", annars visas listan endast när du laddar upp.
Ett tillfälle när du med indentering tydligt kan se vad som hör ihop.
<?php
$dbh = @mysql_connect ("localhost","root","")
or die ("Gick inte att ansluta!");
mysql_select_db ("filer");
if (!empty($_GET['action'])) {
if (empty($_POST['besk'])) {
$besk = "Ingen beskrivning...";
} else {
$besk = $_POST['besk'];
$filnamn = $_FILES['fildata']['name'];
$filtyp = $_FILES['fildata']['type'];
$filstorlek = $_FILES['fildata']['size'];
$fildata = addslashes(fread(fopen($_FILES['fildata']['tmp_name'],"rb"), filesize($_FILES['fildata']['tmp_name'])));
$sql = "INSERT INTO t_filer (filnamn, filtyp, filstorlek, fildata, besk)";
$sql .= " VALUES ('$filnamn','$filtyp','$filstorlek','$fildata','$besk')";
mysql_query($sql);
$fil_id = mysql_insert_id();
echo "<h3>Filen fick ID $fil_id</h3><br>";
}
} // <-- Flyttade denna
echo "<h2>Filer i databasen</h2>\n";
$sql = "Select fid, filnamn, filtyp, filstorlek, besk FROM t_filer";
$result = mysql_query($sql);
echo "<table border=0>\n";
echo "<tr bgcolor=#EFEFEF><td>Filnamn</td><td>Filtyp</td><td>Filstorlek</td><td>Beskrivning</td><tr>\n";
while ($rad=mysql_fetch_array($result)) {
echo "<tr bgcolor=FFFFFF>\n";
echo "<td><a href=download.php?fid=$rad[1]>$rad[1]</a></td>";
echo "<td>$rad[2]</td><td>$rad[3]</td><td>$rad[4]</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_close();
?>
Nice du!!!
Bara en check... i download.php som ska visa filen (eller mer bilden i detta fall) så skrev jag;
<img src="<?=$fid?>">
borde inte det funka??? Får bara ett kryss på bilden, och sökvägen blir x:/www/uppladdning/, men fid innehåller bilden.jpg :(
innehåller inte $fid id-nummret som filen har i databasen? testa $filnamn ist!
nej, för ändrade det!
Då är det väl sökvägen som är fel. Du måste ju anropa sökvägen via http's sökväg. Exempelvis http://www.din-server.com/bilder/<?=$fid?>. Som du har skrivit ser det ut som om du försöker köra den lokalt...
Varför ändrade du så att $fid innehåller filnamnet istället för ID't?
// Nippe
eftersom det är ju mkt krångligare och mer kod om man ska plocka från id?
jeje, men va i hela liksom? om fid strängen innehåller bild.jpg så borde ju den visas upp på download.php eftersom den innehåller i princip bara img src html liksom!
crisse6 skrev:
jeje, men va i hela liksom? om fid strängen innehåller bild.jpg så borde ju den visas upp på download.php eftersom den innehåller i princip bara img src html liksom!
Om du uttrycker dig med lite mer korrekt svenska så lovar jag att det går lättare att hjälpa dig.
Vad har du problem med nu?
Kolla efter med phpMyAdmin, eller det databasverktyg du använder, vilket värde som är lagrad i databasen.
Om det är rätt värde, återkom med din kod för download.php.
nkrantz, jag tänkte högt! :D
bilden kommer inte fram liksom, ni kan få koden för download.php nu:
<html>
<head>
<title>Ladda ner fil...</title>
</head>
<body>
<img src="http://xxx.xxx.xx.xxx/uppladdning/<?=$fid?>">
</body>
</html>
Vad står det i adressfältet på webbläsaren när du tittar på download.php, och hur ser din img-länk ut när du tittar på den med Visa->Källa ?
http://xxx.xx.xxx.xx/uppladdning/download.php?fid=heeej.gif
och så här ser img länken ut:
<img src="http://xxx.xx.xxx.xx/uppladdning/">
vet inte hur man gör i PHP för att få hela strängen??? vet ju i asp... för dom bryts ju om det är te x mellanslag i bildnamnet
Testa då med
<img src="http://xxx.xxx.xx.xxx/uppladdning/<?=$_GET['fid'] ?>">
eller
<img src="http://xxx.xxx.xx.xxx/uppladdning/<?php echo $_GET['fid'] ?>">
<?= (eller egentligen <%=) är bara ett ASP-påhitt som inte fungerar i PHP.