Gestione Immagini

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
Ciao a tutti, soprattutto a Borgo che mi ha pazientemente edotto in quest'ultimo periodo.
Dopo un'altra domenica passata a smanettare sono arrivato a realizzare un form completo per l'immissione di dati alfanumerici nella mia tabella "immobili", aggiungendo, secondo me, un paio di controlli simpatici che riporto.
PHP:
$codice = $_POST['codice']; if (empty($_POST['codice'])) {$vuoto[] = "Codice ";} //verifico se dimentico di riempire un campo obbligatorio e nel caso implemento un array
........
if ((!empty($_POST['id'])) && empty($codice) || empty($categoria) || empty($tipologia) || empty($superficie) || empty($locali) || empty($bagni) || empty($condizioni) || empty($stato) || empty($descrizione))//verifico se almeno uno dei campi obbligatori è vuoto
{	$elenco_vuoti="";
	foreach ($vuoto as $item) { //se sì trasformo l'array in stringa
		$elenco_vuoti=$elenco_vuoti." ".$item;
			}
//lancio un alert Javascript con indicazione dei campi lasciati erroneamente vuoti
echo "<script language=\"javascript\" type=\"text/javascript\"> alert('Verifica inserimento $elenco_vuoti ')</script>";
echo "<script> history.back(-1) </script>";// appena chiusa la finestra popup torno indietro per non perdere quanto già compilato

Adesso avrei bisogno che mi aiutate a realizzare una pagina form alla quale potrei accedere dopo avere con successo inserito un nuovo immobile, che mantenga il riferimento dell'ultimo id (così posso incrociare le tabelle) per l'inserimento di immagini.

Ho visto che circola un esempio per la memorizzazione di immagini in una cartella che ne realizza automaticamente anche la miniatura, ed a questo proposito vi chiedo se questa trasformazione sia possibile realizzarla solamente in fase di visualizzazione quando l'utente cerca di vedere la scheda dettagliata dell'appartamento.

Luca
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Non penso che sia una buona idea generare ogni volta la miniatura, anche se si potrebbe fare. Sprecheresti preziose risorse e potresti rallentare il caricamento della pagina. Comunque se vuoi provarci non devi far altro che crearti una pagina miniatura.php che prenda come parametro GET l'ID dell'appartamento (o altro dato univoco), generi la miniatura e invii gli header corretti. Se hai bisogno di una mano fammi sapere!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per far ricordare una variabile da una pag all'altra devi usare o i cookie o le sessioni (a me sono più simpatiche le seconde).
comunque se vuoi inserire le foto appena ai inserito la parte descrittiva ti ricavi l'ultimo id (che è quello dell'ultimo immobile che hai inserito) lo passi in una variabile di sessione e ti porti alla pag del form per inserimento immagini.
poi se vuoi caricare le immagini e fare le relative miniature in automatico guarda tra gli articoli di php, quello di claudio è quello che uso anche io. tieni presente che però se sei su aruba windows non funzia perche le gd non sono attive.

poi
...se questa trasformazione sia possibile realizzarla solamente in fase di visualizzazione...
si potresti realizzarla anche in fase di visualizzazione, devi tener conto però che se anche riduci le dimensioni modificando width e hegth carichi sempre un'immagine grande con conseguente rallentamento. per velocizzare è meglio avere le due immagini es.:

tumb_pinco.jpg 100x 80 px
e
pinco.jpg 600x480 px
è evidente che la prima la carichi molto più velocemente, se l'utente vuole cliccandoci sopra l'ingrandisce

p.s.
ora ti cerco l'articolo

ps.ps. incrociato con alex
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
In merito al link ho grossi problemi a farlo funzionare e mi farebbe piacere ricevere da voi alcune delucidazioni.
Prima di tutto ho tolto il link al file funzioni perché non sapendo se potrò utilizzare le GL i thumb li farò io prima di inserire (poi si vedrà).

Mi sono accorto che anche includendo il file config.php, la variabile $path_img non riesce a leggerla, così l'ho riportata manualmente anche nel mio file inserimento.php dove si trova il form.
Ho anche dovuto togliere la verifica del formato, a me non funziona e mi butta subito fuori con il messaggio "impossibile...."

A questo punto so per certo che riesco a mettere le foto nella cartella appositamente creata(tra l'altro MOOLTO lentamente), però nella tabella non ci mette nulla.

Vi posto il codice utilizzato chiedendovi la grossa cortesia di darci un'occhiata e, se possibile, di spiegarmi in modo proprio basilare come avviene l'upload di immagini PHP MYSQL perché non mi è ben chiaro (come si è già capito vero?:incazz:)
PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
Immobile:<br />
<input name="id_immobile" type="text" size="20"><br />
Descrizione:<br />
<input name="descrizione" type="text" size="20"><br />
Immagine:<br />
<input type="file" name="imagefile" size="40"><br />
<input type="submit" name="Submit" value="Submit">
<br /><br />

<?php
if(isset($_POST['Submit'])){
  // faccio un po' di inclusioni...
  @include 'config.php';
  $path_img = 'foto/';// lo rimetto perché anche se inserito in config.php non lo legge

  // Creo una array con i formati accettati
  $tipi_consentiti = array("image/gif","image/jpeg","image/png");

  // verifico che il formato del file sia tra quelli accettati
  if ('1'=='1') //(@in_array($_FILES['imagefile']['type'], $tipi_consentiti))
  { 
    // copio il file nella cartella delle immagini
    @copy ($_FILES['imagefile']['tmp_name'], $path_img . $_FILES['imagefile']['name']);
	$file_temp = ($_FILES['imagefile']['tmp_name']); //dovrebbe essere il file temporaneo dove il server mete la foto uploadata


    // recupero i dati dal form
    $id_immobile = @addslashes($_POST['id_immobile']);
    $descrizione = @addslashes($_POST['descrizione']);
    $nome = @addslashes($_FILES['imagefile']['name']);
    $path = $path_img . stripslashes($nome);
	$size = @addslashes($_FILES['imagefile']['size']);
    $type = @addslashes($_FILES['imagefile']['type']);

    // creo la miniatura
    //@makeThumb($path_img,$path,$nome,$tipo);
  
    // aggiorno il database
    $query = "INSERT INTO immagini (id, id_immobile, descrizione, nome, size, type, immagine) VALUES(NULL,'$id_immobile','$descrizione','$nome', '$type', '$file_temp')";
    $res = @mysql_query($query) or die (mysql_error());
    @mysql_close($conn);

    // Stampo a video un po' di informazioni
    echo "Nome: ".$_FILES['imagefile']['name']."<br />"; 
    echo "Dimensione: ".$_FILES['imagefile']['size']."<br />"; 
    echo "Tipo: ".$_FILES['imagefile']['type']."<br />"; 
    echo "Copia eseguita con successo."; 
  }else{
    // stampo un messaggio di errore nel caso in cui il file sia di un formato non consentito
    echo "Impossibile eseguire l'upload.";
  }
} 
?>
</form>
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
So che sono uno strazio, ma voglio venirne a capo:hammer:
Ho scoperto che proprio gli include in locale (al momento sto provando solo così) non funzionano, cosa molto strana.
Il codice sotto riportato, anche se privo di molte sottigliezze mi funziona, ovviamente con i dati di accesso ben visibili. Sapete perché?
PHP:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
Immobile:<br />
<input name="id_immobile" type="text" size="20"><br />
Descrizione:<br />
<input name="descrizione" type="text" size="20"><br />
Immagine:<br />
<input type="file" name="file" size="40"><br />
<input type="submit" name="Submit" value="Submit">
<br /><br />

<?php
if(isset($_POST['Submit'])){
  // faccio un po' di inclusioni...
//include 'Connessione.php';

$db_host="127.0.0.1";
$db_user="root";
$db_password="";
$db_name="miosito";

$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");

  function sicurezza($ammessi, $mime){
  for ($i=0; $i<count($ammessi); $i++){
    if(stristr($mime, $ammessi[$i])) return true;
  }
  return false;
}


$ammessi[0] = 'image';
$ammessi[1] = 'pdf';


if ($_FILES['file']['size'] <= 100000 && sicurezza($ammessi, $_FILES['file']['type']))
{ ## se il file è al max 10 kbyte faccio l'upload
  # MEMORIZZIAMO NELLA VARIABILE $file_content IL CONTENUTO DEL FILE
  $file_content = addslashes(fread(fopen($_FILES['file']['tmp_name'], 'rb'), $_FILES['file']['size']));

  # ESEGUIAMO LA QUERY DI INSERIMENTO
  $id_immobile = $_POST['id_immobile'];
  $descrizione = $_POST['descrizione'];
  $nome = $_FILES['file']['name'];
  $size = $_FILES['file']['size'];
  $type = $_FILES['file']['type'];

  $query = "INSERT INTO immagini
	    (id, id_immobile, descrizione, nome, size, type, immagine)
	    values
	    (NULL, '$id_immobile', '$descrizione', '{$_FILES['file']['name']}', '{$_FILES['file']['size']}', '{$_FILES['file']['type']}', '{$file_content}')";
  $risultato = mysql_query($query) or die (mysql_error());

  # ESITO POSITIVO
  print "<h2>Il file ".basename($nome)." è stato inserito correttamente nel Database.</h2><br />$nome $size $type";
}
else {
  print "<h2>Il file ".basename($nome)." è superiore ai 10 kbyte oppure non è del tipo corretto!!<br />Inserimento non effettuato</h2>";
	}
}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
cosa intendi con
...proprio gli include in locale....
la funzione include funzia sia in locale che in remoto, guarda che non sia un problema di percorso.
inoltre mentre fai le prove togli tutti que silent altrimenti non capisci dove ti da l'errore.
es.
@include 'config.php';
se non trova il file non te lo dice, mentre se scrivi così
include 'config.php';
in caso di errore php ti avvisa, eventualmente li rimetti quandi hai finito e sei sicuro di non avere errori
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
Domanda, il mio file di connessione in locale si trova nella cartella di Easyphp www\miosito\ però anche il file da cui viene lanciato l'include, di conseguenza non ho specificato alcun percorso, ho fatto male???
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se i due file sono nella stessa cartella non devi mettere il percorso, se invece il file da includere si trova in una cartella diversa si
es se il file che lancia il comando e il file da includere sono entrambi nella
miosito/
basta
include 'da_includere.php'
se invece 'da_includere.php' è in un altra es
miosito/includere/
devi scrivere
include 'includere/da_includere.php'
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
Allora avevo capito bene, e così non mi funziona ed è un grosso problema se questo continuasse anche sul server Aruba, sarebbe vano ogni tentativo di creare procedure di login sicure.

Non è che ti/vi viene in mente qualche soluzione?
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
Ok ho scoperto che non posso utilizzare include con path abbreviato, devo sempre mettere tutto il percorso, però so anche che è possibile abilitare il path breve agendo sul file di configurazione.

Mi sapete dire dove si trova e qual'è il parametro da modificare?

Luca
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
intendo dire che se i due files si trovano nella stessa cartella non devo scrivere
include 'C:\programmi\easyphp\ww\connect.php' ma semplicemente
include 'connect.php'

Come anche suggerisce Borgo.
So che si tratta di un settaggio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa ma questa non la capisco.
scusa fai una semplice prova
fai un file php
PHP:
<?php
include_once 'prova,php';
?>
poi nel file prova,php scrivi
PHP:
<?php
echo "sono stato incluso";
?>
e poi chiama il file
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Comunque che io sappia non c'è nessun settaggio per abilitare l'uso del "path abbreviato" come dici tu (che si chiama path relativa). Al massimo c'è la direttiva include_path che definisce tutte le path in cui PHP deve cercare i file da includere, ma è un'altra cosa.
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
Scusate sono un povero cog...ne:incazz2: nel file di connessione avevo aperto male la sessione php.

Già che ci sono volevo fare il punto e chiedere consiglio.

Mi trovo un db con due tabelle, una immobili e l'altra immagini, che posso incrociare attraverso il campo id_immobile.
Volendo mantenere preselezionato l'id_immobile passando dal form inserimento caratteristiche immobile a quello inserimento foto mi pare di aver capito che devo usare le classi (perché se i cookies sono disabilitati è un problema), mi fate un esempio magari?
Una variabile di tipo globale non andrebbe bene vero?

Inoltre, siccome non so cosa sono queste GL (presuppongo librerie di funzioni) e non sono sicuro che le avrò a disposizione, non posso realizzare una funzione per crearmele in fase di inserimento foto, in modo alternativo?

Immaginando di avere correttamente popolato le mie tabelle db, ho già creato una pagina di selezione e visualizzazione degli immobili riportando solo alcuni dati principali in una tabella.
Da quì mi servirebbe associare all'immagine principale il link alla pagina di visualizzazione dettagliata dell'immobile, idee?

Grazie per il supporto e scusate per il mio bassissimo livello:(
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.1.9
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

Tornando Al mio sito, siccome adesso che ho, almeno in locale, risolto quasi tutti i problemi che avevo legati alla popolazione di tabelle, vorrei sapere se il mio server Aruba ha caricate le librerie GD necessarie a far girare lo script per la realizzazione automatica delle miniature immagini.
Quello sopra è un estratto della phpinfo() del server, ci capite?

Luca
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
da quanto hai postato sembrerebbe che le GD siano attive.
pero questo mi fa pensare che tu sia su aruba linux o aruba linux+windows e non su aruba windows.
se si su aruba linux fai attenzione alle maiuscole/minuscole anche nei nomi dei file.

concludendo se le gd sono attive lo script dovrebbe funzionarti
 

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
Ottimo, adesso me lo studio, anche se mi sembrava di aver visto che, così come realizzato non salvava le thumbs nella tabella, ma in una cartella con path pre definito, il che significa che devo ancora smanettarci.
Di quell'esempio ho già apportato modifiche per aprire il file uploadato e salvarlo in una variabile da usare nella insert. Questo sotto riportato è il codice in questione, sapresti tradurmelo alla lettera, io l'ho copiato e funziona ma l'ho capito in parte, alcuni usano una sintassi un poco diversa.
PHP:
$file_temp = addslashes(fread(fopen($_FILES['imagefile']['tmp_name'], 'rb'), $_FILES['imagefile']['size']));

Siccome ho deciso di usare le tabelle e non la cartella immagini, cosa ne pensi se ad ogni riga mi salvo sia l'immagine originale che la sua thumb, così da potermi caricare l'una o l'altra all'occorrenza?

Un abbraccio
Luca
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
fopen apre il file e r in sola lettura (forse mi sbaglio ma il b non esiste)
http://it.php.net/manual/en/function.fopen.php
fread lo legge per quanti byte specificati
http://it.php.net/manual/en/function.fread.php

addslashes aggiunge uno slashes dove serve es. pinco's diventa pinco\'s (stripslashel le toglie)
ti consiglio di consultare il manuale ufficiale php
http://it.php.net/manual/en/index.php
se nella casella di ricerca inserisci il nome della funzione ti porta alla sua descrizione
 
Discussioni simili
Autore Titolo Forum Risposte Data
booklisa Compressione immagini e gestione media CMS (Content Management System) 1
A gestione immagini server-database PHP 2
G gestione immagini PHP 4
P Piccolo problema con gestione immagini. PHP 9
P Problema gestione immagini in PHP PHP 12
R Cerco programmatore per piccolo software di gestione delle immagini Offerte e Richieste di Lavoro e/o Collaborazione 1
A Da gestione immagini ASP a TinyMCE tramite la "fileBrowserCallBack" Javascript Classic ASP 1
A gestione immagini PHP 2
D gestione immagini in primo piano Javascript 3
A Gestione array multidimensionale PHP 6
andreas88 Gestione Profilo OnlyFans Leggi, Normative e Fisco 0
A Creazione cookie e gestione accessi PHP 0
B form gestione input PHP 2
sbolde91 Consiglio gestione Hosting Hosting 2
E Gestione profilo utente tramite Form PHP 3
S cerco esperto gestione ecommerce Offerte e Richieste di Lavoro e/o Collaborazione 0
P Curiosità su grandi aziende e la gestione delle grafiche. Discussioni Varie 1
M Consiglio sulla gestione di Gerarchie Database 0
A attributo "min" per input gestione date PHP 8
L Gestione DB ASP.NET 2
L Consiglio SEO gestione dominio + free hosting SEO e Posizionamento 6
avalon95 [WordPress] Gestione database annunci WordPress 0
G [PHP] gestione mouse PHP 2
B Gestione Prenotazioni con Mysql Database 21
D CREAZIONE E GESTIONE SITO E-COMMERCE Offerte e Richieste di Lavoro e/o Collaborazione 2
P (Cerco) Collaboratori per gestione social media Offerte e Richieste di Lavoro e/o Collaborazione 5
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
brasoft2019 [PHP] Sistema di gestione presenze PHP 29
W Preventivo gestione ecommerce Discussioni Varie 1
E Cerco partner / socio per gestione sito di annunci incontri Offerte e Richieste di Lavoro e/o Collaborazione 0
K e-commerce per distribuzione e dettaglio con gestione magazzino E-Commerce 0
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
Jonn [WordPress] Gestione categorie e tags per sito eventi WordPress 2
felino Gestione dispositivi e Altri dispositivi Windows e Software 4
D Software per gestione account facebook? Social Media Marketing 1
D Cero Software Facebook gestione account Vendere e Acquistare pubblicita' online 0
M Offro servizio Incremento Follower e Gestione Profili Istagram Offerte e Richieste di Lavoro e/o Collaborazione 0
S elementi statistici - Matrice e Gestione Array PHP o Javascript Javascript 0
J [offro] hosting / installazione certificati ssl / gestione server Offerte e Richieste di Lavoro e/o Collaborazione 0
F [PHP] gestione meteo manuale per un gioco di ruolo PHP 1
bianca_dimulescu Gestione tabella e MySQL PHP 4
T Servizio gestione pagina Instagram Offerte e Richieste di Lavoro e/o Collaborazione 0
G Gestione e/o vendita hosting come libero professionista Leggi, Normative e Fisco 4
MatMac System [PHP] Gestione dinamica select-option PHP 3
xone [Vendo] Script gestionale php-mysql gestione pratiche Altri Annunci 0
S [PHP] Gestione coupon PHP 3
lxella [PHP] Aree riservate e gestione utenti PHP 1
D Gestione punteggi php PHP 1
B Cercasi socio per gestione sito web Offerte e Richieste di Lavoro e/o Collaborazione 0
G gestione pagina facebook Social Media Marketing 0

Discussioni simili