Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    21

    Visualizzare immagini da DB in php

    Buongiorno a tutti!

    Ho cambiato il metodo di archiviazione immagini del mio sito passando da Blob ad upload in una cartella dedicata. Memorizzo il nome del file nel mio DB e lo rinomino con l'ID corrispondente alla mia riga della tabella; e fin qui tutto bene.

    Ora però vorrei visualizzare quell'immagine in un'altra pagina. Come posso fare?
    Ecco il codice di memorizzazione del file:

    <?php require_once('../Connections/localhost.php');
    ini_set("session.gc_maxlifetime","3600");
    @include ("../0_login_iscrizioni/iscritti.php");
    @require "../Connections/config.php";
    @require "../Connections/connect.php";
    $sql = "SELECT email, name FROM iscrizioni where id_user= ". $_SESSION["id_user"];
    $query = @mysql_query($sql) or die (mysql_error());
    $row = mysql_fetch_array($query);
    $email = $row['email'];
    $name = $row['name'];

    // recupero l'id dell'ultimo articolo inserito per abbinargli l'immagine
    $ctrl_login = ("SELECT art_id FROM articoli WHERE art_email='$email' order by art_id desc limit 1");
    $result_ctrl_login = @mysql_query ($ctrl_login) or die (mysql_error());
    $row_ctrl_login = mysql_fetch_array($result_ctrl_login);
    $art_id = $row_ctrl_login['art_id'];
    ?>

    <?php
    // upload immagine
    error_reporting(2047);
    if (isset($_POST["invio"])) {
    $percorso = "../caneclla/uploadtest/";
    if (is_uploaded_file($_FILES['file1']['tmp_name']))
    {
    $ext = pathinfo($_FILES['file1']['name'], PATHINFO_EXTENSION);
    if (move_uploaded_file($_FILES['file1']['tmp_name'], $percorso. $art_id. '.' .$ext))
    { @include ("1_upload_nome_immagine.php");
    echo 'Nome file: <b>'.$_FILES['file1']['name'].'</b><br>';
    echo 'MIME Type: <b>'.$_FILES['file1']['type'].'</b><br>';
    echo 'Dimensione: <b>'.$_FILES['file1']['size'].'</b> byte<br>';
    echo '======================<br>';
    echo 'File caricato correttamente<br><br>';
    echo '<a href="../1_articoli/1_form_invio_immagini.php">carica un altro file</a>';
    } else {
    echo "si è verificato un errore durante l'upload: ".$_FILES["file1"]["error"];
    }
    } else {
    echo "si è verificato un errore durante l'upload: ".$_FILES["file1"]["error"];
    }
    } else {
    // HTML ?>
    <form enctype="multipart/form-data" method="post" action="" name="uploadform">
    <b> Seleziona il file da caricare sul server: </b>
    <br>
    <br>
    <input type="file" name="file1" size="50">
    <br>
    <input type="submit" value="invia" name="invio">
    <br>
    <br>
    <? echo "Post a cui si riferisce l'immagine: " .$art_id; ?>
    </form>
    <?php
    }
    ?>

    Grazie in anticipo per l'aiuto!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Prima di tutto una cosa: quando posti del codice, mettilo tra i tag [php] e [ /php] (l'ultimo senza lo spazio tra [ e /), visualizza l'anteprima ed assicurati che sia ben formattato prima di inviare definitivamente il messaggio, altrimenti risulta difficile leggerlo.

    Una volta che hai il file in una cartella e il percorso di tale file nel db, basta che prendi dal db il percorso (diciamo che lo metti in una variabile che si chiama $percorso), il nome del file ($nomefile) e sulla pagina metti un

    <img src="<?php echo $percorso.$nomefile ?>" />

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    21
    Ci provo subito! Grazie!
    La prossima volta userò anche i tag....sono un neofita autodidatta....

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ma i tag [php] non hanno niente a che fare con la programmazione, è solo uno strumento del forum per visualizzare correttamente il codice.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    21
    Questo è il risultato che ho ottenuto:
    Codice PHP:
    <?php require_once('../Connections/localhost.php'); 

    if (!
    function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      if (
    PHP_VERSION 6) {
        
    $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }

      
    $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
    $theValue;
    }
    }

    $maxRows_Articoli 10;
    $pageNum_Articoli 0;
    if (isset(
    $_GET['pageNum_Articoli'])) {
      
    $pageNum_Articoli $_GET['pageNum_Articoli'];
    }
    $startRow_Articoli $pageNum_Articoli $maxRows_Articoli;

    mysql_select_db($database_localhost$localhost);
    $query_Articoli "SELECT * FROM articoli ORDER BY art_data DESC";
    $query_limit_Articoli sprintf("%s LIMIT %d, %d"$query_Articoli$startRow_Articoli$maxRows_Articoli);
    $Articoli mysql_query($query_limit_Articoli$localhost) or die(mysql_error());
    $row_Articoli mysql_fetch_assoc($Articoli);

    if (isset(
    $_GET['totalRows_Articoli'])) {
      
    $totalRows_Articoli $_GET['totalRows_Articoli'];
    } else {
      
    $all_Articoli mysql_query($query_Articoli);
      
    $totalRows_Articoli mysql_num_rows($all_Articoli);
    }
    $totalPages_Articoli ceil($totalRows_Articoli/$maxRows_Articoli)-1;
    $query_Articoli "SELECT * FROM articoli ORDER BY art_data DESC";
    $Articoli mysql_query($query_Articoli$localhost) or die(mysql_error());
    $row_Articoli mysql_fetch_assoc($Articoli);
    $totalRows_Articoli mysql_num_rows($Articoli);
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Full post</title>

    <style type="text/css">
    <!--
    .Stile1 {color: #FD0303}
    .Stile2 {font-size: 13px}
    .Stile4 {font-size: 13px; color: #636363; }
    .Stile5 {color: #636363}
    -->
    </style>

    </head>
    <body>
    <form id="form1" name="form1" method="post" action="">
      <table width="60%" border="1" align="center">
        <tr>
          <th scope="col">Id</th>
          <th scope="col">Immagine</th>
          <th scope="col">Titolo</th>
          <th scope="col">Sottotitolo</th>
          <th scope="col">Articolo</th>
          <th scope="col">Data</th>
          <th scope="col">Autore</th>
          <th scope="col">Email</th>
          <th scope="col">Categoria</th>
        </tr>
        
          <?php do { ?>
          <tr>
            <td><?php echo $row_Articoli['art_id']; ?></td>
            <td><img src="<?php echo '../caneclla/uploadtest' .$row_Articoli['art_immagine']; ?>" align="middle" /> </td>
            <td><?php echo $row_Articoli['art_titolo']; ?></td>
            <td><?php echo $row_Articoli['art_sottotitolo']; ?></td>
            <td><?php echo $row_Articoli['art_articolo']; ?></td>
            <td><?php echo $row_Articoli['art_data']; ?></td>
            <td><?php echo $row_Articoli['art_autore']; ?></td>
            <td><?php echo $row_Articoli['art_email']; ?></td>
            <td><?php echo $row_Articoli['art_categoria_articolo']; ?></td>
            </tr>
            <?php } while ($row_Articoli mysql_fetch_assoc($Articoli)); ?>
        
      </table>
    </form>
    <tr><td valign="top">&nbsp;</td>
    </tr>
    </body>
    </html>
    <?php
    mysql_free_result
    ($Articoli);
    ?>
    Credo che l'errore sia nella riga:
    <img src="<?php echo '../caneclla/uploadtest' .$row_Articoli['art_immagine']; ?>" align="middle" />

    Non riesco proprio a capire....ho provato anche a sostituire gli apici con le virgolette....ma nulla (la directory "caneclla/uploadtest" è nella root ed i file sono correttamente memorizzati)

  6. #6
    Se la cartella uploadtest è la cartella che contiene le immagini e il campo "art_immagine" contiene solo il nome dell'immagine e la sua estensione, allora ti manca una slash.

    Codice PHP:
    <img src="<?php echo '../caneclla/uploadtest/' .$row_Articoli['art_immagine']; ?>" align="middle" />

    Davide Arduini
    http://www.davidearduini.it
    Ultima modifica di davide.arduini; 28-01-2016 a 13:28

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    21
    Grazie per il consiglio!

    Si, è cosi' ma non va lo stesso: mi restituisce nella cella dell'immagine l'icona "spezzata" dell'immagine. Anche togliendo lo spazio prima del simbolo $.
    Suggerimenti?

  8. #8
    Il campo db contiene sia il nome dell'immagine che l'estensione?

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    21
    Certamente!

  10. #10
    Se scrivi sul browser l'indirizzo assoluto dell'immagine

    www.miosito.it/caneclla/uploadtest/nomeimmagine.estensione

    la visualizzi l'immagine?

    Se non la visualizzi o rivedi i nomi delle cartelle se li hai scritti correttamente nel codice o controlla che la variabile php scriva il nome dell'immagine.

Tag per questa discussione

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.