Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Visualizzare immagini presenti nel DB MySQL

    Buona sera a tutti.
    Ho un problema, praticamente ho costruito un database che contiene una tabella immagini dove posso salvare delle immagini.
    E fin qui tutto bene, ma quando arriva il momento di visualizzarle non vengono visualizzate e al posto mi esce un percorso del genere:
    Qua sotto c'è il codice di visualizzazione:
    codice:
    <?php
    if (isset($_GET['id']))
    {
      $id = @intval($_GET['id']);
      @include 'config.php';
      $sql = "SELECT id,type,immagine FROM immagini WHERE id='$id'";
      $result = @mysql_query($sql) or die(mysql_error ());
      $row = @mysql_fetch_array($result);
      $id_img = $row['id'];
      $type = $row['type'];
      $img = $row['immagine'];
      if (!$id_img)
      {
        echo "Id sconosciuto";
      }else{
          @header ("Content-type: ".$type);
          echo $img;
      }
    }else{
      echo "Impossibile soddisfare la richiesta.";
    }
    ?>
    Qualcuno gentilmente mi può dare una mano, grazie.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Hai la stretta necessità di mettere proprio l'immagine nel db?
    Sarebbe molto più comodo salvare le immagini in una cartella e salvare solo il percorso nel db.
    In questo modo sarebbe più facile gestirle.

  3. #3
    Originariamente inviato da Alhazred
    Hai la stretta necessità di mettere proprio l'immagine nel db?
    Sarebbe molto più comodo salvare le immagini in una cartella e salvare solo il percorso nel db.
    In questo modo sarebbe più facile gestirle.
    Sono d'accordo; in ogni caso verifica che il tuo codice php che produce in output l'immagine non faccia ASSOLUTAMENTE NESSUN OUTPUT prima di fare l'output dello header del tipo e dei dati binari dell'immagine; se vuoi essere tranquillo usa ob_start() all'inizio del file e ob_end_clean subito prima dell'output dell'immagine per assicurarti che assolutamente nulla sia uscito prima del dovuto.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    No non è proprio una stretta necessita, mi potresti spiegare come dovrei fare per mettere solo il percorso nel database.
    Sè puoi dammi un codice della struttura della tabella e del php che fa il collegamento.
    O se no potresti darmi un link dove spiega tutto questo?
    Grazie ancora.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Dipende, le immagini le metteresti direttamente tu nella cartella via ftp o avresti un form per l'upload?

  6. #6
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Ho creato un form di upload che per il momento lo sto usando in locale.
    codice:
    <?php
    function upload()
    {
      $result = false;
      $immagine = '';
      $size = 0;
      $type = '';
      $nome = '';
      $max_size = 300000;
      $result = @is_uploaded_file($_FILES['file']['tmp_name']);
      if (!$result)
      {
        echo "Impossibile eseguire l'upload.";
        return false;
      }else{
        $size = $_FILES['file']['size'];
        if ($size > $max_size)
        {
          echo "Il file è troppo grande.";
          return false;
        }
        $type = $_FILES['file']['type'];
        $nome = $_FILES['file']['name'];
        $immagine = @file_get_contents($_FILES['file']['tmp_name']);
        $immagine = addslashes ($immagine);
        @include 'config.php';
        $sql = "INSERT INTO immagini (nome, size, type, immagine) VALUES ('$nome','$size','$type','$immagine')";
        $result = @mysql_query ($sql) or die (mysql_error());
        return true;
      }
    }
    ?>
    codice:
    <?php
    @include 'upload.php';
    if (isset($_FILES['file']))
    {
      upload();
    }
    echo "
    <h3>Upload</h3>
    <form enctype=\"multipart/form-data\" 
    action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
    <input type=\"hidden\" name=\"MAX_FILE_SIZE\" 
    value=\"300000\" />
    <input type=\"file\" name=\"file\" size=\"40\" />
    <input type=\"submit\" value=\"Invia\" />
    </form>
    
    <a href=\"link.php\">Elenco</a>";
    ?>

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Intanto puoi leggere qui come fare l'upload di un file in una cartella con php.
    Per quello che ti serve poi, basta che metti in una variabile il percorso in cui vengono salvate le immagini, ad ogni upload, in una nuova variabile, concateni a questo percorso il nome del file e salvi questa nuova variabile all'interno di una tabella nel db.
    Per poi andare a prendere il link giusto dalla tabella sta a te decidere come stai più comodo, potresti avere ad esempio una colonna con i soli nomi dei file e fare una select su questi se sai a priori il nome dell'immagine da caricare, oppure puoi avere una colonna con un altro indicativo, sta a te scegliere quale.

    Poi nella pagina metterai una cosa del tipo
    echo "[img]$immagine[/img]";
    dove la variabile $immagine contiene il link ottenuto da una query sul db.

  8. #8
    Originariamente inviato da Alhazred
    Intanto puoi leggere qui come fare l'upload di un file in una cartella con php.
    Per quello che ti serve poi, basta che metti in una variabile il percorso in cui vengono salvate le immagini, ad ogni upload, in una nuova variabile, concateni a questo percorso il nome del file e salvi questa nuova variabile all'interno di una tabella nel db.
    Per poi andare a prendere il link giusto dalla tabella sta a te decidere come stai più comodo, potresti avere ad esempio una colonna con i soli nomi dei file e fare una select su questi se sai a priori il nome dell'immagine da caricare, oppure puoi avere una colonna con un altro indicativo, sta a te scegliere quale.

    Poi nella pagina metterai una cosa del tipo
    echo "[img]$immagine[/img]";
    dove la variabile $immagine contiene il link ottenuto da una query sul db.
    Sono daccordo, ma non su un dettaglio: NON salvare nel campo del db il path completo alla cartella in cui hai salvato l'immagine, ma solo il nome del file immagine; il path che ci sta davanti tanto lo sai tu, mettilo in una variabile di configurazione, così se per caso hai bisogno di modificare la posizione della cartella dei file, non sei costretto a fare una complicata query per modificare i valori salvati nel db...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quando si vogliono salvare i file su filesystem bisognerebbe preoccuparsi dei nomi che vengono usati, per evitare sovrascritture

  10. #10
    Originariamente inviato da luca200
    Quando si vogliono salvare i file su filesystem bisognerebbe preoccuparsi dei nomi che vengono usati, per evitare sovrascritture
    Son molto d'accordo: infatti è una buona idea rinominare i file mentre li si salva con un nome che contenga l'id del record loro associato...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.