login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Upgeloade foto ook weergeven (Opgelost)

Offline Gust - 15/07/2008 10:05 (laatste wijziging 15/07/2008 10:06)
Avatar van GustMySQL interesse Het is me nu E I N D E L I J K gelukt om een foto te uploaden naar de database, waarbij de database de url van de foto toont, en waarbij de foto zelf naar de webruimte wordt geschreven.

Maar nu zou ik de foto op een pagina ook moeten kunnen weergeven dmv de id. Hoe moet dat, want ik raak er niet wijs uit.

Zie bijvoorbeeld deze website en klik linksboven op de +

index.php
  1. <form action="doorsturen.php" method="post" enctype="multipart/form-data">
  2. <p>Pictures:<br>
  3. <input type="file" name="pictures[]" /><br>
  4. <input type="file" name="pictures[]" /><br>
  5. <input type="file" name="pictures[]" /><br>
  6. <input type="submit" value="Send" />
  7. </p>
  8. </form>




doorsturen.php
  1. <?php
  2.  
  3. $files = array();
  4.  
  5. foreach ($_FILES["pictures"]["error"] as $key => $error) {
  6. if ($error == UPLOAD_ERR_OK) {
  7. $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  8. $name = $_FILES["pictures"]["name"][$key];
  9. move_uploaded_file($tmp_name, "images/$name");
  10. array_push($files, $name);
  11. }
  12. }
  13.  
  14.  
  15. $link = mysql_connect('localhost', 'geheim', 'geheim');
  16. if (!$link) {
  17. die('Could not connect: ' . mysql_error());
  18. }
  19. mysql_select_db('dotserv_gazelle');
  20.  
  21. mysql_query("INSERT INTO mijntabel VALUES ('','$files[0]','$files[1]','$files[2]','$files[3]');");
  22. printf("Record inserted with ID %d\n", mysql_insert_id());
  23.  
  24.  
  25. ?>


De database:
  1. CREATE TABLE `test` (
  2. `ID` int(11) NOT NULL AUTO_INCREMENT,
  3. `file1` varchar(255) NOT NULL,
  4. `file2` varchar(255) NOT NULL,
  5. `file3` varchar(255) NOT NULL,
  6. PRIMARY KEY (`ID`)
  7. ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;



Ik heb het al op verschillende manieren proberen weer te geven, bijvoorbeeld
  1. images/$file1

of
  1. <?php echo \"<img src='images/\" . $file1 . \"'>\"; ?>


maar niets helpt

7 antwoorden

Gesponsorde links
Offline kenzo - 15/07/2008 10:09 (laatste wijziging 15/07/2008 10:10)
Avatar van kenzo PHP beginner roep je $file1 ook aan?

Anders moet het zoiets zijn:

  1. $res = mysql_query("SELECT * FROM test");
  2. while ($arr = mysql_fetch_assoc($res)) {
  3. echo "<img src='".$arr["file1"]."'><BR>";
  4.  
  5.  
  6. }

(Dit bij een lijst van foto's)


Het volgende als je het doet per id met bv Get

  1. $res = mysql_query("SELECT * FROM test WHERE id='".$_GET['id']."'");
  2. $arr = mysql_fetch_assoc($res);
  3. echo "<img src='".$arr["file1"]."'><BR>";
Offline Gust - 15/07/2008 11:15
Avatar van Gust MySQL interesse Het is per id.
Maar dit script moet ik wel in een bestaand script verwerken. Ik toon je even het script van de pagina die de data moet tonen. Ik heb er wel heel veel uitgezwierd om het nog overzichtelijk te houden:

  1. <?php
  2. // verbinding met database invoegen
  3. $username = "geheim";
  4. $password = "geheim";
  5. $host="localhost";
  6. $dbnaam="geheim";
  7. $db=mysql_connect($host, $username, $password) or die (mysql_error());
  8. mysql_select_db($dbnaam, $db) or die (mysql_error());
  9.  
  10. $query="SELECT * FROM mijn_tabel WHERE id='" . $_GET["id"] ."'";
  11. $result = mysql_query($query) or die ("FOUT: " . mysql_error());
  12.  
  13. ?>
  14.  
  15. <html>
  16. <head>
  17. <title></title>
  18. </head>
  19.  
  20. <body>
  21. <p>
  22. <?php
  23.  
  24. while (list($ID, $Name, $enzoverder) =
  25.  
  26. mysql_fetch_row($result)){
  27. $nam=$Name;
  28. $enz=$enzoverder;
  29.  
  30. <table width=90% border=\"0\" align=center cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"f1f4f9\">
  31. <tr>
  32. <td bgcolor=ddecf8><div align=\"center\">
  33.  
  34. <p><p>hier moet de foto ergens komen</p>
  35. </div></td>
  36. </tr>
  37. </table>
  38.  
  39.  
  40. \n");
  41.  
  42. // verbinding afsluiten
  43. ?>
  44.  
  45.  
  46.  
  47.  
  48. <?php
  49. // else-blok correct afsluiten
  50. }
  51. ?>
  52. </body>
  53. </html>
Offline bosgroen - 15/07/2008 11:51
Avatar van bosgroen Gouden medaille

PHP interesse
gewoon het pad invullen in het scr-attibuut van een img-tag; zoals hierboven aangegeven. Uiteraard moet je dit pad opvragen aan de database, zoals kenzo toonde.

Heel goed opletten bij het aangeven van het pad. Mocht je het icoontje krijgen van niet gevonden afbeelding (je weet wel zo'n rood kruisje), dan kan je daarop rechtermuisklikken en bij properties het pad zien, en zo het script aanpassen.

Wat databasedesign betreft, is het nogal slecht kolommen te maken file1, file2, file3.... Tenzij dat je echt zeker bent dat je altijd exact 3files per id zult hebben.
beter design is, slechts drie kolommen:
- id
- combinatie_id
- file
Zo kan je per combinatie_id: 1 of 2 of X aantal files linken, afhankelijk van wat je op dat moment wilt.
Offline kenzo - 15/07/2008 12:02
Avatar van kenzo PHP beginner Probeer dit eens:

  1. <?php
  2. // verbinding met database invoegen
  3. $username = "geheim";
  4. $password = "geheim";
  5. $host="localhost";
  6. $dbnaam="geheim";
  7. $db=mysql_connect($host, $username, $password) or die (mysql_error());
  8. mysql_select_db($dbnaam, $db) or die (mysql_error());
  9.  
  10. $query="SELECT * FROM mijn_tabel WHERE id='" . $_GET["id"] ."'";
  11. $result = mysql_query($query) or die ("FOUT: " . mysql_error());
  12.  
  13. ?>
  14.  
  15. <html>
  16. <head>
  17. <title></title>
  18. </head>
  19.  
  20. <body>
  21. <p>
  22. <?php
  23.  
  24. while (list($ID, $Name, $enzoverder) =
  25.  
  26. mysql_fetch_row($result)){
  27. $nam=$Name;
  28. $enz=$enzoverder;
  29.  
  30. <table width=90% border=\"0\" align=center cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"f1f4f9\">
  31. <tr>
  32. <td bgcolor=ddecf8><div align=\"center\">
  33.  
  34. <p><p>
  35.  
  36. <img src='".$result['file1']."'><BR>
  37. <img src='".$result['file2']."'><BR>
  38. <img src='".$result['file3']."'><BR>
  39.  
  40. </p>
  41. </div></td>
  42. </tr>
  43. </table>
  44.  
  45.  
  46. \n");
  47.  
  48. // verbinding afsluiten
  49. ?>
  50.  
  51.  
  52.  
  53.  
  54. <?php
  55. // else-blok correct afsluiten
  56. }
  57. ?>
  58. </body>
  59. </html>
Offline Gust - 15/07/2008 13:16 (laatste wijziging 15/07/2008 13:29)
Avatar van Gust MySQL interesse Ik zie de foto's nog steeds niet.

Het pad is /usr/www/users/dotserv/gazelle/pro/gaz_main/images

Dus is het zo?
  1. <table width=90% border=\"0\" align=center cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"f1f4f9\"> <tr> <td bgcolor=ddecf8><div align=\"center\"> <p><p>
  2. <img src=/usr/www/users/dotserv/gazelle/pro/gaz_main/images'".$result['file1']."'><BR>
  3. <img src=/usr/www/users/dotserv/gazelle/pro/gaz_main/images'".$result['file2']."'><BR>
  4. <img src=/usr/www/users/dotserv/gazelle/pro/gaz_main/images'".$result['file3']."'><BR> </p> </div></td> </tr></table>
Offline kenzo - 16/07/2008 09:38
Avatar van kenzo PHP beginner nee, dan wordt het gewoon vanuit de home dir
Ik denk in dit geval dus images

laat de pagina eens zien aub waar de code op staat?
Offline Gust - 16/07/2008 22:07
Avatar van Gust MySQL interesse Het is intussen gelukt!
Ik heb een onnozele fout gemaakt Ik was gewoon een paar dingen vergeten. Ik vergat het in de while list te specifieren en in de mysql_fetch_row

Dit is de juiste code: <img src=images/$file1 />
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.291s