Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Upload immagini

  1. #1

    Upload immagini

    Gia che ci sono chiedo aiuto anche per questa piccola cosa.
    Ho cercato un po' sul forum, ed ho visto questo script per fare l'upload di immagini in una cartella ed inserire un link all'interno del database ..

    Ho provato ad applicarlo al mio modulo per la registrazione : il file finisce effettivamente nel database, pero' quando provo a richiamarlo ( per mostrarlo ) mi visualizza la classica x rossa.

    Codice PHP:
    <?php
    session_start
    ();
    include (
    "config.php");

    // Variabili per l'upload dell'immagine. Seleziono la cartella dove devono finire, imposto una larghezza ed un altezza massima.
    // Cambio anche l'url relativo all'immagine, aggiungendo timestamp

    $directory "../upload/"// la directory dove finiscono le immagini
    $type=$_FILES['immagine']['type'];
    $max_width 300// larghezza massima
    $max_height 300// altezza massima
    $timestamp time(); // prendo il timestamp per dare un nome casuale al file dell'immagine, altrimenti immagini con lo stesso nome si sovrascriverebbero nella cartella
    $dimensioni getimagesize($_FILES['immagine']['tmp_name']);    
    $larghezza $dimensioni[0];  
    $altezza $dimensioni[1];  


     if (
    $altezza $max_width || $larghezza $max_height) {        
     
    header ("location: ../inserisci_hotel.php?er=4");    
     exit;
    }    

     
    // Se l'immagine e' inserita e le estensioni dei file immagine non coincidono con quelli dichiarati, esco e stampo l'errore
     
     
    if ( $_FILES['immagine']['name'] != "" ) { 
     if (
    $type != "image/gif" && $type != "image/pjpeg" && $type != "image/jpeg") {
     
    header ("location: ../inserisci_hotel.php?er=3");
     exit;
     }
     }

    // Query inserimento

    $urlimmagine $directorytime() . '_' $_FILES['immagine']['name'];
    copy($_FILES['immagine']['tmp_name'], $urlimmagine);

    $query "INSERT INTO alloggi (urlimmagine) VALUES ('$urlimmagine')";
    $result mysql_query($query$db_conn) or die ("Errore connessione:" mysql_error());
    mysql_close();
    header ("location: ../inserimento_avvenuto.php");
    L'immagine quindi finisce correttamente nella mia cartella upload e viene stampato anche l'indirizzo nel database, ma quando cerco di richiamarla, viene fuori la x rossa. Se clicco con il tasto destro per vedere il percorso che tenta di tirar fuori, viene fuori questo :

    codice:
    http://localhost/upload/1213967441_DIO.gif
    Dove sta l'errore ??

  2. #2
    Per prima cosa ti suggerisco di reimplementare l'upload come suggerito sul manuale ufficiale (es. con la gestione degli errori ed utilizzando move_uploaded_file()):

    http://www.php.net/manual/en/features.file-upload.php

    Poi abilita la visualizzazione degli errori e verifica che l'url dell'immagine punti correttamente alla locazione dove viene salvata l'immagine.

  3. #3
    Dunque, ho cambiato ed abbandonato l'idea di inserire le immagini in una cartella e poi lasciare un link nel database.

    Alla mia tabella alloggi ho aggiunto questi 3 campi :

    codice:
    nome_file varchar(255)
    tipo_file varchar(128)
    dati_file blob
    Per inserire un file uso il classico form che ometto.

    Quindi elaboro la richiesta con add_structure.php ( ometto pure qui i dati che non mi interessano e che funzionano, lasciando solo quelli per l'immagine )

    Codice PHP:
    <?php
    session_start
    ();
    include (
    "config.php");

    // Variabili per l'upload dell'immagine. 

    // recupero alcune informazioni sul file inviato   
        
    $nome_file_temporaneo $_FILES['file_inviato']['tmp_name'];   
        
    $nome_file_vero $_FILES['file_inviato']['name'];   
        
    $tipo_file $_FILES['file_inviato']['type'];

    // leggo il contenuto del file   
        
    $dati_file file_get_contents($nome_file_temporaneo);   
      
        
    // preparo il contenuto del file per la query   
        
    $dati_file addslashes($dati_file); 

    $query "INSERT INTO alloggi (nome_file, dati_file, tipo_file) VALUES ('$nome_file_vero', '$dati_file', '$tipo_file')";
    $result mysql_query($query$db_conn) or die ("Errore connessione:" mysql_error());
    mysql_close();
    header ("location: ../inserimento_avvenuto.php");
    Sino a qui tutto bene, nel mio database vengono aggiunte tutte le informazioni.

    I problemi sorgono adesso : per visualizzare i file uso show_hotelapp.php

    Codice PHP:
    <?php
    session_start
    ();
    include (
    "config.php"); 

    $utenti "SELECT * FROM alloggi WHERE stato = 'non pubblicato' ";
    $result mysql_query($utenti) or die(mysql_error()) ;

    $rows mysql_num_rows($result);


    if (
    $rows 0) {

    echo <<<TAB
    <table id="vediapp">
    <tr>
    <td class="intestazione">Nome</td>
    <td class="intestazione">Immagine</td>
    <td class="intestazione">tipo</td>

    while(
    $row = mysql_fetch_assoc($result)) {
    $id$row['id_hotel']; // id mi serve in seguito per modificare o cancellare gli alloggi

    <td>
    $row[nome_file]</td>
    <td>
    $row[dati_file]</td>
    <td>
    $row[tipo_file]</td>
    </table>
    ?>
    Ovviamente l'immagine ( dati_file ) non viene restituita come immagine ma sotto forma di codice ( penso binario ).

    Come posso fare per mostrare direttamente l'immagine ?? Proprio non so come fare ..

  4. #4

  5. #5
    allora le guide le ho lette entrambe, solo che sono al solito punto.
    Posto il codice in versione ridotta ( dopo aver apportato qualche modifica ) , il file e' correttamente caricato nel database in 2 campi ( uno blob ed uno che contiene l'estensione ).

    Con questo cerco di richiamarlo.

    Codice PHP:

    include ("processi_php/config.php");

    // Trovo le strutture con uno stato non pubblicato

    $utenti "SELECT * FROM alloggi WHERE stato = 'non pubblicato' ";
    $result mysql_query($utenti) or die(mysql_error()) ;

    $rows mysql_num_rows($result);


    if (
    $rows 0) {
    echo <<<AVVIS
    [img]images_cont/attenzione.jpg[/img]
    <h3>Ci sono 
    $rows da record approvare per la pubblicazione !!!</h3>
    AVVIS;

    echo <<<TAB
    <table id="vediapp">
    <tr>
    <td class="intestazione">Nome</td>
    <td class="intestazione">Zona</td>
    <td class="intestazione">Indirizzo</td>
    <td class="intestazione">Numero</td>
    <td class="intestazione">Tipologia</td>
    <td class="intestazione">Prezzo minimo</td>
    <td class="intestazione">Prezzo massimo</td>
    <td class="intestazione">Immagine</td>
    <td class="intestazione">Mese Apertura</td>
    <td class="intestazione">Mese Chiusura</td>
    <td class="intestazione">Approva</td>
    <td class="intestazione">Rifiuta</td>
    </tr>
    TAB;
    while(
    $row mysql_fetch_assoc($result)) {
    $id$row['id_hotel'];
    echo <<<CIAO
    <tr>
    <td>
    $row[nome]</td>
    <td>
    $row[zona]</td>
    <td>
    $row[indirizzo]</td>
    <td>
    $row[numero]</td>
    <td>
    $row[tipologia]</td>
    <td>
    $row[prezzominimo]</td>
    <td>
    $row[prezzomassimo]</td>
    [B]<td>[img]downloadfile1.php?id=
    $row[id_hotel][/img][/B] 
    <td>
    $row[meseapertura]</td>
    <td>
    $row[mesechiusura]</td>
    <form method = 'post' action='processi_php/app_hotel.php'>
    <td>
    <input type='hidden' name='id_hotel' value='
    $id' />
    <input type='submit' name='approva' value='Approva' />
    </td>
    </form>
    </form>
    <form method = 'post' action='processi_php/denied_hotel.php'>
    <td>
    <input type='hidden' name='id_hotel' value='
    $id' />
    <input type='submit' name='elimina' value='Nega' />
    </td>
    </form>
    </tr>
    CIAO;
    }
    }
    else {
    echo 
    "<h3>Non ci sono strutture in attesa di approvazione</h3>";
    }
    }
    echo 
    $msg ?> 
    Mentre il file a cui punta il td " in neretto " e' quello per cercare di far apparire l'immagine :

    Codice PHP:

    <?php 

    include("config.php");

    $blobId $_GET['id_hotel']; 

    $dbQuery "SELECT id_hotel,img,file FROM alloggi WHERE id_hotel=$blobId"

    $result mysql_query($dbQuery) or die("File non presenti nel Database");  

    if(
    mysql_num_rows($result) == 1)  
    {  
    $fileType = @mysql_result($result0"file");  
    $fileContent = @mysql_result($result0"img"); 

    header("Content-type: $fileType");   
    echo 
    $fileContent
    } else 
    { echo 
    "non esiste Record."; } 
    ?> 



    Adesso dovrei aver fatto tutto bene, solo che continuo ad avere la x rossa !!!

  6. #6
    Quello che mi chiedo e' : non potrei unire in qualche modo i 2 files che ho postato ?

    Magari con un collegamento in meno sarebbe piu facile .. voglio solo far apparire l'immagine cosi come e' stata inserita nel db ... e' da ieri notte che ci provo ma proprio non ci riesco !!

  7. #7

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.