webForumDet fria alternativet

Kan inte connecta mysql?!

PHPur PHP

61 svar · 1 385 visningar · startad av crisse6 · sida 3 av 4

crisse6Medlem sedan dec. 20002 526 inlägg
#41

jeje, skrev fel i forumet... men hade satt rätt i koden, men fortfarande, fel på rad 64 :( what the fuck liksom?

MatteMedlem sedan aug. 20002 975 inlägg
#42

Hur ser din kod ut efter de sista ändringarna, och hur lyder ditt felmeddelande ?

crisse6Medlem sedan dec. 20002 526 inlägg
#43

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>
MatteMedlem sedan aug. 20002 975 inlägg
#44

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.

crisse6Medlem sedan dec. 20002 526 inlägg
#45

Great mannen! Men varför visas inte listan med filer innan man laddat upp???

MatteMedlem sedan aug. 20002 975 inlägg
#46

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();

?>
crisse6Medlem sedan dec. 20002 526 inlägg
#47

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 :(

nkrantzMedlem sedan apr. 2002830 inlägg
#48

innehåller inte $fid id-nummret som filen har i databasen? testa $filnamn ist!

crisse6Medlem sedan dec. 20002 526 inlägg
#49

nej, för ändrade det!

nkrantzMedlem sedan apr. 2002830 inlägg
#50

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

crisse6Medlem sedan dec. 20002 526 inlägg
#51

eftersom det är ju mkt krångligare och mer kod om man ska plocka från id?

nkrantzMedlem sedan apr. 2002830 inlägg
#52

Om du vill att det ska vara det så är det väl ok ;)

Löste du det andra?

crisse6Medlem sedan dec. 20002 526 inlägg
#53

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!

nkrantzMedlem sedan apr. 2002830 inlägg
#54

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?

MatteMedlem sedan aug. 20002 975 inlägg
#55

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.

crisse6Medlem sedan dec. 20002 526 inlägg
#56

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>
MatteMedlem sedan aug. 20002 975 inlägg
#57

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 ?

crisse6Medlem sedan dec. 20002 526 inlägg
#58

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

MatteMedlem sedan aug. 20002 975 inlägg
#59

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'] ?>">
GeinMedlem sedan sep. 20005 700 inlägg
#60

<?= (eller egentligen <%=) är bara ett ASP-påhitt som inte fungerar i PHP.

134 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)