Gå til innhold

Vise bilde fra MysQL


Anbefalte innlegg

Jeg følger en tutorial/eksempel på en liten nettbutikk. Alt går bra til slutt foruten noe vesentlig som manglet. Hvordan vise bilde fra vareposten. Selve tut-en stopper etter dette, og forklarer ikke hva jeg skal gjøre.

 

Det som jeg stusset over, men gikk videre på, var at feltet med bilde, "item_image," var et VARCHAR felt, og jeg la bare inn et fiktivt filnavn. Spørringen går jo til dette feltet, men viser jo intet bilde.

 

Jeg gjorde om feltet til BLOB og lastet opp et jpg, og trodde at alt ble i orden. Men, som mange sikkert her vet, funka ikke. Forfatteren av scriptet har unlatt noe til meg som jeg skal bryne meg med.

 

Det jeg er ute etter er den enkle koden og spørringen, slik at jeg kan forstå fra bunnen av.

 

Jeg legger med scriptet, om noen vil se.

<?php
//connect to database
$mysqli = mysqli_connect("localhost", "...", "...", "butikk");

$display_block = "<h1>My Store - Item Detail</h1>";

//validate item
$get_item_sql = "SELECT c.id as cat_id, c.cat_title, si.item_title, si.item_price, si.item_desc, si.item_image FROM store_items AS si LEFT JOIN store_categories AS c on c.id = si.cat_id WHERE si.id = '".$_GET["item_id"]."'";
$get_item_res = mysqli_query($mysqli, $get_item_sql) or die(mysqli_error($mysqli));

if (mysqli_num_rows($get_item_res) < 1) {
  //invalid item
  $display_block .= "<p><em>Invalid item selection.</em></p>";
} else {
  //valid item, get info
  while ($item_info = mysqli_fetch_array($get_item_res)) {
   $cat_id = $item_info['cat_id'];
   $cat_title = strtoupper(stripslashes($item_info['cat_title']));
   $item_title = stripslashes($item_info['item_title']);
   $item_price = $item_info['item_price'];
   $item_desc = stripslashes($item_info['item_desc']);
   $item_image = $item_info['item_image'];
}

  //make breadcrumb trail
  $display_block .= "<p><strong><em>You are viewing:</em><br/>
  <a href=\"seestore.php?cat_id=".$cat_id."\">".$cat_title."</a> > ".$item_title."</strong></p>
  <table cellpadding=\"3\" cellspacing=\"3\">
  <tr>
  <td valign=\"middle\" align=\"center\"><img src=\"".$item_image."\"/></td>
  <td valign=\"middle\"><p><strong>Description:</strong><br/>".$item_desc."</p>
  <p><strong>Price:</strong> \$".$item_price."</p>";

  //free result
  mysqli_free_result($get_item_res);

  //get colors
  $get_colors_sql = "SELECT item_color FROM store_item_color WHERE item_id = '".$_GET["item_id"]."' ORDER BY item_color";
  $get_colors_res = mysqli_query($mysqli, $get_colors_sql) or die(mysqli_error($mysqli));

  if (mysqli_num_rows($get_colors_res) > 0) {
       $display_block .= "<p><strong>Available Colors:</strong><br/>";
       while ($colors = mysqli_fetch_array($get_colors_res)) {
          $item_color = $colors['item_color'];
          $display_block .= $item_color."<br/>";
      }
  }

  //free result
  mysqli_free_result($get_colors_res);

  //get sizes
  $get_sizes_sql = "SELECT item_size FROM store_item_size WHERE item_id = ".$_GET["item_id"]." ORDER BY item_size";
  $get_sizes_res = mysqli_query($mysqli, $get_sizes_sql) or die(mysqli_error($mysqli));

  if (mysqli_num_rows($get_sizes_res) > 0) {
      $display_block .= "<p><strong>Available Sizes:</strong><br/>";

      while ($sizes = mysqli_fetch_array($get_sizes_res)) {
         $item_size = $sizes['item_size'];
         $display_block .= $item_size."<br/>";
      }
  }

  //free result
  mysqli_free_result($get_sizes_res);

  $display_block .= "
  </td>
  </tr>
  </table>";
}
?>
<html>
<head>
<title>My Store</title>
<style type="text/css" media="all"><!--
body { color: olive; font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: white; margin: 20px; padding: 5px; border-style: solid; border-width: 1px; }
h1 { color: navy; font-size: 16px; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; text-decoration: underline; margin: 0.67em 0; }
--></style>
</head>
<body>
<?php echo $display_block; ?>
</body>
</html>

Lenke til kommentar
Videoannonse
Annonse

Det er ikke spesielt gunstig å lagre hele bildefiler i databasen. Varchar-feltet er nok for å lagre en streng med url til bildet, prøv å legge inn en ikke-fiktiv adresse og se om det kommer noe.

Bildet til en vare kan lastes opp og legges i en mappe på serveren, så lagres adressen til bildet i databasen sammen med annen informasjon om produktet. Enkel måte å gjøre det på.

Endret av Nano-
Lenke til kommentar

Vel, jeg mener å la lest i lignende tråder at lagring av bilder i database kan gjør siden utrolig treig å loade, samtidig er det en grense på MAX størrelse som du får inn i databasen, så da må du gjøre om på instillingene osv.

 

Jeg har i alle mine tilfeller brukt path og navn på bildet i databasen. Funker fjell.

Lenke til kommentar

Det trådstarter ønsker er jo å forstå oppbyggingen av å skrive bilder som binærkode til database. Det kan til enkelte tider være mer gunstig å gjøre det enn å lage URL til statisk innhold.

Lenke til kommentar
Det trådstarter ønsker er jo å forstå oppbyggingen av å skrive bilder som binærkode til database. Det kan til enkelte tider være mer gunstig å gjøre det enn å lage URL til statisk innhold.

Det kan være greit å vite kordan man skriver ut dynamiske bilder.

Men å lagre statiske bilder i db er sjelden [/ aldri] raskere enn å lagre dem til filsystemet.

Derfor er det bedre å vite kordan man kan lagre en "referanse" (filnavn, kanskje mer) i db som man kan bruke for å hente frem bildet.

Lenke til kommentar

Takker for linken!

 

Jeg går for linker istedet, til og begynne med. Men hovedgrunnen var at det er for å gjøre det lettere for en kar som skal oppdatere en lagerbeholdning som skal vises på nettet. Han er ingen racer på PC, men å lære opp til å laste opp og slette fra phpmyadmin, ville kanskje være enklere lære enn at han må laste opp bildefiler fra en ftp klient òg.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...